version 1.1.1.3, 2012/10/09 09:19:18
|
version 1.1.1.4, 2013/07/22 08:25:57
|
Line 448 Need char = '='
|
Line 448 Need char = '='
|
|
|
/(?<!bar|cattle)foo/I |
/(?<!bar|cattle)foo/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 6 |
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 631 No match
|
Line 631 No match
|
|
|
/\Aabc/Im |
/\Aabc/Im |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
Options: anchored multiline |
Options: anchored multiline |
No first char |
No first char |
No need char |
No need char |
Line 656 No need char
|
Line 657 No need char
|
|
|
/(?<=foo)[ab]/IS |
/(?<=foo)[ab]/IS |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 3 |
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 |
|
|
/(?<!foo)(alpha|omega)/IS |
/(?<!foo)(alpha|omega)/IS |
Capturing subpattern count = 1 |
Capturing subpattern count = 1 |
|
Max lookbehind = 3 |
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 682 Starting byte set: a b
|
Line 683 Starting byte set: a b
|
|
|
/(?<=foo\n)^bar/Im |
/(?<=foo\n)^bar/Im |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 4 |
Contains explicit CR or LF match |
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 700 No match
|
Line 701 No match
|
|
|
/^(?<=foo\n)bar/Im |
/^(?<=foo\n)bar/Im |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 4 |
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 = 'r' |
Need char = 'r' |
Max lookbehind = 4 |
|
foo\nbarbar |
foo\nbarbar |
0: bar |
0: bar |
***Failers |
***Failers |
Line 743 Failed: lookbehind assertion is not fixed length at of
|
Line 744 Failed: lookbehind assertion is not fixed length at of
|
|
|
/(?<=bullock|donkey)-cart/I |
/(?<=bullock|donkey)-cart/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 7 |
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 760 No match
|
Line 761 No match
|
|
|
/(?<=ab(?i)x|y|z)/I |
/(?<=ab(?i)x|y|z)/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 3 |
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 |
|
Max lookbehind = 4 |
No options |
No options |
First char at start or follows newline | No first char |
No need char |
No need char |
Max lookbehind = 4 |
|
alphabetabcd |
alphabetabcd |
0: alphabetabcd |
0: alphabetabcd |
1: abcd |
1: abcd |
Line 781 Max lookbehind = 4
|
Line 782 Max lookbehind = 4
|
|
|
/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I |
/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 4 |
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 810 No match
|
Line 811 No match
|
|
|
/(?<!(foo)a)bar/I |
/(?<!(foo)a)bar/I |
Capturing subpattern count = 1 |
Capturing subpattern count = 1 |
|
Max lookbehind = 4 |
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 823 No match
|
Line 824 No match
|
fooabar |
fooabar |
No match |
No match |
|
|
/This one is here because Perl 5.005_02 doesn't fail it/I |
|
Capturing subpattern count = 0 |
|
No options |
|
First char = 'T' |
|
Need char = 't' |
|
|
|
/^(a)?(?(1)a|b)+$/I |
|
Capturing subpattern count = 1 |
|
Options: anchored |
|
No first char |
|
No need char |
|
*** Failers |
|
No match |
|
a |
|
No match |
|
|
|
/This one is here because Perl behaves differently; see also the following/I |
/This one is here because Perl behaves differently; see also the following/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
Line 1212 No need char
|
Line 1197 No need char
|
|
|
/\Biss\B/I+ |
/\Biss\B/I+ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 1233 Need char = 's'
|
Line 1218 Need char = 's'
|
|
|
/\Biss\B/IG+ |
/\Biss\B/IG+ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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/Ig+ |
/\Biss\B/Ig+ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 1259 No match
|
Line 1244 No match
|
|
|
/(?<=[Ms])iss/Ig+ |
/(?<=[Ms])iss/Ig+ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 1271 Max lookbehind = 1
|
Line 1256 Max lookbehind = 1
|
|
|
/(?<=[Ms])iss/IG+ |
/(?<=[Ms])iss/IG+ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 1452 Need char = 'r'
|
Line 1437 Need char = 'r'
|
|
|
/...(?<=abc)/I |
/...(?<=abc)/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 3 |
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 3233 No match
|
Line 3218 No match
|
End |
End |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 3247 Max lookbehind = 1
|
Line 3232 Max lookbehind = 1
|
End |
End |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 3763 Callout 2: last capture = -1
|
Line 3748 Callout 2: last capture = -1
|
|
|
/(?<=(abc)(?C))xyz/I |
/(?<=(abc)(?C))xyz/I |
Capturing subpattern count = 1 |
Capturing subpattern count = 1 |
|
Max lookbehind = 3 |
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 4363 Minimum match() recursion limit = 6
|
Line 4348 Minimum match() recursion limit = 6
|
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |
aaaaaaaaaaaaaz\M |
aaaaaaaaaaaaaz\M |
Minimum match() limit = 32768 |
Minimum match() limit = 32768 |
Minimum match() recursion limit = 42 | Minimum match() recursion limit = 29 |
No match |
No match |
|
|
/(aaa(?C1)bbb|ab)/I |
/(aaa(?C1)bbb|ab)/I |
Line 5411 Need char = '3'
|
Line 5396 Need char = '3'
|
|
|
/\b.*/I |
/\b.*/I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 |
|
|
/\b.*/Is |
/\b.*/Is |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 8803 No match
|
Line 8788 No match
|
1: \x0a |
1: \x0a |
|
|
/a(*CR)b/ |
/a(*CR)b/ |
Failed: (*VERB) not recognized at offset 5 | Failed: (*VERB) not recognized or malformed at offset 5 |
|
|
/(*CR)a.b/ |
/(*CR)a.b/ |
a\nb |
a\nb |
Line 9276 No need char
|
Line 9261 No need char
|
+7 ^ ^ b |
+7 ^ ^ b |
+7 ^^ b |
+7 ^^ b |
+7 ^ b |
+7 ^ b |
|
+11 ^ ^ |
+12 ^ ) |
+12 ^ ) |
+13 ^ |
+13 ^ |
0: |
0: |
Line 9406 No match
|
Line 9392 No match
|
+3 ^ ^ (?(?=[a])[^"]) |
+3 ^ ^ (?(?=[a])[^"]) |
+5 ^ ^ (?=[a]) |
+5 ^ ^ (?=[a]) |
+8 ^ ^ [a] |
+8 ^ ^ [a] |
|
+17 ^ ^ | |
+21 ^ ^ " |
+21 ^ ^ " |
+18 ^ ^ b |
+18 ^ ^ b |
+19 ^ ^ ) |
+19 ^ ^ ) |
+3 ^ ^ (?(?=[a])[^"]) |
+3 ^ ^ (?(?=[a])[^"]) |
+5 ^ ^ (?=[a]) |
+5 ^ ^ (?=[a]) |
+8 ^ ^ [a] |
+8 ^ ^ [a] |
|
+17 ^ ^ | |
+21 ^ ^ " |
+21 ^ ^ " |
+22 ^ ^ $ |
+22 ^ ^ $ |
+23 ^ ^ |
+23 ^ ^ |
Line 9719 Partial match: abc12
|
Line 9707 Partial match: abc12
|
xyzabc123pqr |
xyzabc123pqr |
0: 123 |
0: 123 |
xyzabc12\P |
xyzabc12\P |
Partial match: abc12 | Partial match at offset 6: abc12 |
xyzabc12\P\P |
xyzabc12\P\P |
Partial match: abc12 | Partial match at offset 6: abc12 |
|
|
/\babc\b/ |
/\babc\b/ |
+++abc+++ |
+++abc+++ |
0: abc |
0: abc |
+++ab\P |
+++ab\P |
Partial match: +ab | Partial match at offset 3: +ab |
+++ab\P\P |
+++ab\P\P |
Partial match: +ab | Partial match at offset 3: +ab |
|
|
/(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ |
/(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Line 10110 No set of starting bytes
|
Line 10098 No set of starting bytes
|
"(?>.*/)foo"SI |
"(?>.*/)foo"SI |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
First char at start or follows newline | No first char |
Need char = 'o' |
Need char = 'o' |
Subject length lower bound = 4 |
Subject length lower bound = 4 |
No set of starting bytes |
No set of starting bytes |
Line 10353 Partial match: abca
|
Line 10341 Partial match: abca
|
xxxxabcde\P\P |
xxxxabcde\P\P |
Partial match: abcde |
Partial match: abcde |
|
|
/-- This is not in the Perl >= 5.10 test because Perl seems currently to be | /-- This is not in the Perl-compatible test because Perl seems currently to be |
broken and not behaving as specified in that it *does* bumpalong after |
broken and not behaving as specified in that it *does* bumpalong after |
hitting (*COMMIT). --/ |
hitting (*COMMIT). --/ |
|
|
Line 10549 No match
|
Line 10537 No match
|
End |
End |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
|
|
/ -- The first four of these are not in the Perl >= 5.10 test because Perl | / -- This one is here because Perl gives the match as "b" rather than "ab". I |
documents that the use of \K in assertions is "not well defined". The | |
last is here because Perl gives the match as "b" rather than "ab". I | |
believe this to be a Perl bug. --/ |
believe this to be a Perl bug. --/ |
|
|
/(?=a\Kb)ab/ |
|
ab |
|
0: b |
|
|
|
/(?!a\Kb)ac/ |
|
ac |
|
0: ac |
|
|
|
/^abc(?<=b\Kc)d/ |
|
abcd |
|
0: cd |
|
|
|
/^abc(?<!b\Kq)d/ |
|
abcd |
|
0: abcd |
|
|
|
/(?>a\Kb)z|(ab)/ |
/(?>a\Kb)z|(ab)/ |
ab |
ab |
0: ab |
0: ab |
1: ab |
1: ab |
|
|
/----------------------/ |
|
|
|
/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ |
/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ |
Failed: recursive call could loop indefinitely at offset 31 |
Failed: recursive call could loop indefinitely at offset 31 |
|
|
Line 10596 Failed: an argument is not allowed for (*ACCEPT), (*FA
|
Line 10564 Failed: an argument is not allowed for (*ACCEPT), (*FA
|
ACABX |
ACABX |
No match |
No match |
|
|
/--- These should be different, but in Perl 5.11 are not, which I think | /--- These should be different, but in Perl they are not, which I think |
is a bug in Perl. ---/ |
is a bug in Perl. ---/ |
|
|
/A(*THEN)B|A(*THEN)C/K |
/A(*THEN)B|A(*THEN)C/K |
Line 10607 No match
|
Line 10575 No match
|
AC |
AC |
No match |
No match |
|
|
/--- This should fail; the SKIP advances by one, but when we get to AC, the |
|
PRUNE kills it. Perl behaves differently. ---/ |
|
|
|
/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK |
|
AAAC |
|
No match, mark = A |
|
|
|
/--- Mark names can be duplicated. Perl doesn't give a mark for this one, |
/--- Mark names can be duplicated. Perl doesn't give a mark for this one, |
though PCRE does. ---/ |
though PCRE does. ---/ |
|
|
Line 10647 No match
|
Line 10608 No match
|
abcccd |
abcccd |
No match |
No match |
|
|
/--- Perl 5.11 gets some of these wrong ---/ | /--- Perl gets some of these wrong ---/ |
|
|
/(?>.(*ACCEPT))*?5/ |
/(?>.(*ACCEPT))*?5/ |
abcde |
abcde |
Line 10826 No match
|
Line 10787 No match
|
X\x0d\x0a |
X\x0d\x0a |
No match |
No match |
|
|
/-- Perl treats this one differently, not failing the second string. I believe |
|
that is a bug in Perl. --/ |
|
|
|
/^((abc|abcx)(*THEN)y|abcd)/ |
|
abcd |
|
0: abcd |
|
1: abcd |
|
*** Failers |
|
No match |
|
abcxy |
|
No match |
|
|
|
/(?<=abc)def/ |
/(?<=abc)def/ |
abc\P\P |
abc\P\P |
Partial match: abc | Partial match at offset 3: abc |
|
|
/abc$/ |
/abc$/ |
abc |
abc |
Line 11319 No match
|
Line 11268 No match
|
|
|
/(a)b|ac/++SS |
/(a)b|ac/++SS |
ac\O3 |
ac\O3 |
Matched, but too many substrings |
|
0: ac |
0: ac |
0+ |
0+ |
|
|
Line 11679 No match
|
Line 11627 No match
|
|
|
/\btype\b\W*?\btext\b\W*?\bjavascript\b/IS |
/\btype\b\W*?\btext\b\W*?\bjavascript\b/IS |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 |
|
|
/\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS |
/\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
|
Max lookbehind = 1 |
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 |
|
|
/a(*SKIP)c|b(*ACCEPT)|/+SI | /a(*SKIP)c|b(*ACCEPT)|/+S!I |
Capturing subpattern count = 0 |
Capturing subpattern count = 0 |
No options |
No options |
No first char |
No first char |
No need char |
No need char |
Study returned NULL | Subject length lower bound = -1 |
| No set of starting bytes |
a |
a |
0: |
0: |
0+ |
0+ |
Line 11761 Minimum match() limit = 86
|
Line 11710 Minimum match() limit = 86
|
Minimum match() recursion limit = 45 |
Minimum match() recursion limit = 45 |
0: abbbbbbbbbbbbbbbbbbbbba |
0: abbbbbbbbbbbbbbbbbbbbba |
|
|
/-- These tests are in agreement with development Perl 5.015, which has fixed |
|
some things, but they don't all work with 5.012, so they aren't in the |
|
Perl-compatible tests. Those after the first come from Perl's own test |
|
files. --/ |
|
|
|
/^((yes|no)(*THEN)(*F))?/ |
|
yes |
|
No match |
|
|
|
/(A (.*) C? (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) C? (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) C? (*THEN) | A D) \s* z/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) (?:C|) (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) C{0,6} (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x |
|
AbcdCEBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) (CE){0,6} (*THEN) | A D) z/x |
|
AbcdCEBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/(A (.*) (CE*){0,6} (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
No match |
|
|
|
/-----------------------------------------------/ |
|
|
|
/^(?>a+)(?>(z+))\w/BZ |
/^(?>a+)(?>(z+))\w/BZ |
------------------------------------------------------------------ |
------------------------------------------------------------------ |
Bra |
Bra |
Line 12336 Partial match: \x0d\x0d
|
Line 12226 Partial match: \x0d\x0d
|
\r\r\r\P\P |
\r\r\r\P\P |
0: \x0d\x0d |
0: \x0d\x0d |
|
|
/-- These two are here because Perl does not match: it seems to allow the | "AB(C(D))(E(F))?(?(?=\2)(?=\4))" |
COMMIT to escape from the assertion. --/ | ABCDGHI\O03 |
| Matched, but too many substrings |
| 0: ABCD |
| |
| /-- These are all run as real matches in test 1; here we are just checking the |
| settings of the anchored and startline bits. --/ |
|
|
/(?=a(*COMMIT)b|ac)ac|ac/ | /(?>.*?a)(?<=ba)/I |
ac | Capturing subpattern count = 0 |
0: ac | Max lookbehind = 2 |
| No options |
| No first char |
| Need char = 'a' |
|
|
/(?=a(*COMMIT)b|(ac)) ac | (a)c/x | /(?:.*?a)(?<=ba)/I |
ac | Capturing subpattern count = 0 |
0: ac | Max lookbehind = 2 |
| No options |
| First char at start or follows newline |
| Need char = 'a' |
| |
| /.*?a(*PRUNE)b/I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| Need char = 'b' |
| |
| /.*?a(*PRUNE)b/sI |
| Capturing subpattern count = 0 |
| Options: dotall |
| No first char |
| Need char = 'b' |
| |
| /^a(*PRUNE)b/sI |
| Capturing subpattern count = 0 |
| Options: anchored dotall |
| No first char |
| No need char |
| |
| /.*?a(*SKIP)b/I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| Need char = 'b' |
| |
| /(?>.*?a)b/sI |
| Capturing subpattern count = 0 |
| Options: dotall |
| No first char |
| Need char = 'b' |
| |
| /(?>.*?a)b/I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| Need char = 'b' |
| |
| /(?>^a)b/sI |
| Capturing subpattern count = 0 |
| Options: anchored dotall |
| No first char |
| No need char |
| |
| /(?>.*?)(?<=(abcd)|(wxyz))/I |
| Capturing subpattern count = 2 |
| Max lookbehind = 4 |
| No options |
| No first char |
| No need char |
| |
| /(?>.*)(?<=(abcd)|(wxyz))/I |
| Capturing subpattern count = 2 |
| Max lookbehind = 4 |
| No options |
| No first char |
| No need char |
| |
| "(?>.*)foo"I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| Need char = 'o' |
| |
| "(?>.*?)foo"I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| Need char = 'o' |
| |
| /(?>^abc)/mI |
| Capturing subpattern count = 0 |
| Options: multiline |
| First char at start or follows newline |
| Need char = 'c' |
| |
| /(?>.*abc)/mI |
| Capturing subpattern count = 0 |
| Options: multiline |
| No first char |
| Need char = 'c' |
| |
| /(?:.*abc)/mI |
| Capturing subpattern count = 0 |
| Options: multiline |
| First char at start or follows newline |
| Need char = 'c' |
| |
| /-- Check PCRE_STUDY_EXTRA_NEEDED --/ |
| |
| /.?/S-I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| No need char |
| Study returned NULL |
| |
| /.?/S!I |
| Capturing subpattern count = 0 |
| No options |
| No first char |
| No need char |
| Subject length lower bound = -1 |
| No set of starting bytes |
| |
| /(?:(a)+(?C1)bb|aa(?C2)b)/ |
| aab\C+ |
| Callout 1: last capture = 1 |
| 0: <unset> |
| 1: a |
| --->aab |
| ^ ^ b |
| Callout 1: last capture = 1 |
| 0: <unset> |
| 1: a |
| --->aab |
| ^^ b |
| Callout 2: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^ ^ b |
| 0: aab |
| |
| /(?:(a)++(?C1)bb|aa(?C2)b)/ |
| aab\C+ |
| Callout 1: last capture = 1 |
| 0: <unset> |
| 1: a |
| --->aab |
| ^ ^ b |
| Callout 2: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^ ^ b |
| 0: aab |
| |
| /(?:(?>(a))(?C1)bb|aa(?C2)b)/ |
| aab\C+ |
| Callout 1: last capture = 1 |
| 0: <unset> |
| 1: a |
| --->aab |
| ^^ b |
| Callout 2: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^ ^ b |
| 0: aab |
| |
| /(?:(?1)(?C1)x|ab(?C2))((a)){0}/ |
| aab\C+ |
| Callout 1: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^^ x |
| Callout 1: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^^ x |
| Callout 2: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^ ^ ) |
| 0: ab |
| |
| /(?1)(?C1)((a)(?C2)){0}/ |
| aab\C+ |
| Callout 2: last capture = 2 |
| 0: <unset> |
1: <unset> |
1: <unset> |
2: a |
2: a |
|
--->aab |
|
^^ ) |
|
Callout 1: last capture = -1 |
|
0: <unset> |
|
--->aab |
|
^^ ((a)(?C2)){0} |
|
0: a |
|
|
"AB(C(D))(E(F))?(?(?=\2)(?=\4))" | /(?:(a)+(?C1)bb|aa(?C2)b)++/ |
ABCDGHI\O03 | aab\C+ |
| Callout 1: last capture = 1 |
| 0: <unset> |
| 1: a |
| --->aab |
| ^ ^ b |
| Callout 1: last capture = 1 |
| 0: <unset> |
| 1: a |
| --->aab |
| ^^ b |
| Callout 2: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^ ^ b |
| 0: aab |
| aab\C+\O2 |
| Callout 1: last capture = 1 |
| 0: <unset> |
| --->aab |
| ^ ^ b |
| Callout 1: last capture = 1 |
| 0: <unset> |
| --->aab |
| ^^ b |
| Callout 2: last capture = -1 |
| 0: <unset> |
| --->aab |
| ^ ^ b |
| 0: aab |
| |
| /(ab)x|ab/ |
| ab\O3 |
| 0: ab |
| ab\O2 |
| 0: ab |
| |
| /(ab)/ |
| ab\O3 |
Matched, but too many substrings |
Matched, but too many substrings |
0: ABCD | 0: ab |
| ab\O2 |
| Matched, but too many substrings |
| 0: ab |
|
|
/-- This one is here because Perl does not confine the *COMMIT to the | /(?<=123)(*MARK:xx)abc/K |
assertion, and therefore fails the entire subroutine call. --/ | xxxx123a\P\P |
| Partial match at offset 7, mark=xx: 123a |
| xxxx123a\P |
| Partial match at offset 7, mark=xx: 123a |
|
|
/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/ | /123\Kabc/ |
ac | xxxx123a\P\P |
| Partial match: 123a |
| xxxx123a\P |
| Partial match: 123a |
| |
| /^(?(?=a)aa|bb)/C |
| bb |
| --->bb |
| +0 ^ ^ |
| +1 ^ (?(?=a)aa|bb) |
| +3 ^ (?=a) |
| +6 ^ a |
| +11 ^ b |
| +12 ^^ b |
| +13 ^ ^ ) |
| +14 ^ ^ |
| 0: bb |
| |
| /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/ |
| bb |
| --->bb |
| 1 ^ ^ |
| 2 ^ (?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10)) |
| 99 ^ (?=(?C3)a(?C4)) |
| 3 ^ a |
| 8 ^ b |
| 9 ^^ b |
| 10 ^ ^ ) |
| 11 ^ ^ |
| 0: bb |
| |
| /-- Perl seems to have a bug with this one --/ |
| |
| /aaaaa(*COMMIT)(*PRUNE)b|a+c/ |
| aaaaaac |
| 0: aaaac |
| |
| /-- Here are some that Perl treats differently because of the way it handles |
| backtracking verbs. --/ |
| |
| /(?!a(*COMMIT)b)ac|ad/ |
| ac |
0: ac |
0: ac |
|
ad |
|
0: ad |
|
|
|
/^(?!a(*THEN)b|ac)../ |
|
ac |
|
No match |
|
ad |
|
0: ad |
|
|
|
/^(?=a(*THEN)b|ac)/ |
|
ac |
|
0: |
|
|
|
/\A.*?(?:a|b(*THEN)c)/ |
|
ba |
|
0: ba |
|
|
|
/\A.*?(?:a|b(*THEN)c)++/ |
|
ba |
|
0: ba |
|
|
|
/\A.*?(?:a|b(*THEN)c|d)/ |
|
ba |
|
0: ba |
|
|
|
/(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/ |
|
aac |
|
0: aac |
|
|
|
/\A.*?(a|b(*THEN)c)/ |
|
ba |
|
0: ba |
|
1: a |
|
|
|
/^(A(*THEN)B|A(*THEN)D)/ |
|
AD |
|
0: AD |
|
1: AD |
|
|
|
/(?!b(*THEN)a)bn|bnn/ |
|
bnn |
|
0: bn |
|
|
|
/(?(?=b(*SKIP)a)bn|bnn)/ |
|
bnn |
|
No match |
|
|
|
/(?=b(*THEN)a|)bn|bnn/ |
|
bnn |
|
0: bn |
|
|
|
/-------------------------/ |
|
|
|
/(*LIMIT_MATCH=12bc)abc/ |
|
Failed: (*VERB) not recognized or malformed at offset 7 |
|
|
|
/(*LIMIT_MATCH=4294967290)abc/ |
|
Failed: (*VERB) not recognized or malformed at offset 7 |
|
|
|
/(*LIMIT_RECURSION=4294967280)abc/I |
|
Capturing subpattern count = 0 |
|
Recursion limit = 4294967280 |
|
No options |
|
First char = 'a' |
|
Need char = 'c' |
|
|
|
/(a+)*zz/ |
|
aaaaaaaaaaaaaz |
|
No match |
|
aaaaaaaaaaaaaz\q3000 |
|
Error -8 (match limit exceeded) |
|
|
|
/(a+)*zz/S- |
|
aaaaaaaaaaaaaz\Q10 |
|
Error -21 (recursion limit exceeded) |
|
|
|
/(*LIMIT_MATCH=3000)(a+)*zz/I |
|
Capturing subpattern count = 1 |
|
Match limit = 3000 |
|
No options |
|
No first char |
|
Need char = 'z' |
|
aaaaaaaaaaaaaz |
|
Error -8 (match limit exceeded) |
|
aaaaaaaaaaaaaz\q60000 |
|
Error -8 (match limit exceeded) |
|
|
|
/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I |
|
Capturing subpattern count = 1 |
|
Match limit = 3000 |
|
No options |
|
No first char |
|
Need char = 'z' |
|
aaaaaaaaaaaaaz |
|
Error -8 (match limit exceeded) |
|
|
|
/(*LIMIT_MATCH=60000)(a+)*zz/I |
|
Capturing subpattern count = 1 |
|
Match limit = 60000 |
|
No options |
|
No first char |
|
Need char = 'z' |
|
aaaaaaaaaaaaaz |
|
No match |
|
aaaaaaaaaaaaaz\q3000 |
|
Error -8 (match limit exceeded) |
|
|
|
/(*LIMIT_RECURSION=10)(a+)*zz/IS- |
|
Capturing subpattern count = 1 |
|
Recursion limit = 10 |
|
No options |
|
No first char |
|
Need char = 'z' |
|
Subject length lower bound = 2 |
|
Starting byte set: a z |
|
aaaaaaaaaaaaaz |
|
Error -21 (recursion limit exceeded) |
|
aaaaaaaaaaaaaz\Q1000 |
|
Error -21 (recursion limit exceeded) |
|
|
|
/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/IS- |
|
Capturing subpattern count = 1 |
|
Recursion limit = 10 |
|
No options |
|
No first char |
|
Need char = 'z' |
|
Subject length lower bound = 2 |
|
Starting byte set: a z |
|
aaaaaaaaaaaaaz |
|
Error -21 (recursion limit exceeded) |
|
|
|
/(*LIMIT_RECURSION=1000)(a+)*zz/IS- |
|
Capturing subpattern count = 1 |
|
Recursion limit = 1000 |
|
No options |
|
No first char |
|
Need char = 'z' |
|
Subject length lower bound = 2 |
|
Starting byte set: a z |
|
aaaaaaaaaaaaaz |
|
No match |
|
aaaaaaaaaaaaaz\Q10 |
|
Error -21 (recursion limit exceeded) |
|
|
/-- End of testinput2 --/ |
/-- End of testinput2 --/ |