version 1.1, 2012/02/21 23:05:52
|
version 1.1.1.3, 2012/10/09 09:19:18
|
Line 5
|
Line 5
|
either because PCRE can't be compatible, or there is a possible Perl |
either because PCRE can't be compatible, or there is a possible Perl |
bug. |
bug. |
|
|
NOTE: This is a non-UTF-8 set of tests. When UTF-8 is needed, use test | NOTE: This is a non-UTF set of tests. When UTF support is needed, use |
5, and if Unicode Property Support is needed, use test 13. --/ | test 5, and if Unicode Property Support is needed, use test 7. --/ |
|
|
/-- Originally, the Perl >= 5.10 things were in here too, but now I have |
|
separated many (most?) of them out into test 11. However, there may still |
|
be some that were overlooked. --/ |
|
|
|
/(a)b|/I |
/(a)b|/I |
Capturing subpattern count = 1 |
Capturing subpattern count = 1 |
No options |
No options |
Line 380 No need char
|
Line 376 No need char
|
2: <unset> |
2: <unset> |
3: def |
3: def |
|
|
/abc/P |
|
abc |
|
0: abc |
|
*** Failers |
|
No match: POSIX code 17: match failed |
|
|
|
/^abc|def/P |
|
abcdef |
|
0: abc |
|
abcdef\B |
|
0: def |
|
|
|
/.*((abc)$|(def))/P |
|
defabc |
|
0: defabc |
|
1: abc |
|
2: abc |
|
\Zdefabc |
|
0: def |
|
1: def |
|
3: def |
|
|
|
/the quick brown fox/P |
|
the quick brown fox |
|
0: the quick brown fox |
|
*** Failers |
|
No match: POSIX code 17: match failed |
|
The Quick Brown Fox |
|
No match: POSIX code 17: match failed |
|
|
|
/the quick brown fox/Pi |
|
the quick brown fox |
|
0: the quick brown fox |
|
The Quick Brown Fox |
|
0: The Quick Brown Fox |
|
|
|
/abc.def/P |
|
*** Failers |
|
No match: POSIX code 17: match failed |
|
abc\ndef |
|
No match: POSIX code 17: match failed |
|
|
|
/abc$/P |
|
abc |
|
0: abc |
|
abc\n |
|
0: abc |
|
|
|
/(abc)\2/P |
|
Failed: POSIX code 15: bad back reference at offset 7 |
|
|
|
/(abc\1)/P |
|
abc |
|
No match: POSIX code 17: match failed |
|
|
|
/)/ |
/)/ |
Failed: unmatched parentheses at offset 0 |
Failed: unmatched parentheses at offset 0 |
|
|
Line 510 Capturing subpattern count = 0
|
Line 451 Capturing subpattern count = 0
|
No options |
No options |
First char = 'f' |
First char = 'f' |
Need char = 'o' |
Need char = 'o' |
|
Max lookbehind = 6 |
foo |
foo |
0: foo |
0: foo |
catfoo |
catfoo |
Line 717 Capturing subpattern count = 0
|
Line 659 Capturing subpattern count = 0
|
No options |
No options |
No first char |
No first char |
No need char |
No need char |
|
Max lookbehind = 3 |
Subject length lower bound = 1 |
Subject length lower bound = 1 |
Starting byte set: a b |
Starting byte set: a b |
|
|
Line 725 Capturing subpattern count = 1
|
Line 668 Capturing subpattern count = 1
|
No options |
No options |
No first char |
No first char |
Need char = 'a' |
Need char = 'a' |
|
Max lookbehind = 3 |
Subject length lower bound = 5 |
Subject length lower bound = 5 |
Starting byte set: a o |
Starting byte set: a o |
|
|
Line 742 Contains explicit CR or LF match
|
Line 686 Contains explicit CR or LF match
|
Options: multiline |
Options: multiline |
No first char |
No first char |
Need char = 'r' |
Need char = 'r' |
|
Max lookbehind = 4 |
foo\nbarbar |
foo\nbarbar |
0: bar |
0: bar |
***Failers |
***Failers |
Line 759 Contains explicit CR or LF match
|
Line 704 Contains explicit CR or LF match
|
Options: multiline |
Options: multiline |
First char at start or follows newline |
First char at start or follows newline |
Need char = 'r' |
Need char = 'r' |
|
Max lookbehind = 4 |
foo\nbarbar |
foo\nbarbar |
0: bar |
0: bar |
***Failers |
***Failers |
Line 800 Capturing subpattern count = 0
|
Line 746 Capturing subpattern count = 0
|
No options |
No options |
First char = '-' |
First char = '-' |
Need char = 't' |
Need char = 't' |
|
Max lookbehind = 7 |
the bullock-cart |
the bullock-cart |
0: -cart |
0: -cart |
a donkey-cart race |
a donkey-cart race |
Line 816 Capturing subpattern count = 0
|
Line 763 Capturing subpattern count = 0
|
No options |
No options |
No first char |
No first char |
No need char |
No need char |
|
Max lookbehind = 3 |
|
|
/(?>.*)(?<=(abcd)|(xyz))/I |
/(?>.*)(?<=(abcd)|(xyz))/I |
Capturing subpattern count = 2 |
Capturing subpattern count = 2 |
No options |
No options |
First char at start or follows newline |
First char at start or follows newline |
No need char |
No need char |
|
Max lookbehind = 4 |
alphabetabcd |
alphabetabcd |
0: alphabetabcd |
0: alphabetabcd |
1: abcd |
1: abcd |
Line 835 Capturing subpattern count = 0
|
Line 784 Capturing subpattern count = 0
|
No options |
No options |
First char = 'Z' |
First char = 'Z' |
Need char = 'Z' |
Need char = 'Z' |
|
Max lookbehind = 4 |
abxyZZ |
abxyZZ |
0: ZZ |
0: ZZ |
abXyZZ |
abXyZZ |
Line 863 Capturing subpattern count = 1
|
Line 813 Capturing subpattern count = 1
|
No options |
No options |
First char = 'b' |
First char = 'b' |
Need char = 'r' |
Need char = 'r' |
|
Max lookbehind = 4 |
bar |
bar |
0: bar |
0: bar |
foobbar |
foobbar |
Line 1034 Failed: numbers out of order in {} quantifier at offse
|
Line 985 Failed: numbers out of order in {} quantifier at offse
|
/abc/\ |
/abc/\ |
Failed: \ at end of pattern at offset 4 |
Failed: \ at end of pattern at offset 4 |
|
|
/abc/\P |
|
Failed: POSIX code 9: bad escape sequence at offset 4 |
|
|
|
/abc/\i |
/abc/\i |
Failed: \ at end of pattern at offset 4 |
Failed: \ at end of pattern at offset 4 |
|
|
Line 1152 No first char
|
Line 1100 No first char
|
No need char |
No need char |
abc\00def\L\C0 |
abc\00def\L\C0 |
0: abc\x00def |
0: abc\x00def |
0C abc (7) | 0C abc\x00def (7) |
0L abc |
0L abc |
|
|
/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ |
/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ |
Line 1267 Capturing subpattern count = 0
|
Line 1215 Capturing subpattern count = 0
|
No options |
No options |
First char = 'i' |
First char = 'i' |
Need char = 's' |
Need char = 's' |
|
Max lookbehind = 1 |
Mississippi |
Mississippi |
0: iss |
0: iss |
0+ issippi |
0+ issippi |
|
|
/\Biss\B/I+P |
|
Mississippi |
|
0: iss |
|
0+ issippi |
|
|
|
/iss/IG+ |
/iss/IG+ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
Line 1292 Capturing subpattern count = 0
|
Line 1236 Capturing subpattern count = 0
|
No options |
No options |
First char = 'i' |
First char = 'i' |
Need char = 's' |
Need char = 's' |
|
Max lookbehind = 1 |
Mississippi |
Mississippi |
0: iss |
0: iss |
0+ issippi |
0+ issippi |
Line 1301 Capturing subpattern count = 0
|
Line 1246 Capturing subpattern count = 0
|
No options |
No options |
First char = 'i' |
First char = 'i' |
Need char = 's' |
Need char = 's' |
|
Max lookbehind = 1 |
Mississippi |
Mississippi |
0: iss |
0: iss |
0+ issippi |
0+ issippi |
Line 1316 Capturing subpattern count = 0
|
Line 1262 Capturing subpattern count = 0
|
No options |
No options |
First char = 'i' |
First char = 'i' |
Need char = 's' |
Need char = 's' |
|
Max lookbehind = 1 |
Mississippi |
Mississippi |
0: iss |
0: iss |
0+ issippi |
0+ issippi |
Line 1327 Capturing subpattern count = 0
|
Line 1274 Capturing subpattern count = 0
|
No options |
No options |
First char = 'i' |
First char = 'i' |
Need char = 's' |
Need char = 's' |
|
Max lookbehind = 1 |
Mississippi |
Mississippi |
0: iss |
0: iss |
0+ issippi |
0+ issippi |
Line 1405 Capturing subpattern count = 0
|
Line 1353 Capturing subpattern count = 0
|
Contains explicit CR or LF match |
Contains explicit CR or LF match |
Options: multiline |
Options: multiline |
First char at start or follows newline |
First char at start or follows newline |
Need char = 10 | Need char = \x0a |
ab\nab\ncd |
ab\nab\ncd |
0: ab\x0a |
0: ab\x0a |
0+ ab\x0acd |
0+ ab\x0acd |
Line 1507 Capturing subpattern count = 0
|
Line 1455 Capturing subpattern count = 0
|
No options |
No options |
No first char |
No first char |
No need char |
No need char |
|
Max lookbehind = 3 |
|
|
/abc(?!pqr)/I |
/abc(?!pqr)/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
Line 1692 No need char
|
Line 1641 No need char
|
\Nabc |
\Nabc |
No match |
No match |
|
|
/a*(b+)(z)(z)/P |
|
aaaabbbbzzzz |
|
0: aaaabbbbzz |
|
1: bbbb |
|
2: z |
|
3: z |
|
aaaabbbbzzzz\O0 |
|
aaaabbbbzzzz\O1 |
|
0: aaaabbbbzz |
|
aaaabbbbzzzz\O2 |
|
0: aaaabbbbzz |
|
1: bbbb |
|
aaaabbbbzzzz\O3 |
|
0: aaaabbbbzz |
|
1: bbbb |
|
2: z |
|
aaaabbbbzzzz\O4 |
|
0: aaaabbbbzz |
|
1: bbbb |
|
2: z |
|
3: z |
|
aaaabbbbzzzz\O5 |
|
0: aaaabbbbzz |
|
1: bbbb |
|
2: z |
|
3: z |
|
|
|
/^.?abcd/IS |
/^.?abcd/IS |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
Options: anchored |
Options: anchored |
Line 3314 Capturing subpattern count = 0
|
Line 3236 Capturing subpattern count = 0
|
No options |
No options |
First char = '8' |
First char = '8' |
Need char = 'X' |
Need char = 'X' |
|
Max lookbehind = 1 |
|
|
|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ |
|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Line 3327 Capturing subpattern count = 0
|
Line 3250 Capturing subpattern count = 0
|
No options |
No options |
First char = '$' |
First char = '$' |
Need char = 'X' |
Need char = 'X' |
|
Max lookbehind = 1 |
|
|
/(.*)\d+\1/I |
/(.*)\d+\1/I |
Capturing subpattern count = 1 |
Capturing subpattern count = 1 |
Line 3842 Capturing subpattern count = 1
|
Line 3766 Capturing subpattern count = 1
|
No options |
No options |
First char = 'x' |
First char = 'x' |
Need char = 'z' |
Need char = 'z' |
|
Max lookbehind = 3 |
abcxyz\C+ |
abcxyz\C+ |
Callout 0: last capture = 1 |
Callout 0: last capture = 1 |
0: <unset> |
0: <unset> |
Line 5489 Capturing subpattern count = 0
|
Line 5414 Capturing subpattern count = 0
|
No options |
No options |
No first char |
No first char |
No need char |
No need char |
|
Max lookbehind = 1 |
ab cd\>1 |
ab cd\>1 |
0: cd |
0: cd |
|
|
Line 5497 Capturing subpattern count = 0
|
Line 5423 Capturing subpattern count = 0
|
Options: dotall |
Options: dotall |
No first char |
No first char |
No need char |
No need char |
|
Max lookbehind = 1 |
ab cd\>1 |
ab cd\>1 |
0: cd |
0: cd |
|
|
Line 5854 No match
|
Line 5781 No match
|
line one\nthis is a line\nbreak in the second line |
line one\nthis is a line\nbreak in the second line |
No match |
No match |
|
|
/ab.cd/P |
|
ab-cd |
|
0: ab-cd |
|
ab=cd |
|
0: ab=cd |
|
** Failers |
|
No match: POSIX code 17: match failed |
|
ab\ncd |
|
No match: POSIX code 17: match failed |
|
|
|
/ab.cd/Ps |
|
ab-cd |
|
0: ab-cd |
|
ab=cd |
|
0: ab=cd |
|
ab\ncd |
|
0: ab\x0acd |
|
|
|
/(?i)(?-i)AbCd/I |
/(?i)(?-i)AbCd/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
Line 6164 No need char
|
Line 6073 No need char
|
((this)) |
((this)) |
0: ((this)) |
0: ((this)) |
|
|
/a(b)c/PN |
|
abc |
|
Matched with REG_NOSUB |
|
|
|
/a(?P<name>b)c/PN |
|
abc |
|
Matched with REG_NOSUB |
|
|
|
/\x{100}/I |
|
Failed: character value in \x{...} sequence is too large at offset 6 |
|
|
|
/\x{0000ff}/I |
/\x{0000ff}/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
First char = 255 | First char = \xff |
No need char |
No need char |
|
|
/^((?P<A>a1)|(?P<A>a2)b)/I |
/^((?P<A>a1)|(?P<A>a2)b)/I |
Line 6288 no parentheses with name "Z"
|
Line 6186 no parentheses with name "Z"
|
0: a1 |
0: a1 |
1: a1 |
1: a1 |
2: a1 |
2: a1 |
copy substring Z failed -7 | get substring Z failed -7 |
G a1 (2) A |
G a1 (2) A |
|
|
/^(?P<A>a)(?P<A>b)/IJ |
/^(?P<A>a)(?P<A>b)/IJ |
Line 6320 No need char
|
Line 6218 No need char
|
G a (1) A |
G a (1) A |
cd\GA |
cd\GA |
0: cd |
0: cd |
copy substring A failed -7 | get substring A failed -7 |
|
|
/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ |
/^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ |
Capturing subpattern count = 4 |
Capturing subpattern count = 4 |
Line 6488 No need char
|
Line 6386 No need char
|
9: |
9: |
10: Y |
10: Y |
|
|
/\777/I |
|
Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3 |
|
|
|
/\s*,\s*/IS |
/\s*,\s*/IS |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
Line 7551 Matched, but too many substrings
|
Line 7446 Matched, but too many substrings
|
/[^a]+a/BZi |
/[^a]+a/BZi |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Bra |
Bra |
/i [^A]++ | /i [^a]++ |
/i a |
/i a |
Ket |
Ket |
End |
End |
Line 7560 Matched, but too many substrings
|
Line 7455 Matched, but too many substrings
|
/[^a]+A/BZi |
/[^a]+A/BZi |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Bra |
Bra |
/i [^A]++ | /i [^a]++ |
/i A |
/i A |
Ket |
Ket |
End |
End |
Line 8506 Failed: syntax error in subpattern name (missing termi
|
Line 8401 Failed: syntax error in subpattern name (missing termi
|
3: <unset> |
3: <unset> |
4: x |
4: x |
|
|
/[\h]/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x09 \xa0] |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
>\x09< |
|
0: \x09 |
|
|
|
/[\h]+/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x09 \xa0]+ |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
>\x09\x20\xa0< |
|
0: \x09 \xa0 |
|
|
|
/[\v]/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x0a-\x0d\x85] |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
|
|
/[\H]/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
|
|
/[^\h]/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg) |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
|
|
/[\V]/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x00-\x09\x0e-\x84\x86-\xff] |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
|
|
/[\x0a\V]/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
[\x00-\x0a\x0e-\x84\x86-\xff] |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
|
|
/\H++X/BZ |
/\H++X/BZ |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Bra |
Bra |
Line 9478 No options
|
Line 9313 No options
|
First char at start or follows newline |
First char at start or follows newline |
No need char |
No need char |
|
|
/a?|b?/P |
|
abc |
|
0: a |
|
** Failers |
|
0: |
|
ddd\N |
|
No match: POSIX code 17: match failed |
|
|
|
/xyz/C |
/xyz/C |
xyz |
xyz |
--->xyz |
--->xyz |
Line 9880 Partial match: the cat
|
Line 9707 Partial match: the cat
|
abc\P\P |
abc\P\P |
0: abc |
0: abc |
|
|
/\w+A/P |
|
CDAAAAB |
|
0: CDAAAA |
|
|
|
/\w+A/PU |
|
CDAAAAB |
|
0: CDA |
|
|
|
/abc\K123/ |
/abc\K123/ |
xyzabc123pqr |
xyzabc123pqr |
0: 123 |
0: 123 |
Line 10280 Need char = ':'
|
Line 10099 Need char = ':'
|
Subject length lower bound = 22 |
Subject length lower bound = 22 |
No set of starting bytes |
No set of starting bytes |
|
|
/ (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* # optional leading comment |
|
(?: (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| |
|
" (?: # opening quote... |
|
[^\\\x80-\xff\n\015"] # Anything except backslash and quote |
|
| # or |
|
\\ [^\x80-\xff] # Escaped something (something != CR) |
|
)* " # closing quote |
|
) # initial word |
|
(?: (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* \. (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| |
|
" (?: # opening quote... |
|
[^\\\x80-\xff\n\015"] # Anything except backslash and quote |
|
| # or |
|
\\ [^\x80-\xff] # Escaped something (something != CR) |
|
)* " # closing quote |
|
) )* # further okay, if led by a period |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* @ (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # initial subdomain |
|
(?: # |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* \. # if led by a period... |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # ...further okay |
|
)* |
|
# address |
|
| # or |
|
(?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| |
|
" (?: # opening quote... |
|
[^\\\x80-\xff\n\015"] # Anything except backslash and quote |
|
| # or |
|
\\ [^\x80-\xff] # Escaped something (something != CR) |
|
)* " # closing quote |
|
) # one word, optionally followed by.... |
|
(?: |
|
[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or... |
|
\( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) | # comments, or... |
|
|
|
" (?: # opening quote... |
|
[^\\\x80-\xff\n\015"] # Anything except backslash and quote |
|
| # or |
|
\\ [^\x80-\xff] # Escaped something (something != CR) |
|
)* " # closing quote |
|
# quoted strings |
|
)* |
|
< (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* # leading < |
|
(?: @ (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # initial subdomain |
|
(?: # |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* \. # if led by a period... |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # ...further okay |
|
)* |
|
|
|
(?: (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* , (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* @ (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # initial subdomain |
|
(?: # |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* \. # if led by a period... |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # ...further okay |
|
)* |
|
)* # further okay, if led by comma |
|
: # closing colon |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* )? # optional route |
|
(?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| |
|
" (?: # opening quote... |
|
[^\\\x80-\xff\n\015"] # Anything except backslash and quote |
|
| # or |
|
\\ [^\x80-\xff] # Escaped something (something != CR) |
|
)* " # closing quote |
|
) # initial word |
|
(?: (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* \. (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| |
|
" (?: # opening quote... |
|
[^\\\x80-\xff\n\015"] # Anything except backslash and quote |
|
| # or |
|
\\ [^\x80-\xff] # Escaped something (something != CR) |
|
)* " # closing quote |
|
) )* # further okay, if led by a period |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* @ (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # initial subdomain |
|
(?: # |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* \. # if led by a period... |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* (?: |
|
[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters... |
|
(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom |
|
| \[ # [ |
|
(?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff |
|
\] # ] |
|
) # ...further okay |
|
)* |
|
# address spec |
|
(?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* > # trailing > |
|
# name and address |
|
) (?: [\040\t] | \( |
|
(?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )* |
|
\) )* # optional trailing comment |
|
/xSI |
|
Capturing subpattern count = 0 |
|
Contains explicit CR or LF match |
|
Options: extended |
|
No first char |
|
No need char |
|
Subject length lower bound = 3 |
|
Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8 |
|
9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e |
|
f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f |
|
|
|
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS |
/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS |
Capturing subpattern count = 11 |
Capturing subpattern count = 11 |
Options: caseless dotall |
Options: caseless dotall |
Line 11140 No match
|
Line 10755 No match
|
/\s*\R/BZ |
/\s*\R/BZ |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Bra |
Bra |
\s*+ | \s* |
\R |
\R |
Ket |
Ket |
End |
End |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
|
\x20\x0a |
|
0: \x0a |
|
\x20\x0d |
|
0: \x0d |
|
\x20\x0d\x0a |
|
0: \x0d\x0a |
|
|
|
/\S*\R/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
\S*+ |
|
\R |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
a\x0a |
|
0: a\x0a |
|
|
|
/X\h*\R/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
X |
|
\h*+ |
|
\R |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
X\x20\x0a |
|
0: X \x0a |
|
|
|
/X\H*\R/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
X |
|
\H* |
|
\R |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
X\x0d\x0a |
|
0: X\x0d\x0a |
|
|
|
/X\H+\R/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
X |
|
\H+ |
|
\R |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
X\x0d\x0a |
|
0: X\x0d\x0a |
|
|
|
/X\H++\R/BZ |
|
------------------------------------------------------------------ |
|
Bra |
|
X |
|
\H++ |
|
\R |
|
Ket |
|
End |
|
------------------------------------------------------------------ |
|
X\x0d\x0a |
|
No match |
|
|
/-- Perl treats this one differently, not failing the second string. I believe |
/-- Perl treats this one differently, not failing the second string. I believe |
that is a bug in Perl. --/ |
that is a bug in Perl. --/ |
|
|
Line 12002 Capturing subpattern count = 0
|
Line 11682 Capturing subpattern count = 0
|
No options |
No options |
First char = 't' |
First char = 't' |
Need char = 't' |
Need char = 't' |
|
Max lookbehind = 1 |
Subject length lower bound = 18 |
Subject length lower bound = 18 |
No set of starting bytes |
No set of starting bytes |
|
|
Line 12010 Capturing subpattern count = 0
|
Line 11691 Capturing subpattern count = 0
|
No options |
No options |
No first char |
No first char |
No need char |
No need char |
|
Max lookbehind = 1 |
Subject length lower bound = 8 |
Subject length lower bound = 8 |
Starting byte set: < o t u |
Starting byte set: < o t u |
|
|
Line 12376 No match, mark = m
|
Line 12058 No match, mark = m
|
/^a(*:X)bcde/K |
/^a(*:X)bcde/K |
abc\P |
abc\P |
Partial match, mark=X: abc |
Partial match, mark=X: abc |
|
|
|
/-- These are here because Perl doesn't return a mark, except for the first --/ |
|
|
|
/(?=(*:x))(q|)/K+ |
|
abc |
|
0: |
|
0+ abc |
|
1: |
|
MK: x |
|
|
|
/(?=(*:x))((*:y)q|)/K+ |
|
abc |
|
0: |
|
0+ abc |
|
1: |
|
MK: x |
|
|
|
/(?=(*:x))(?:(*:y)q|)/K+ |
|
abc |
|
0: |
|
0+ abc |
|
MK: x |
|
|
|
/(?=(*:x))(?>(*:y)q|)/K+ |
|
abc |
|
0: |
|
0+ abc |
|
MK: x |
|
|
|
/(?=a(*:x))(?!a(*:y)c)/K+ |
|
ab |
|
0: |
|
0+ ab |
|
MK: x |
|
|
|
/(?=a(*:x))(?=a(*:y)c|)/K+ |
|
ab |
|
0: |
|
0+ ab |
|
MK: x |
|
|
|
/(..)\1/ |
|
ab\P |
|
Partial match: ab |
|
aba\P |
|
Partial match: aba |
|
abab\P |
|
0: abab |
|
1: ab |
|
|
|
/(..)\1/i |
|
ab\P |
|
Partial match: ab |
|
abA\P |
|
Partial match: abA |
|
aBAb\P |
|
0: aBAb |
|
1: aB |
|
|
|
/(..)\1{2,}/ |
|
ab\P |
|
Partial match: ab |
|
aba\P |
|
Partial match: aba |
|
abab\P |
|
Partial match: abab |
|
ababa\P |
|
Partial match: ababa |
|
ababab\P |
|
0: ababab |
|
1: ab |
|
ababab\P\P |
|
Partial match: ababab |
|
abababa\P |
|
0: ababab |
|
1: ab |
|
abababa\P\P |
|
Partial match: abababa |
|
|
|
/(..)\1{2,}/i |
|
ab\P |
|
Partial match: ab |
|
aBa\P |
|
Partial match: aBa |
|
aBAb\P |
|
Partial match: aBAb |
|
AbaBA\P |
|
Partial match: AbaBA |
|
abABAb\P |
|
0: abABAb |
|
1: ab |
|
aBAbaB\P\P |
|
Partial match: aBAbaB |
|
abABabA\P |
|
0: abABab |
|
1: ab |
|
abaBABa\P\P |
|
Partial match: abaBABa |
|
|
|
/(..)\1{2,}?x/i |
|
ab\P |
|
Partial match: ab |
|
abA\P |
|
Partial match: abA |
|
aBAb\P |
|
Partial match: aBAb |
|
abaBA\P |
|
Partial match: abaBA |
|
abAbaB\P |
|
Partial match: abAbaB |
|
abaBabA\P |
|
Partial match: abaBabA |
|
abAbABaBx\P |
|
0: abAbABaBx |
|
1: ab |
|
|
|
/^(..)\1/ |
|
aba\P |
|
Partial match: aba |
|
|
|
/^(..)\1{2,3}x/ |
|
aba\P |
|
Partial match: aba |
|
ababa\P |
|
Partial match: ababa |
|
ababa\P\P |
|
Partial match: ababa |
|
abababx |
|
0: abababx |
|
1: ab |
|
ababababx |
|
0: ababababx |
|
1: ab |
|
|
|
/^(..)\1{2,3}?x/ |
|
aba\P |
|
Partial match: aba |
|
ababa\P |
|
Partial match: ababa |
|
ababa\P\P |
|
Partial match: ababa |
|
abababx |
|
0: abababx |
|
1: ab |
|
ababababx |
|
0: ababababx |
|
1: ab |
|
|
|
/^(..)(\1{2,3})ab/ |
|
abababab |
|
0: abababab |
|
1: ab |
|
2: abab |
|
|
|
/^\R/ |
|
\r\P |
|
0: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
|
|
/^\R{2,3}x/ |
|
\r\P |
|
Partial match: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
\r\r\P |
|
Partial match: \x0d\x0d |
|
\r\r\P\P |
|
Partial match: \x0d\x0d |
|
\r\r\r\P |
|
Partial match: \x0d\x0d\x0d |
|
\r\r\r\P\P |
|
Partial match: \x0d\x0d\x0d |
|
\r\rx |
|
0: \x0d\x0dx |
|
\r\r\rx |
|
0: \x0d\x0d\x0dx |
|
|
|
/^\R{2,3}?x/ |
|
\r\P |
|
Partial match: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
\r\r\P |
|
Partial match: \x0d\x0d |
|
\r\r\P\P |
|
Partial match: \x0d\x0d |
|
\r\r\r\P |
|
Partial match: \x0d\x0d\x0d |
|
\r\r\r\P\P |
|
Partial match: \x0d\x0d\x0d |
|
\r\rx |
|
0: \x0d\x0dx |
|
\r\r\rx |
|
0: \x0d\x0d\x0dx |
|
|
|
/^\R?x/ |
|
\r\P |
|
Partial match: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
x |
|
0: x |
|
\rx |
|
0: \x0dx |
|
|
|
/^\R+x/ |
|
\r\P |
|
Partial match: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
\r\n\P |
|
Partial match: \x0d\x0a |
|
\r\n\P\P |
|
Partial match: \x0d\x0a |
|
\rx |
|
0: \x0dx |
|
|
|
/^a$/<CRLF> |
|
a\r\P |
|
Partial match: a\x0d |
|
a\r\P\P |
|
Partial match: a\x0d |
|
|
|
/^a$/m<CRLF> |
|
a\r\P |
|
Partial match: a\x0d |
|
a\r\P\P |
|
Partial match: a\x0d |
|
|
|
/^(a$|a\r)/<CRLF> |
|
a\r\P |
|
0: a\x0d |
|
1: a\x0d |
|
a\r\P\P |
|
Partial match: a\x0d |
|
|
|
/^(a$|a\r)/m<CRLF> |
|
a\r\P |
|
0: a\x0d |
|
1: a\x0d |
|
a\r\P\P |
|
Partial match: a\x0d |
|
|
|
/./<CRLF> |
|
\r\P |
|
0: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
|
|
/.{2,3}/<CRLF> |
|
\r\P |
|
Partial match: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
\r\r\P |
|
0: \x0d\x0d |
|
\r\r\P\P |
|
Partial match: \x0d\x0d |
|
\r\r\r\P |
|
0: \x0d\x0d\x0d |
|
\r\r\r\P\P |
|
Partial match: \x0d\x0d\x0d |
|
|
|
/.{2,3}?/<CRLF> |
|
\r\P |
|
Partial match: \x0d |
|
\r\P\P |
|
Partial match: \x0d |
|
\r\r\P |
|
0: \x0d\x0d |
|
\r\r\P\P |
|
Partial match: \x0d\x0d |
|
\r\r\r\P |
|
0: \x0d\x0d |
|
\r\r\r\P\P |
|
0: \x0d\x0d |
|
|
|
/-- These two are here because Perl does not match: it seems to allow the |
|
COMMIT to escape from the assertion. --/ |
|
|
|
/(?=a(*COMMIT)b|ac)ac|ac/ |
|
ac |
|
0: ac |
|
|
|
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x |
|
ac |
|
0: ac |
|
1: <unset> |
|
2: a |
|
|
|
"AB(C(D))(E(F))?(?(?=\2)(?=\4))" |
|
ABCDGHI\O03 |
|
Matched, but too many substrings |
|
0: ABCD |
|
|
|
/-- This one is here because Perl does not confine the *COMMIT to the |
|
assertion, and therefore fails the entire subroutine call. --/ |
|
|
|
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/ |
|
ac |
|
0: ac |
|
|
/-- End of testinput2 --/ |
/-- End of testinput2 --/ |