|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; this file contains a script of tests to run through regress.exe
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; comments start with a semicolon and proceed to the end of the line
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; changes to regular expression compile flags start with a "-" as the first
|
|
Packit |
6c4009 |
; non-whitespace character and consist of a list of the printable names
|
|
Packit |
6c4009 |
; of the flags, for example "match_default"
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; Other lines contain a test to perform using the current flag status
|
|
Packit |
6c4009 |
; the first token contains the expression to compile, the second the string
|
|
Packit |
6c4009 |
; to match it against. If the second string is "!" then the expression should
|
|
Packit |
6c4009 |
; not compile, that is the first string is an invalid regular expression.
|
|
Packit |
6c4009 |
; This is then followed by a list of integers that specify what should match,
|
|
Packit |
6c4009 |
; each pair represents the starting and ending positions of a subexpression
|
|
Packit |
6c4009 |
; starting with the zeroth subexpression (the whole match).
|
|
Packit |
6c4009 |
; A value of -1 indicates that the subexpression should not take part in the
|
|
Packit |
6c4009 |
; match at all, if the first value is -1 then no part of the expression should
|
|
Packit |
6c4009 |
; match the string.
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; Tests taken from BOOST testsuite and adapted to glibc regex.
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; Boost Software License - Version 1.0 - August 17th, 2003
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; Permission is hereby granted, free of charge, to any person or organization
|
|
Packit |
6c4009 |
; obtaining a copy of the software and accompanying documentation covered by
|
|
Packit |
6c4009 |
; this license (the "Software") to use, reproduce, display, distribute,
|
|
Packit |
6c4009 |
; execute, and transmit the Software, and to prepare derivative works of the
|
|
Packit |
6c4009 |
; Software, and to permit third-parties to whom the Software is furnished to
|
|
Packit |
6c4009 |
; do so, all subject to the following:
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; The copyright notices in the Software and this entire statement, including
|
|
Packit |
6c4009 |
; the above license grant, this restriction and the following disclaimer,
|
|
Packit |
6c4009 |
; must be included in all copies of the Software, in whole or in part, and
|
|
Packit |
6c4009 |
; all derivative works of the Software, unless such copies or derivative
|
|
Packit |
6c4009 |
; works are solely in the form of machine-executable object code generated by
|
|
Packit |
6c4009 |
; a source language processor.
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
Packit |
6c4009 |
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
Packit |
6c4009 |
; FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
|
Packit |
6c4009 |
; SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
|
Packit |
6c4009 |
; FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
|
Packit |
6c4009 |
; ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
Packit |
6c4009 |
; DEALINGS IN THE SOFTWARE.
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; try some really simple literals:
|
|
Packit |
6c4009 |
a a 0 1
|
|
Packit |
6c4009 |
Z Z 0 1
|
|
Packit |
6c4009 |
Z aaa -1 -1
|
|
Packit |
6c4009 |
Z xxxxZZxxx 4 5
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; and some simple brackets:
|
|
Packit |
6c4009 |
(a) zzzaazz 3 4 3 4
|
|
Packit |
6c4009 |
() zzz 0 0 0 0
|
|
Packit |
6c4009 |
() "" 0 0 0 0
|
|
Packit |
6c4009 |
( !
|
|
Packit |
6c4009 |
) ) 0 1
|
|
Packit |
6c4009 |
(aa !
|
|
Packit |
6c4009 |
aa) baa)b 1 4
|
|
Packit |
6c4009 |
a b -1 -1
|
|
Packit |
6c4009 |
\(\) () 0 2
|
|
Packit |
6c4009 |
\(a\) (a) 0 3
|
|
Packit |
6c4009 |
\() () 0 2
|
|
Packit |
6c4009 |
(\) !
|
|
Packit |
6c4009 |
p(a)rameter ABCparameterXYZ 3 12 4 5
|
|
Packit |
6c4009 |
[pq](a)rameter ABCparameterXYZ 3 12 4 5
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now try escaped brackets:
|
|
Packit |
6c4009 |
- match_default bk_parens REG_BASIC
|
|
Packit |
6c4009 |
\(a\) zzzaazz 3 4 3 4
|
|
Packit |
6c4009 |
\(\) zzz 0 0 0 0
|
|
Packit |
6c4009 |
\(\) "" 0 0 0 0
|
|
Packit |
6c4009 |
\( !
|
|
Packit |
6c4009 |
\) !
|
|
Packit |
6c4009 |
\(aa !
|
|
Packit |
6c4009 |
aa\) !
|
|
Packit |
6c4009 |
() () 0 2
|
|
Packit |
6c4009 |
(a) (a) 0 3
|
|
Packit |
6c4009 |
(\) !
|
|
Packit |
6c4009 |
\() !
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now move on to "." wildcards
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND
|
|
Packit |
6c4009 |
. a 0 1
|
|
Packit |
6c4009 |
. \n 0 1
|
|
Packit |
6c4009 |
. \r 0 1
|
|
Packit |
6c4009 |
. \0 0 1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; now move on to the repetion ops,
|
|
Packit |
6c4009 |
; starting with operator *
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
a* b 0 0
|
|
Packit |
6c4009 |
ab* a 0 1
|
|
Packit |
6c4009 |
ab* ab 0 2
|
|
Packit |
6c4009 |
ab* sssabbbbbbsss 3 10
|
|
Packit |
6c4009 |
ab*c* a 0 1
|
|
Packit |
6c4009 |
ab*c* abbb 0 4
|
|
Packit |
6c4009 |
ab*c* accc 0 4
|
|
Packit |
6c4009 |
ab*c* abbcc 0 5
|
|
Packit |
6c4009 |
*a !
|
|
Packit |
6c4009 |
\<* !
|
|
Packit |
6c4009 |
\>* !
|
|
Packit |
6c4009 |
\n* \n\n 0 2
|
|
Packit |
6c4009 |
\** ** 0 2
|
|
Packit |
6c4009 |
\* * 0 1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now try operator +
|
|
Packit |
6c4009 |
ab+ a -1 -1
|
|
Packit |
6c4009 |
ab+ ab 0 2
|
|
Packit |
6c4009 |
ab+ sssabbbbbbsss 3 10
|
|
Packit |
6c4009 |
ab+c+ a -1 -1
|
|
Packit |
6c4009 |
ab+c+ abbb -1 -1
|
|
Packit |
6c4009 |
ab+c+ accc -1 -1
|
|
Packit |
6c4009 |
ab+c+ abbcc 0 5
|
|
Packit |
6c4009 |
+a !
|
|
Packit |
6c4009 |
\<+ !
|
|
Packit |
6c4009 |
\>+ !
|
|
Packit |
6c4009 |
\n+ \n\n 0 2
|
|
Packit |
6c4009 |
\+ + 0 1
|
|
Packit |
6c4009 |
\+ ++ 0 1
|
|
Packit |
6c4009 |
\++ ++ 0 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now try operator ?
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
a? b 0 0
|
|
Packit |
6c4009 |
ab? a 0 1
|
|
Packit |
6c4009 |
ab? ab 0 2
|
|
Packit |
6c4009 |
ab? sssabbbbbbsss 3 5
|
|
Packit |
6c4009 |
ab?c? a 0 1
|
|
Packit |
6c4009 |
ab?c? abbb 0 2
|
|
Packit |
6c4009 |
ab?c? accc 0 2
|
|
Packit |
6c4009 |
ab?c? abcc 0 3
|
|
Packit |
6c4009 |
?a !
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\>? !
|
|
Packit |
6c4009 |
\n? \n\n 0 1
|
|
Packit |
6c4009 |
\? ? 0 1
|
|
Packit |
6c4009 |
\? ?? 0 1
|
|
Packit |
6c4009 |
\?? ?? 0 1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now try operator {}
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
a{2} a -1 -1
|
|
Packit |
6c4009 |
a{2} aa 0 2
|
|
Packit |
6c4009 |
a{2} aaa 0 2
|
|
Packit |
6c4009 |
a{2,} a -1 -1
|
|
Packit |
6c4009 |
a{2,} aa 0 2
|
|
Packit |
6c4009 |
a{2,} aaaaa 0 5
|
|
Packit |
6c4009 |
a{2,4} a -1 -1
|
|
Packit |
6c4009 |
a{2,4} aa 0 2
|
|
Packit |
6c4009 |
a{2,4} aaa 0 3
|
|
Packit |
6c4009 |
a{2,4} aaaa 0 4
|
|
Packit |
6c4009 |
a{2,4} aaaaa 0 4
|
|
Packit |
6c4009 |
a{} !
|
|
Packit |
6c4009 |
a{2 !
|
|
Packit |
6c4009 |
a} a} 0 2
|
|
Packit |
6c4009 |
\{\} {} 0 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- match_default normal REG_BASIC
|
|
Packit |
6c4009 |
a\{2\} a -1 -1
|
|
Packit |
6c4009 |
a\{2\} aa 0 2
|
|
Packit |
6c4009 |
a\{2\} aaa 0 2
|
|
Packit |
6c4009 |
a\{2,\} a -1 -1
|
|
Packit |
6c4009 |
a\{2,\} aa 0 2
|
|
Packit |
6c4009 |
a\{2,\} aaaaa 0 5
|
|
Packit |
6c4009 |
a\{2,4\} a -1 -1
|
|
Packit |
6c4009 |
a\{2,4\} aa 0 2
|
|
Packit |
6c4009 |
a\{2,4\} aaa 0 3
|
|
Packit |
6c4009 |
a\{2,4\} aaaa 0 4
|
|
Packit |
6c4009 |
a\{2,4\} aaaaa 0 4
|
|
Packit |
6c4009 |
{} {} 0 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now test the alternation operator |
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
a|b a 0 1
|
|
Packit |
6c4009 |
a|b b 0 1
|
|
Packit |
6c4009 |
a(b|c) ab 0 2 1 2
|
|
Packit |
6c4009 |
a(b|c) ac 0 2 1 2
|
|
Packit |
6c4009 |
a(b|c) ad -1 -1 -1 -1
|
|
Packit |
6c4009 |
a\| a| 0 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now test the set operator []
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
; try some literals first
|
|
Packit |
6c4009 |
[abc] a 0 1
|
|
Packit |
6c4009 |
[abc] b 0 1
|
|
Packit |
6c4009 |
[abc] c 0 1
|
|
Packit |
6c4009 |
[abc] d -1 -1
|
|
Packit |
6c4009 |
[^bcd] a 0 1
|
|
Packit |
6c4009 |
[^bcd] b -1 -1
|
|
Packit |
6c4009 |
[^bcd] d -1 -1
|
|
Packit |
6c4009 |
[^bcd] e 0 1
|
|
Packit |
6c4009 |
a[b]c abc 0 3
|
|
Packit |
6c4009 |
a[ab]c abc 0 3
|
|
Packit |
6c4009 |
a[^ab]c adc 0 3
|
|
Packit |
6c4009 |
a[]b]c a]c 0 3
|
|
Packit |
6c4009 |
a[[b]c a[c 0 3
|
|
Packit |
6c4009 |
a[-b]c a-c 0 3
|
|
Packit |
6c4009 |
a[^]b]c adc 0 3
|
|
Packit |
6c4009 |
a[^-b]c adc 0 3
|
|
Packit |
6c4009 |
a[b-]c a-c 0 3
|
|
Packit |
6c4009 |
a[b !
|
|
Packit |
6c4009 |
a[] !
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; then some ranges
|
|
Packit |
6c4009 |
[b-e] a -1 -1
|
|
Packit |
6c4009 |
[b-e] b 0 1
|
|
Packit |
6c4009 |
[b-e] e 0 1
|
|
Packit |
6c4009 |
[b-e] f -1 -1
|
|
Packit |
6c4009 |
[^b-e] a 0 1
|
|
Packit |
6c4009 |
[^b-e] b -1 -1
|
|
Packit |
6c4009 |
[^b-e] e -1 -1
|
|
Packit |
6c4009 |
[^b-e] f 0 1
|
|
Packit |
6c4009 |
a[1-3]c a2c 0 3
|
|
Packit |
6c4009 |
a[3-1]c !
|
|
Packit |
6c4009 |
a[1-3-5]c !
|
|
Packit |
6c4009 |
a[1- !
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; and some classes
|
|
Packit |
6c4009 |
a[[:alpha:]]c abc 0 3
|
|
Packit |
6c4009 |
a[[:unknown:]]c !
|
|
Packit |
6c4009 |
a[[: !
|
|
Packit |
6c4009 |
a[[:alpha !
|
|
Packit |
6c4009 |
a[[:alpha:] !
|
|
Packit |
6c4009 |
a[[:alpha,:] !
|
|
Packit |
6c4009 |
a[[:]:]]b !
|
|
Packit |
6c4009 |
a[[:-:]]b !
|
|
Packit |
6c4009 |
a[[:alph:]] !
|
|
Packit |
6c4009 |
a[[:alphabet:]] !
|
|
Packit |
6c4009 |
[[:alnum:]]+ -%@a0X_- 3 6
|
|
Packit |
6c4009 |
[[:alpha:]]+ -%@aX_0- 3 5
|
|
Packit |
6c4009 |
[[:blank:]]+ "a \tb" 1 4
|
|
Packit |
6c4009 |
[[:cntrl:]]+ a\n\tb 1 3
|
|
Packit |
6c4009 |
[[:digit:]]+ a019b 1 4
|
|
Packit |
6c4009 |
[[:graph:]]+ " a%b " 1 4
|
|
Packit |
6c4009 |
[[:lower:]]+ AabC 1 3
|
|
Packit |
6c4009 |
; This test fails with STLPort, disable for now as this is a corner case anyway...
|
|
Packit |
6c4009 |
;[[:print:]]+ "\na b\n" 1 4
|
|
Packit |
6c4009 |
[[:punct:]]+ " %-&\t" 1 4
|
|
Packit |
6c4009 |
[[:space:]]+ "a \n\t\rb" 1 5
|
|
Packit |
6c4009 |
[[:upper:]]+ aBCd 1 3
|
|
Packit |
6c4009 |
[[:xdigit:]]+ p0f3Cx 1 5
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; now test flag settings:
|
|
Packit |
6c4009 |
- escape_in_lists REG_NO_POSIX_TEST
|
|
Packit |
6c4009 |
[\n] \n 0 1
|
|
Packit |
6c4009 |
- REG_NO_POSIX_TEST
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; line anchors
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
^ab ab 0 2
|
|
Packit |
6c4009 |
^ab xxabxx -1 -1
|
|
Packit |
6c4009 |
ab$ ab 0 2
|
|
Packit |
6c4009 |
ab$ abxx -1 -1
|
|
Packit |
6c4009 |
- match_default match_not_bol match_not_eol normal REG_EXTENDED REG_NOTBOL REG_NOTEOL
|
|
Packit |
6c4009 |
^ab ab -1 -1
|
|
Packit |
6c4009 |
^ab xxabxx -1 -1
|
|
Packit |
6c4009 |
ab$ ab -1 -1
|
|
Packit |
6c4009 |
ab$ abxx -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; back references
|
|
Packit |
6c4009 |
- match_default normal REG_PERL
|
|
Packit |
6c4009 |
a(b)\2c !
|
|
Packit |
6c4009 |
a(b\1)c !
|
|
Packit |
6c4009 |
a(b*)c\1d abbcbbd 0 7 1 3
|
|
Packit |
6c4009 |
a(b*)c\1d abbcbd -1 -1
|
|
Packit |
6c4009 |
a(b*)c\1d abbcbbbd -1 -1
|
|
Packit |
6c4009 |
^(.)\1 abc -1 -1
|
|
Packit |
6c4009 |
a([bc])\1d abcdabbd 4 8 5 6
|
|
Packit |
6c4009 |
; strictly speaking this is at best ambiguous, at worst wrong, this is what most
|
|
Packit |
6c4009 |
; re implimentations will match though.
|
|
Packit |
6c4009 |
a(([bc])\2)*d abbccd 0 6 3 5 3 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
a(([bc])\2)*d abbcbd -1 -1
|
|
Packit |
6c4009 |
a((b)*\2)*d abbbd 0 5 1 4 2 3
|
|
Packit |
6c4009 |
; perl only:
|
|
Packit |
6c4009 |
(ab*)[ab]*\1 ababaaa 0 7 0 1
|
|
Packit |
6c4009 |
(a)\1bcd aabcd 0 5 0 1
|
|
Packit |
6c4009 |
(a)\1bc*d aabcd 0 5 0 1
|
|
Packit |
6c4009 |
(a)\1bc*d aabd 0 4 0 1
|
|
Packit |
6c4009 |
(a)\1bc*d aabcccd 0 7 0 1
|
|
Packit |
6c4009 |
(a)\1bc*[ce]d aabcccd 0 7 0 1
|
|
Packit |
6c4009 |
^(a)\1b(c)*cd$ aabcccd 0 7 0 1 4 5
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; posix only:
|
|
Packit |
6c4009 |
- match_default extended REG_EXTENDED
|
|
Packit |
6c4009 |
(ab*)[ab]*\1 ababaaa 0 7 0 1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; word operators:
|
|
Packit |
6c4009 |
\w a 0 1
|
|
Packit |
6c4009 |
\w z 0 1
|
|
Packit |
6c4009 |
\w A 0 1
|
|
Packit |
6c4009 |
\w Z 0 1
|
|
Packit |
6c4009 |
\w _ 0 1
|
|
Packit |
6c4009 |
\w } -1 -1
|
|
Packit |
6c4009 |
\w ` -1 -1
|
|
Packit |
6c4009 |
\w [ -1 -1
|
|
Packit |
6c4009 |
\w @ -1 -1
|
|
Packit |
6c4009 |
; non-word:
|
|
Packit |
6c4009 |
\W a -1 -1
|
|
Packit |
6c4009 |
\W z -1 -1
|
|
Packit |
6c4009 |
\W A -1 -1
|
|
Packit |
6c4009 |
\W Z -1 -1
|
|
Packit |
6c4009 |
\W _ -1 -1
|
|
Packit |
6c4009 |
\W } 0 1
|
|
Packit |
6c4009 |
\W ` 0 1
|
|
Packit |
6c4009 |
\W [ 0 1
|
|
Packit |
6c4009 |
\W @ 0 1
|
|
Packit |
6c4009 |
; word start:
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
;word end:
|
|
Packit |
6c4009 |
abc\> abc 0 3
|
|
Packit |
6c4009 |
abc\> abcd -1 -1
|
|
Packit |
6c4009 |
abc\> abc\n 0 3
|
|
Packit |
6c4009 |
abc\> abc:: 0 3
|
|
Packit |
6c4009 |
; word boundary:
|
|
Packit |
6c4009 |
\babcd " abcd" 2 6
|
|
Packit |
6c4009 |
\bab cab -1 -1
|
|
Packit |
6c4009 |
\bab "\nab" 1 3
|
|
Packit |
6c4009 |
\btag ::tag 2 5
|
|
Packit |
6c4009 |
abc\b abc 0 3
|
|
Packit |
6c4009 |
abc\b abcd -1 -1
|
|
Packit |
6c4009 |
abc\b abc\n 0 3
|
|
Packit |
6c4009 |
abc\b abc:: 0 3
|
|
Packit |
6c4009 |
; within word:
|
|
Packit |
6c4009 |
\B ab 1 1
|
|
Packit |
6c4009 |
a\Bb ab 0 2
|
|
Packit |
6c4009 |
a\B ab 0 1
|
|
Packit |
6c4009 |
a\B a -1 -1
|
|
Packit |
6c4009 |
a\B "a " -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; buffer operators:
|
|
Packit |
6c4009 |
\`abc abc 0 3
|
|
Packit |
6c4009 |
\`abc \nabc -1 -1
|
|
Packit |
6c4009 |
\`abc " abc" -1 -1
|
|
Packit |
6c4009 |
abc\' abc 0 3
|
|
Packit |
6c4009 |
abc\' abc\n -1 -1
|
|
Packit |
6c4009 |
abc\' "abc " -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;
|
|
Packit |
6c4009 |
; now follows various complex expressions designed to try and bust the matcher:
|
|
Packit |
6c4009 |
a(((b)))c abc 0 3 1 2 1 2 1 2
|
|
Packit |
6c4009 |
a(b|(c))d abd 0 3 1 2 -1 -1
|
|
Packit |
6c4009 |
a(b|(c))d acd 0 3 1 2 1 2
|
|
Packit |
6c4009 |
a(b*|c)d abbd 0 4 1 3
|
|
Packit |
6c4009 |
; just gotta have one DFA-buster, of course
|
|
Packit |
6c4009 |
a[ab]{20} aaaaabaaaabaaaabaaaab 0 21
|
|
Packit |
6c4009 |
; and an inline expansion in case somebody gets tricky
|
|
Packit |
6c4009 |
a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab] aaaaabaaaabaaaabaaaab 0 21
|
|
Packit |
6c4009 |
; and in case somebody just slips in an NFA...
|
|
Packit |
6c4009 |
a[ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab][ab](wee|week)(knights|night) aaaaabaaaabaaaabaaaabweeknights 0 31 21 24 24 31
|
|
Packit |
6c4009 |
; one really big one
|
|
Packit |
6c4009 |
1234567890123456789012345678901234567890123456789012345678901234567890 a1234567890123456789012345678901234567890123456789012345678901234567890b 1 71
|
|
Packit |
6c4009 |
; fish for problems as brackets go past 8
|
|
Packit |
6c4009 |
[ab][cd][ef][gh][ij][kl][mn] xacegikmoq 1 8
|
|
Packit |
6c4009 |
[ab][cd][ef][gh][ij][kl][mn][op] xacegikmoq 1 9
|
|
Packit |
6c4009 |
[ab][cd][ef][gh][ij][kl][mn][op][qr] xacegikmoqy 1 10
|
|
Packit |
6c4009 |
[ab][cd][ef][gh][ij][kl][mn][op][q] xacegikmoqy 1 10
|
|
Packit |
6c4009 |
; and as parenthesis go past 9:
|
|
Packit |
6c4009 |
(a)(b)(c)(d)(e)(f)(g)(h) zabcdefghi 1 9 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9
|
|
Packit |
6c4009 |
(a)(b)(c)(d)(e)(f)(g)(h)(i) zabcdefghij 1 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10
|
|
Packit |
6c4009 |
(a)(b)(c)(d)(e)(f)(g)(h)(i)(j) zabcdefghijk 1 11 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11
|
|
Packit |
6c4009 |
(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k) zabcdefghijkl 1 12 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12
|
|
Packit |
6c4009 |
(a)d|(b)c abc 1 3 -1 -1 1 2
|
|
Packit |
6c4009 |
_+((www)|(ftp)|(mailto)):_* "_wwwnocolon _mailto:" 12 20 13 19 -1 -1 -1 -1 13 19
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; subtleties of matching
|
|
Packit |
6c4009 |
;a(b)?c\1d acd 0 3 -1 -1
|
|
Packit |
6c4009 |
; POSIX is about the following test:
|
|
Packit |
6c4009 |
a(b)?c\1d acd -1 -1 -1 -1
|
|
Packit |
6c4009 |
a(b?c)+d accd 0 4 2 3
|
|
Packit |
6c4009 |
(wee|week)(knights|night) weeknights 0 10 0 3 3 10
|
|
Packit |
6c4009 |
.* abc 0 3
|
|
Packit |
6c4009 |
a(b|(c))d abd 0 3 1 2 -1 -1
|
|
Packit |
6c4009 |
a(b|(c))d acd 0 3 1 2 1 2
|
|
Packit |
6c4009 |
a(b*|c|e)d abbd 0 4 1 3
|
|
Packit |
6c4009 |
a(b*|c|e)d acd 0 3 1 2
|
|
Packit |
6c4009 |
a(b*|c|e)d ad 0 2 1 1
|
|
Packit |
6c4009 |
a(b?)c abc 0 3 1 2
|
|
Packit |
6c4009 |
a(b?)c ac 0 2 1 1
|
|
Packit |
6c4009 |
a(b+)c abc 0 3 1 2
|
|
Packit |
6c4009 |
a(b+)c abbbc 0 5 1 4
|
|
Packit |
6c4009 |
a(b*)c ac 0 2 1 1
|
|
Packit |
6c4009 |
(a|ab)(bc([de]+)f|cde) abcdef 0 6 0 1 1 6 3 5
|
|
Packit |
6c4009 |
a([bc]?)c abc 0 3 1 2
|
|
Packit |
6c4009 |
a([bc]?)c ac 0 2 1 1
|
|
Packit |
6c4009 |
a([bc]+)c abc 0 3 1 2
|
|
Packit |
6c4009 |
a([bc]+)c abcc 0 4 1 3
|
|
Packit |
6c4009 |
a([bc]+)bc abcbc 0 5 1 3
|
|
Packit |
6c4009 |
a(bb+|b)b abb 0 3 1 2
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)b abb 0 3 1 2
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)b abbb 0 4 1 3
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)bb abbb 0 4 1 2
|
|
Packit |
6c4009 |
(.*).* abcdef 0 6 0 6
|
|
Packit |
6c4009 |
(a*)* bc 0 0 0 0
|
|
Packit |
6c4009 |
xyx*xz xyxxxxyxxxz 5 11
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; do we get the right subexpression when it is used more than once?
|
|
Packit |
6c4009 |
a(b|c)*d ad 0 2 -1 -1
|
|
Packit |
6c4009 |
a(b|c)*d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c)+d abd 0 3 1 2
|
|
Packit |
6c4009 |
a(b|c)+d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c?)+d ad 0 2 1 1
|
|
Packit |
6c4009 |
a(b|c){0,0}d ad 0 2 -1 -1
|
|
Packit |
6c4009 |
a(b|c){0,1}d ad 0 2 -1 -1
|
|
Packit |
6c4009 |
a(b|c){0,1}d abd 0 3 1 2
|
|
Packit |
6c4009 |
a(b|c){0,2}d ad 0 2 -1 -1
|
|
Packit |
6c4009 |
a(b|c){0,2}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){0,}d ad 0 2 -1 -1
|
|
Packit |
6c4009 |
a(b|c){0,}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){1,1}d abd 0 3 1 2
|
|
Packit |
6c4009 |
a(b|c){1,2}d abd 0 3 1 2
|
|
Packit |
6c4009 |
a(b|c){1,2}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){1,}d abd 0 3 1 2
|
|
Packit |
6c4009 |
a(b|c){1,}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){2,2}d acbd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){2,2}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){2,4}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){2,4}d abcbd 0 5 3 4
|
|
Packit |
6c4009 |
a(b|c){2,4}d abcbcd 0 6 4 5
|
|
Packit |
6c4009 |
a(b|c){2,}d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|c){2,}d abcbd 0 5 3 4
|
|
Packit |
6c4009 |
; perl only: these conflict with the POSIX test below
|
|
Packit |
6c4009 |
;a(b|c?)+d abcd 0 4 3 3
|
|
Packit |
6c4009 |
;a(b+|((c)*))+d abd 0 3 2 2 2 2 -1 -1
|
|
Packit |
6c4009 |
;a(b+|((c)*))+d abcd 0 4 3 3 3 3 2 3
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; posix only:
|
|
Packit |
6c4009 |
- match_default extended REG_EXTENDED REG_STARTEND
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
a(b|c?)+d abcd 0 4 2 3
|
|
Packit |
6c4009 |
a(b|((c)*))+d abcd 0 4 2 3 2 3 2 3
|
|
Packit |
6c4009 |
a(b+|((c)*))+d abd 0 3 1 2 -1 -1 -1 -1
|
|
Packit |
6c4009 |
a(b+|((c)*))+d abcd 0 4 2 3 2 3 2 3
|
|
Packit |
6c4009 |
a(b|((c)*))+d ad 0 2 1 1 1 1 -1 -1
|
|
Packit |
6c4009 |
a(b|((c)*))*d abcd 0 4 2 3 2 3 2 3
|
|
Packit |
6c4009 |
a(b+|((c)*))*d abd 0 3 1 2 -1 -1 -1 -1
|
|
Packit |
6c4009 |
a(b+|((c)*))*d abcd 0 4 2 3 2 3 2 3
|
|
Packit |
6c4009 |
a(b|((c)*))*d ad 0 2 1 1 1 1 -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- match_default normal REG_PERL
|
|
Packit |
6c4009 |
; try to match C++ syntax elements:
|
|
Packit |
6c4009 |
; line comment:
|
|
Packit |
6c4009 |
//[^\n]* "++i //here is a line comment\n" 4 28
|
|
Packit |
6c4009 |
; block comment:
|
|
Packit |
6c4009 |
/\*([^*]|\*+[^*/])*\*+/ "/* here is a block comment */" 0 29 26 27
|
|
Packit |
6c4009 |
/\*([^*]|\*+[^*/])*\*+/ "/**/" 0 4 -1 -1
|
|
Packit |
6c4009 |
/\*([^*]|\*+[^*/])*\*+/ "/***/" 0 5 -1 -1
|
|
Packit |
6c4009 |
/\*([^*]|\*+[^*/])*\*+/ "/****/" 0 6 -1 -1
|
|
Packit |
6c4009 |
/\*([^*]|\*+[^*/])*\*+/ "/*****/" 0 7 -1 -1
|
|
Packit |
6c4009 |
/\*([^*]|\*+[^*/])*\*+/ "/*****/*/" 0 7 -1 -1
|
|
Packit |
6c4009 |
; preprossor directives:
|
|
Packit |
6c4009 |
^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol" 0 19 -1 -1
|
|
Packit |
6c4009 |
^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) #x" 0 25 -1 -1
|
|
Packit |
6c4009 |
; perl only:
|
|
Packit |
6c4009 |
^[[:blank:]]*#([^\n]*\\[[:space:]]+)*[^\n]* "#define some_symbol(x) \\ \r\n foo();\\\r\n printf(#x);" 0 53 30 42
|
|
Packit |
6c4009 |
; literals:
|
|
Packit |
6c4009 |
((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFF 0 4 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1
|
|
Packit |
6c4009 |
((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 35 0 2 0 2 -1 -1 0 2 -1 -1 -1 -1 -1 -1
|
|
Packit |
6c4009 |
((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFu 0 5 0 4 0 4 -1 -1 -1 -1 -1 -1 -1 -1
|
|
Packit |
6c4009 |
((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFL 0 5 0 4 0 4 -1 -1 4 5 -1 -1 -1 -1
|
|
Packit |
6c4009 |
((0x[[:xdigit:]]+)|([[:digit:]]+))u?((int(8|16|32|64))|L)? 0xFFFFFFFFFFFFFFFFuint64 0 24 0 18 0 18 -1 -1 19 24 19 24 22 24
|
|
Packit |
6c4009 |
; strings:
|
|
Packit |
6c4009 |
'([^\\']|\\.)*' '\\x3A' 0 6 4 5
|
|
Packit |
6c4009 |
'([^\\']|\\.)*' '\\'' 0 4 1 3
|
|
Packit |
6c4009 |
'([^\\']|\\.)*' '\\n' 0 4 1 3
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; finally try some case insensitive matches:
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_ICASE
|
|
Packit |
6c4009 |
; upper and lower have no meaning here so they fail, however these
|
|
Packit |
6c4009 |
; may compile with other libraries...
|
|
Packit |
6c4009 |
;[[:lower:]] !
|
|
Packit |
6c4009 |
;[[:upper:]] !
|
|
Packit |
6c4009 |
0123456789@abcdefghijklmnopqrstuvwxyz\[\\\]\^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ\{\|\} 0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]\^_`abcdefghijklmnopqrstuvwxyz\{\|\} 0 72
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; known and suspected bugs:
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED
|
|
Packit |
6c4009 |
\( ( 0 1
|
|
Packit |
6c4009 |
\) ) 0 1
|
|
Packit |
6c4009 |
\$ $ 0 1
|
|
Packit |
6c4009 |
\^ ^ 0 1
|
|
Packit |
6c4009 |
\. . 0 1
|
|
Packit |
6c4009 |
\* * 0 1
|
|
Packit |
6c4009 |
\+ + 0 1
|
|
Packit |
6c4009 |
\? ? 0 1
|
|
Packit |
6c4009 |
\[ [ 0 1
|
|
Packit |
6c4009 |
\] ] 0 1
|
|
Packit |
6c4009 |
\| | 0 1
|
|
Packit |
6c4009 |
\\ \\ 0 1
|
|
Packit |
6c4009 |
# # 0 1
|
|
Packit |
6c4009 |
\# # 0 1
|
|
Packit |
6c4009 |
a- a- 0 2
|
|
Packit |
6c4009 |
\- - 0 1
|
|
Packit |
6c4009 |
\{ { 0 1
|
|
Packit |
6c4009 |
\} } 0 1
|
|
Packit |
6c4009 |
0 0 0 1
|
|
Packit |
6c4009 |
1 1 0 1
|
|
Packit |
6c4009 |
9 9 0 1
|
|
Packit |
6c4009 |
b b 0 1
|
|
Packit |
6c4009 |
B B 0 1
|
|
Packit |
6c4009 |
< < 0 1
|
|
Packit |
6c4009 |
> > 0 1
|
|
Packit |
6c4009 |
w w 0 1
|
|
Packit |
6c4009 |
W W 0 1
|
|
Packit |
6c4009 |
` ` 0 1
|
|
Packit |
6c4009 |
' ' 0 1
|
|
Packit |
6c4009 |
\n \n 0 1
|
|
Packit |
6c4009 |
, , 0 1
|
|
Packit |
6c4009 |
a a 0 1
|
|
Packit |
6c4009 |
f f 0 1
|
|
Packit |
6c4009 |
n n 0 1
|
|
Packit |
6c4009 |
r r 0 1
|
|
Packit |
6c4009 |
t t 0 1
|
|
Packit |
6c4009 |
v v 0 1
|
|
Packit |
6c4009 |
c c 0 1
|
|
Packit |
6c4009 |
x x 0 1
|
|
Packit |
6c4009 |
: : 0 1
|
|
Packit |
6c4009 |
(\.[[:alnum:]]+){2} "w.a.b " 1 5 3 5
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_ICASE
|
|
Packit |
6c4009 |
a A 0 1
|
|
Packit |
6c4009 |
A a 0 1
|
|
Packit |
6c4009 |
[abc]+ abcABC 0 6
|
|
Packit |
6c4009 |
[ABC]+ abcABC 0 6
|
|
Packit |
6c4009 |
[a-z]+ abcABC 0 6
|
|
Packit |
6c4009 |
[A-Z]+ abzANZ 0 6
|
|
Packit |
6c4009 |
[a-Z]+ abzABZ 0 6
|
|
Packit |
6c4009 |
[A-z]+ abzABZ 0 6
|
|
Packit |
6c4009 |
[[:lower:]]+ abyzABYZ 0 8
|
|
Packit |
6c4009 |
[[:upper:]]+ abzABZ 0 6
|
|
Packit |
6c4009 |
[[:alpha:]]+ abyzABYZ 0 8
|
|
Packit |
6c4009 |
[[:alnum:]]+ 09abyzABYZ 0 10
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; word start:
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
\
|
|
Packit |
6c4009 |
;word end:
|
|
Packit |
6c4009 |
abc\> abc 0 3
|
|
Packit |
6c4009 |
abc\> abcd -1 -1
|
|
Packit |
6c4009 |
abc\> abc\n 0 3
|
|
Packit |
6c4009 |
abc\> abc:: 0 3
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; collating elements and rewritten set code:
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND
|
|
Packit |
6c4009 |
;[[.zero.]] 0 0 1
|
|
Packit |
6c4009 |
;[[.one.]] 1 0 1
|
|
Packit |
6c4009 |
;[[.two.]] 2 0 1
|
|
Packit |
6c4009 |
;[[.three.]] 3 0 1
|
|
Packit |
6c4009 |
[[.a.]] baa 1 2
|
|
Packit |
6c4009 |
;[[.right-curly-bracket.]] } 0 1
|
|
Packit |
6c4009 |
;[[.NUL.]] \0 0 1
|
|
Packit |
6c4009 |
[[:<:]z] !
|
|
Packit |
6c4009 |
[a[:>:]] !
|
|
Packit |
6c4009 |
[[=a=]] a 0 1
|
|
Packit |
6c4009 |
;[[=right-curly-bracket=]] } 0 1
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND REG_ICASE
|
|
Packit |
6c4009 |
[[.A.]] A 0 1
|
|
Packit |
6c4009 |
[[.A.]] a 0 1
|
|
Packit |
6c4009 |
[[.A.]-b]+ AaBb 0 4
|
|
Packit |
6c4009 |
[A-[.b.]]+ AaBb 0 4
|
|
Packit |
6c4009 |
[[.a.]-B]+ AaBb 0 4
|
|
Packit |
6c4009 |
[a-[.B.]]+ AaBb 0 4
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND
|
|
Packit |
6c4009 |
[[.a.]-c]+ abcd 0 3
|
|
Packit |
6c4009 |
[a-[.c.]]+ abcd 0 3
|
|
Packit |
6c4009 |
[[:alpha:]-a] !
|
|
Packit |
6c4009 |
[a-[:alpha:]] !
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; try mutli-character ligatures:
|
|
Packit |
6c4009 |
;[[.ae.]] ae 0 2
|
|
Packit |
6c4009 |
;[[.ae.]] aE -1 -1
|
|
Packit |
6c4009 |
;[[.AE.]] AE 0 2
|
|
Packit |
6c4009 |
;[[.Ae.]] Ae 0 2
|
|
Packit |
6c4009 |
;[[.ae.]-b] a -1 -1
|
|
Packit |
6c4009 |
;[[.ae.]-b] b 0 1
|
|
Packit |
6c4009 |
;[[.ae.]-b] ae 0 2
|
|
Packit |
6c4009 |
;[a-[.ae.]] a 0 1
|
|
Packit |
6c4009 |
;[a-[.ae.]] b -1 -1
|
|
Packit |
6c4009 |
;[a-[.ae.]] ae 0 2
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND REG_ICASE
|
|
Packit |
6c4009 |
;[[.ae.]] AE 0 2
|
|
Packit |
6c4009 |
;[[.ae.]] Ae 0 2
|
|
Packit |
6c4009 |
;[[.AE.]] Ae 0 2
|
|
Packit |
6c4009 |
;[[.Ae.]] aE 0 2
|
|
Packit |
6c4009 |
;[[.AE.]-B] a -1 -1
|
|
Packit |
6c4009 |
;[[.Ae.]-b] b 0 1
|
|
Packit |
6c4009 |
;[[.Ae.]-b] B 0 1
|
|
Packit |
6c4009 |
;[[.ae.]-b] AE 0 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND REG_NO_POSIX_TEST
|
|
Packit |
6c4009 |
\s+ "ab ab" 2 5
|
|
Packit |
6c4009 |
\S+ " abc " 2 5
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- match_default normal REG_EXTENDED REG_STARTEND
|
|
Packit |
6c4009 |
\`abc abc 0 3
|
|
Packit |
6c4009 |
\`abc aabc -1 -1
|
|
Packit |
6c4009 |
abc\' abc 0 3
|
|
Packit |
6c4009 |
abc\' abcd -1 -1
|
|
Packit |
6c4009 |
abc\' abc\n\n -1 -1
|
|
Packit |
6c4009 |
abc\' abc 0 3
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; extended repeat checking to exercise new algorithms:
|
|
Packit |
6c4009 |
ab.*xy abxy_ 0 4
|
|
Packit |
6c4009 |
ab.*xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
ab.*xy abxy 0 4
|
|
Packit |
6c4009 |
ab.*xy ab_xy 0 5
|
|
Packit |
6c4009 |
ab.* ab 0 2
|
|
Packit |
6c4009 |
ab.* ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab.{2,5}xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
ab.{2,5}xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
ab.{2,5}xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
ab.{2,5}xy ab__xy 0 6
|
|
Packit |
6c4009 |
ab.{2,5}xy ab_____xy 0 9
|
|
Packit |
6c4009 |
ab.{2,5} ab__ 0 4
|
|
Packit |
6c4009 |
ab.{2,5} ab_______ 0 7
|
|
Packit |
6c4009 |
ab.{2,5}xy ab______xy -1 -1
|
|
Packit |
6c4009 |
ab.{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab.*?xy abxy_ 0 4
|
|
Packit |
6c4009 |
ab.*?xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
ab.*?xy abxy 0 4
|
|
Packit |
6c4009 |
ab.*?xy ab_xy 0 5
|
|
Packit |
6c4009 |
ab.*? ab 0 2
|
|
Packit |
6c4009 |
ab.*? ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab.{2,5}?xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
ab.{2,5}?xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
ab.{2,5}?xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
ab.{2,5}?xy ab__xy 0 6
|
|
Packit |
6c4009 |
ab.{2,5}?xy ab_____xy 0 9
|
|
Packit |
6c4009 |
ab.{2,5}? ab__ 0 4
|
|
Packit |
6c4009 |
ab.{2,5}? ab_______ 0 7
|
|
Packit |
6c4009 |
ab.{2,5}?xy ab______xy -1 -1
|
|
Packit |
6c4009 |
ab.{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; again but with slower algorithm variant:
|
|
Packit |
6c4009 |
- match_default REG_EXTENDED
|
|
Packit |
6c4009 |
; now again for single character repeats:
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab_*xy abxy_ 0 4
|
|
Packit |
6c4009 |
ab_*xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
ab_*xy abxy 0 4
|
|
Packit |
6c4009 |
ab_*xy ab_xy 0 5
|
|
Packit |
6c4009 |
ab_* ab 0 2
|
|
Packit |
6c4009 |
ab_* ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab_{2,5}xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
ab_{2,5}xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
ab_{2,5}xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
ab_{2,5}xy ab__xy 0 6
|
|
Packit |
6c4009 |
ab_{2,5}xy ab_____xy 0 9
|
|
Packit |
6c4009 |
ab_{2,5} ab__ 0 4
|
|
Packit |
6c4009 |
ab_{2,5} ab_______ 0 7
|
|
Packit |
6c4009 |
ab_{2,5}xy ab______xy -1 -1
|
|
Packit |
6c4009 |
ab_{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab_*?xy abxy_ 0 4
|
|
Packit |
6c4009 |
ab_*?xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
ab_*?xy abxy 0 4
|
|
Packit |
6c4009 |
ab_*?xy ab_xy 0 5
|
|
Packit |
6c4009 |
ab_*? ab 0 2
|
|
Packit |
6c4009 |
ab_*? ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab_{2,5}?xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
ab_{2,5}?xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
ab_{2,5}?xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
ab_{2,5}?xy ab__xy 0 6
|
|
Packit |
6c4009 |
ab_{2,5}?xy ab_____xy 0 9
|
|
Packit |
6c4009 |
ab_{2,5}? ab__ 0 4
|
|
Packit |
6c4009 |
ab_{2,5}? ab_______ 0 7
|
|
Packit |
6c4009 |
ab_{2,5}?xy ab______xy -1 -1
|
|
Packit |
6c4009 |
ab_{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; and again for sets:
|
|
Packit |
6c4009 |
ab[_,;]*xy abxy_ 0 4
|
|
Packit |
6c4009 |
ab[_,;]*xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
ab[_,;]*xy abxy 0 4
|
|
Packit |
6c4009 |
ab[_,;]*xy ab_xy 0 5
|
|
Packit |
6c4009 |
ab[_,;]* ab 0 2
|
|
Packit |
6c4009 |
ab[_,;]* ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab__xy 0 6
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab_____xy 0 9
|
|
Packit |
6c4009 |
ab[_,;]{2,5} ab__ 0 4
|
|
Packit |
6c4009 |
ab[_,;]{2,5} ab_______ 0 7
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab______xy -1 -1
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab[_,;]*?xy abxy_ 0 4
|
|
Packit |
6c4009 |
ab[_,;]*?xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
ab[_,;]*?xy abxy 0 4
|
|
Packit |
6c4009 |
ab[_,;]*?xy ab_xy 0 5
|
|
Packit |
6c4009 |
ab[_,;]*? ab 0 2
|
|
Packit |
6c4009 |
ab[_,;]*? ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ab[_,;]{2,5}?xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
ab[_,;]{2,5}?xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
ab[_,;]{2,5}?xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
ab[_,;]{2,5}?xy ab__xy 0 6
|
|
Packit |
6c4009 |
ab[_,;]{2,5}?xy ab_____xy 0 9
|
|
Packit |
6c4009 |
ab[_,;]{2,5}? ab__ 0 4
|
|
Packit |
6c4009 |
ab[_,;]{2,5}? ab_______ 0 7
|
|
Packit |
6c4009 |
ab[_,;]{2,5}?xy ab______xy -1 -1
|
|
Packit |
6c4009 |
ab[_,;]{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; and again for tricky sets with digraphs:
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*xy abxy_ 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*xy abxy 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*xy ab_xy 0 5
|
|
Packit |
6c4009 |
;ab[_[.ae.]]* ab 0 2
|
|
Packit |
6c4009 |
;ab[_[.ae.]]* ab__ 0 4
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab__xy 0 6
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab_____xy 0 9
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5} ab__ 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5} ab_______ 0 7
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab______xy -1 -1
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*?xy abxy_ 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*?xy ab_xy_ 0 5
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*?xy abxy 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*?xy ab_xy 0 5
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*? ab 0 2
|
|
Packit |
6c4009 |
;ab[_[.ae.]]*? ab__ 0 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}?xy ab__xy_ 0 6
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}?xy ab____xy_ 0 8
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}?xy ab_____xy_ 0 9
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}?xy ab__xy 0 6
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}?xy ab_____xy 0 9
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}? ab__ 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}? ab_______ 0 4
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}?xy ab______xy -1 -1
|
|
Packit |
6c4009 |
;ab[_[.ae.]]{2,5}xy ab_xy -1 -1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; new bugs detected in spring 2003:
|
|
Packit |
6c4009 |
- normal match_continuous REG_NO_POSIX_TEST
|
|
Packit |
6c4009 |
b abc 1 2
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
() abc 0 0 0 0
|
|
Packit |
6c4009 |
^() abc 0 0 0 0
|
|
Packit |
6c4009 |
^()+ abc 0 0 0 0
|
|
Packit |
6c4009 |
^(){1} abc 0 0 0 0
|
|
Packit |
6c4009 |
^(){2} abc 0 0 0 0
|
|
Packit |
6c4009 |
^((){2}) abc 0 0 0 0 0 0
|
|
Packit |
6c4009 |
() "" 0 0 0 0
|
|
Packit |
6c4009 |
()\1 "" 0 0 0 0
|
|
Packit |
6c4009 |
()\1 a 0 0 0 0
|
|
Packit |
6c4009 |
a()\1b ab 0 2 1 1
|
|
Packit |
6c4009 |
a()b\1 ab 0 2 1 1
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
; subtleties of matching with no sub-expressions marked
|
|
Packit |
6c4009 |
- normal match_nosubs REG_NO_POSIX_TEST
|
|
Packit |
6c4009 |
a(b?c)+d accd 0 4
|
|
Packit |
6c4009 |
(wee|week)(knights|night) weeknights 0 10
|
|
Packit |
6c4009 |
.* abc 0 3
|
|
Packit |
6c4009 |
a(b|(c))d abd 0 3
|
|
Packit |
6c4009 |
a(b|(c))d acd 0 3
|
|
Packit |
6c4009 |
a(b*|c|e)d abbd 0 4
|
|
Packit |
6c4009 |
a(b*|c|e)d acd 0 3
|
|
Packit |
6c4009 |
a(b*|c|e)d ad 0 2
|
|
Packit |
6c4009 |
a(b?)c abc 0 3
|
|
Packit |
6c4009 |
a(b?)c ac 0 2
|
|
Packit |
6c4009 |
a(b+)c abc 0 3
|
|
Packit |
6c4009 |
a(b+)c abbbc 0 5
|
|
Packit |
6c4009 |
a(b*)c ac 0 2
|
|
Packit |
6c4009 |
(a|ab)(bc([de]+)f|cde) abcdef 0 6
|
|
Packit |
6c4009 |
a([bc]?)c abc 0 3
|
|
Packit |
6c4009 |
a([bc]?)c ac 0 2
|
|
Packit |
6c4009 |
a([bc]+)c abc 0 3
|
|
Packit |
6c4009 |
a([bc]+)c abcc 0 4
|
|
Packit |
6c4009 |
a([bc]+)bc abcbc 0 5
|
|
Packit |
6c4009 |
a(bb+|b)b abb 0 3
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)b abb 0 3
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)b abbb 0 4
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)bb abbb 0 4
|
|
Packit |
6c4009 |
(.*).* abcdef 0 6
|
|
Packit |
6c4009 |
(a*)* bc 0 0
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
- normal nosubs REG_NO_POSIX_TEST
|
|
Packit |
6c4009 |
a(b?c)+d accd 0 4
|
|
Packit |
6c4009 |
(wee|week)(knights|night) weeknights 0 10
|
|
Packit |
6c4009 |
.* abc 0 3
|
|
Packit |
6c4009 |
a(b|(c))d abd 0 3
|
|
Packit |
6c4009 |
a(b|(c))d acd 0 3
|
|
Packit |
6c4009 |
a(b*|c|e)d abbd 0 4
|
|
Packit |
6c4009 |
a(b*|c|e)d acd 0 3
|
|
Packit |
6c4009 |
a(b*|c|e)d ad 0 2
|
|
Packit |
6c4009 |
a(b?)c abc 0 3
|
|
Packit |
6c4009 |
a(b?)c ac 0 2
|
|
Packit |
6c4009 |
a(b+)c abc 0 3
|
|
Packit |
6c4009 |
a(b+)c abbbc 0 5
|
|
Packit |
6c4009 |
a(b*)c ac 0 2
|
|
Packit |
6c4009 |
(a|ab)(bc([de]+)f|cde) abcdef 0 6
|
|
Packit |
6c4009 |
a([bc]?)c abc 0 3
|
|
Packit |
6c4009 |
a([bc]?)c ac 0 2
|
|
Packit |
6c4009 |
a([bc]+)c abc 0 3
|
|
Packit |
6c4009 |
a([bc]+)c abcc 0 4
|
|
Packit |
6c4009 |
a([bc]+)bc abcbc 0 5
|
|
Packit |
6c4009 |
a(bb+|b)b abb 0 3
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)b abb 0 3
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)b abbb 0 4
|
|
Packit |
6c4009 |
a(bbb+|bb+|b)bb abbb 0 4
|
|
Packit |
6c4009 |
(.*).* abcdef 0 6
|
|
Packit |
6c4009 |
(a*)* bc 0 0
|
|
Packit |
6c4009 |
|