Home

There is a newer version of this page. You can find it here.

BNFA is C++ regular expression matcher based on non-deterministic finite automata (NFA).

Rules

BNFA uses overloaded operators for writing regular expressions. This syntax has been inspired by Boost.Spirit (www.boost.org).

ElementRegular expressionBNFA
Optionala?-a
One-or-morea++a
Zero-or-morea**a
Exactly n timesa{n}a(n)
Between m and n timesa{m,n}a(m,n)
Concatenationaba >> b
Alternationa | ba | b
Separated lista(ba)*a % b
Characteratext("a")
Any character.any()
Character sequenceabctext("abc")
Character group[abc]group("abc")
Character range[a-z]range('a', 'z')
Positive lookahead(?=a)&a
Negative lookahead(?!a)!a

Examples

  • Match alphabetic letters with [A-Za-z]:

rule alphabetic = range('A', 'Z') | range('a', 'z');

rule digit = range('0', '9');
rule floating = -( group("+-") ) >> ( ( *digit >> text(".") >> +digit ) | +digit );


MongoDB Logo MongoDB