## builtin subrules a ab y at (matching) b ab n at (not matching) a aa y between same characters a ab y between not-same characters 2+3 ab2 : ab2 @ 4> capturing builtin <.ident> 2+3 ab2 y non-capturing builtin <.ident> def abc\ndef\n-==\nghi y word boundary \W\w abc abc\ndef\n-==\nghi y word boundary \w\W - n no boundary at all abc abc\ndef\n-==\nghi y BOS word boundary ^^ -ab n BOS is not boundary ghi abc\ndef\n-==\nghi y EOS word boundary $$ ab- n EOS is not boundary a abc\ndef\n-==\nghi n \w\w word boundary \- abc\ndef\n-==\nghi n \W\W word boundary def abc\ndef\n-==\nghi n nonword boundary \W\w abc abc\ndef\n-==\nghi n nonword boundary \w\W abc abc\ndef\n-==\nghi n BOS nonword boundary ghi abc\ndef\n-==\nghi n EOS nonword boundary a abc\ndef\n-==\nghi y \w\w nonword boundary \- abc\ndef\n-==\nghi y \W\W nonword boundary \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : A @ 45> <+upper> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+upper> <+upper>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+upper>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : a @ 55> <+lower> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+lower> <+lower>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+lower>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : _ @ 31> <+alpha> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+alpha> <+alpha>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+alpha>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : 0 @ 35> <+digit> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+digit> <+digit>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+digit>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : 0 @ 35> <+xdigit> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+xdigit> <+xdigit>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+xdigit>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : \t @ 0> <+space> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+space> <+space>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+space>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : \t @ 0> <+blank> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+blank> <+blank>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+blank>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : \t @ 0> <+cntrl> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+cntrl> <+cntrl>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+cntrl>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : ! @ 4> <+punct> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+punct> # todo :any <+punct>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij ?@[\\]^'_{|} @ 4> <+punct>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij : _ @ 31> <+alnum> \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+alnum> <+alnum>+ \t\n\r !"#$%&'()*+,-./:;<=>?@[\]^`_{|}0123456789ABCDEFGHIJabcdefghij <+alnum>+ <+alnum+[_]> ident_1 y union of character classes <+[ab]+[\-]>+ aaa-bbb y enumerated character classes <+ [ a b ]+[\-]>+ aaa-bbb y whitespace is ignored within square brackets and after the initial + <+[ab]+[\-]>+ -ab- y enumerated character classes variant <+[ab]+[\-]>+ ---- y enumerated character classes variant <+[ab]+[\-]>+ - y enumerated character classes variant <-[ab]+[cd]>+ ccdd y enumerated character classes variant ^<-[ab]+[cd]>+$ caad n enumerated character classes variant <- [ a b ]+[cd]>+ ccdd y whitespace is ignored within square brackets and after the initial - ^<-upper>dent ident_1 y inverted character class ^<-upper>dent Ident_1 n inverted character class <+alpha-[Jj]>+ abc y character class with no j <+ alpha - [ Jj ]> abc y character class with no j with ws ^<+alpha-[Jj]>+$ aJc n character class with no j fail ^a<|w> a/ y <|w> matches ^a<|w> ab n <|w> without match ## vim: noexpandtab tabstop=4 shiftwidth=4