version 1.1.1.1, 2012/02/21 23:05:52
|
version 1.1.1.5, 2014/06/15 19:46:05
|
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. --/ |
| |
| < forbid 8W |
|
|
/-- 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 |
|
|
/abc/I |
/abc/I |
Line 147
|
Line 145
|
defabc |
defabc |
\Zdefabc |
\Zdefabc |
|
|
/abc/P |
|
abc |
|
*** Failers |
|
|
|
/^abc|def/P |
|
abcdef |
|
abcdef\B |
|
|
|
/.*((abc)$|(def))/P |
|
defabc |
|
\Zdefabc |
|
|
|
/the quick brown fox/P |
|
the quick brown fox |
|
*** Failers |
|
The Quick Brown Fox |
|
|
|
/the quick brown fox/Pi |
|
the quick brown fox |
|
The Quick Brown Fox |
|
|
|
/abc.def/P |
|
*** Failers |
|
abc\ndef |
|
|
|
/abc$/P |
|
abc |
|
abc\n |
|
|
|
/(abc)\2/P |
|
|
|
/(abc\1)/P |
|
abc |
|
|
|
/)/ |
/)/ |
|
|
/a[]b/ |
/a[]b/ |
Line 351
|
Line 315
|
*** Failers |
*** Failers |
fooabar |
fooabar |
|
|
/This one is here because Perl 5.005_02 doesn't fail it/I |
|
|
|
/^(a)?(?(1)a|b)+$/I |
|
*** Failers |
|
a |
|
|
|
/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 |
|
|
/^(a\1?){4}$/I |
/^(a\1?){4}$/I |
Line 445
|
Line 403
|
|
|
/abc/\ |
/abc/\ |
|
|
/abc/\P |
|
|
|
/abc/\i |
/abc/\i |
|
|
/(a)bc(d)/I |
/(a)bc(d)/I |
Line 494
|
Line 450
|
/\Biss\B/I+ |
/\Biss\B/I+ |
Mississippi |
Mississippi |
|
|
/\Biss\B/I+P |
|
Mississippi |
|
|
|
/iss/IG+ |
/iss/IG+ |
Mississippi |
Mississippi |
|
|
Line 632
|
Line 585
|
*** Failers |
*** Failers |
\Nabc |
\Nabc |
|
|
/a*(b+)(z)(z)/P |
|
aaaabbbbzzzz |
|
aaaabbbbzzzz\O0 |
|
aaaabbbbzzzz\O1 |
|
aaaabbbbzzzz\O2 |
|
aaaabbbbzzzz\O3 |
|
aaaabbbbzzzz\O4 |
|
aaaabbbbzzzz\O5 |
|
|
|
/^.?abcd/IS |
/^.?abcd/IS |
|
|
/\( # ( at start |
/\( # ( at start |
Line 887
|
Line 831
|
|
|
/x++/DZ |
/x++/DZ |
|
|
/x{1,3}+/DZ | /x{1,3}+/BZO |
|
|
|
/x{1,3}+/BZOi |
|
|
|
/[^x]{1,3}+/BZO |
|
|
|
/[^x]{1,3}+/BZOi |
|
|
/(x)*+/DZ |
/(x)*+/DZ |
|
|
/^(\w++|\s++)*$/I |
/^(\w++|\s++)*$/I |
Line 1494
|
Line 1444
|
** Failers |
** Failers |
line one\nthis is a line\nbreak in the second line |
line one\nthis is a line\nbreak in the second line |
|
|
/ab.cd/P |
|
ab-cd |
|
ab=cd |
|
** Failers |
|
ab\ncd |
|
|
|
/ab.cd/Ps |
|
ab-cd |
|
ab=cd |
|
ab\ncd |
|
|
|
/(?i)(?-i)AbCd/I |
/(?i)(?-i)AbCd/I |
AbCd |
AbCd |
** Failers |
** Failers |
Line 1555
|
Line 1494
|
(this) |
(this) |
((this)) |
((this)) |
|
|
/a(b)c/PN |
|
abc |
|
|
|
/a(?P<name>b)c/PN |
|
abc |
|
|
|
/\x{100}/I |
|
|
|
/\x{0000ff}/I |
/\x{0000ff}/I |
|
|
/^((?P<A>a1)|(?P<A>a2)b)/I |
/^((?P<A>a1)|(?P<A>a2)b)/I |
Line 1572
|
Line 1503
|
a2b\CA |
a2b\CA |
** Failers |
** Failers |
a1b\CZ\CA |
a1b\CZ\CA |
|
|
|
/(?|(?<a>)(?<b>)(?<a>)|(?<a>)(?<b>)(?<a>))/IJ |
|
|
/^(?P<A>a)(?P<A>b)/IJ |
/^(?P<A>a)(?P<A>b)/IJ |
ab\CA |
ab\CA |
Line 1640 a random value. /Ix
|
Line 1573 a random value. /Ix
|
/()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I |
/()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I |
bXXaYYaY |
bXXaYYaY |
|
|
/\777/I |
|
|
|
/\s*,\s*/IS |
/\s*,\s*/IS |
\x0b,\x0b |
\x0b,\x0b |
\x0c,\x0d |
\x0c,\x0d |
Line 2014 a random value. /Ix
|
Line 1945 a random value. /Ix
|
/(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x |
/(?<A> (?'B' abc (?(R) (?(R&A)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x |
abcabc1Xabc2XabcXabcabc |
abcabc1Xabc2XabcXabcabc |
|
|
/(?<A> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x | /(?<A> (?'B' abc (?(R) (?(R&C)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x |
|
|
/(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x |
|
abcabc1Xabc2XabcXabcabc |
|
|
|
/^(?(DEFINE) abc | xyz ) /x |
/^(?(DEFINE) abc | xyz ) /x |
|
|
/(?(DEFINE) abc) xyz/xI |
/(?(DEFINE) abc) xyz/xI |
Line 2134 a random value. /Ix
|
Line 2062 a random value. /Ix
|
|
|
/^(a)\g{3/ |
/^(a)\g{3/ |
|
|
/^(a)\g{4a}/ | /^(a)\g{aa}/ |
|
|
/^a.b/<lf> |
/^a.b/<lf> |
a\rb |
a\rb |
Line 2244 a random value. /Ix
|
Line 2172 a random value. /Ix
|
xabcpqrx |
xabcpqrx |
xxyzx |
xxyzx |
|
|
/[\h]/BZ |
|
>\x09< |
|
|
|
/[\h]+/BZ |
|
>\x09\x20\xa0< |
|
|
|
/[\v]/BZ |
|
|
|
/[\H]/BZ |
|
|
|
/[^\h]/BZ |
|
|
|
/[\V]/BZ |
|
|
|
/[\x0a\V]/BZ |
|
|
|
/\H++X/BZ |
/\H++X/BZ |
** Failers |
** Failers |
XXXX |
XXXX |
Line 2605 a random value. /Ix
|
Line 2517 a random value. /Ix
|
** Failers |
** Failers |
ab |
ab |
|
|
/a(?!)+b/ | /a(?!)b/BZ |
|
|
|
/(?!)?a/BZ |
|
ab |
|
|
/a(*FAIL)+b/ |
/a(*FAIL)+b/ |
|
|
/(abc|pqr|123){0}[xyz]/SI |
/(abc|pqr|123){0}[xyz]/SI |
Line 2619 a random value. /Ix
|
Line 2534 a random value. /Ix
|
|
|
/(?(?=.*b).*b|^d)/I |
/(?(?=.*b).*b|^d)/I |
|
|
/a?|b?/P |
|
abc |
|
** Failers |
|
ddd\N |
|
|
|
/xyz/C |
/xyz/C |
xyz |
xyz |
abcxyz |
abcxyz |
Line 2635 a random value. /Ix
|
Line 2545 a random value. /Ix
|
abcxypqr\Y |
abcxypqr\Y |
|
|
/(*NO_START_OPT)xyz/C |
/(*NO_START_OPT)xyz/C |
abcxyz | abcxyz |
| |
| /(*NO_AUTO_POSSESS)a+b/BZ |
|
|
/xyz/CY |
/xyz/CY |
abcxyz |
abcxyz |
Line 2815 a random value. /Ix
|
Line 2727 a random value. /Ix
|
abc\P |
abc\P |
abc\P\P |
abc\P\P |
|
|
/\w+A/P |
|
CDAAAAB |
|
|
|
/\w+A/PU |
|
CDAAAAB |
|
|
|
/abc\K123/ |
/abc\K123/ |
xyzabc123pqr |
xyzabc123pqr |
xyzabc12\P |
xyzabc12\P |
Line 2964 a random value. /Ix
|
Line 2870 a random value. /Ix
|
|
|
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI |
/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI |
|
|
/ (?: [\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 |
|
|
|
/<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 |
|
|
"(?>.*/)foo"SI |
"(?>.*/)foo"SI |
Line 3234 a random value. /Ix
|
Line 2945 a random value. /Ix
|
xxxxabcde\P |
xxxxabcde\P |
xxxxabcde\P\P |
xxxxabcde\P\P |
|
|
/-- 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 3280 a random value. /Ix
|
Line 2991 a random value. /Ix
|
|
|
/^(?&t)*(?(DEFINE)(?<t>.))$/BZ |
/^(?&t)*(?(DEFINE)(?<t>.))$/BZ |
|
|
/ -- 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 |
|
|
|
/(?!a\Kb)ac/ |
|
ac |
|
|
|
/^abc(?<=b\Kc)d/ |
|
abcd |
|
|
|
/^abc(?<!b\Kq)d/ |
|
abcd |
|
|
|
/(?>a\Kb)z|(ab)/ |
/(?>a\Kb)z|(ab)/ |
ab |
ab |
|
|
/----------------------/ |
|
|
|
/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ |
/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/ |
|
|
/abc(*MARK:)pqr/ |
/abc(*MARK:)pqr/ |
Line 3316 a random value. /Ix
|
Line 3011 a random value. /Ix
|
/A(*COMMIT)B/+K |
/A(*COMMIT)B/+K |
ACABX |
ACABX |
|
|
/--- 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 3325 a random value. /Ix
|
Line 3020 a random value. /Ix
|
/A(*PRUNE)B|A(*PRUNE)C/K |
/A(*PRUNE)B|A(*PRUNE)C/K |
AC |
AC |
|
|
/--- 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 |
|
|
|
/--- 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 3356 with \Y. ---/
|
Line 3045 with \Y. ---/
|
/^(ab (c+(*FAIL)cd) | xyz)/x |
/^(ab (c+(*FAIL)cd) | xyz)/x |
abcccd |
abcccd |
|
|
/--- Perl 5.11 gets some of these wrong ---/ | /--- Perl gets some of these wrong ---/ |
|
|
/(?>.(*ACCEPT))*?5/ |
/(?>.(*ACCEPT))*?5/ |
abcde |
abcde |
Line 3397 with \Y. ---/
|
Line 3086 with \Y. ---/
|
/\d*\R/BZ |
/\d*\R/BZ |
|
|
/\s*\R/BZ |
/\s*\R/BZ |
|
\x20\x0a |
|
\x20\x0d |
|
\x20\x0d\x0a |
|
|
/-- Perl treats this one differently, not failing the second string. I believe | /\S*\R/BZ |
that is a bug in Perl. --/ | a\x0a |
|
|
/^((abc|abcx)(*THEN)y|abcd)/ | /X\h*\R/BZ |
abcd | X\x20\x0a |
*** Failers | |
abcxy | |
|
|
|
/X\H*\R/BZ |
|
X\x0d\x0a |
|
|
|
/X\H+\R/BZ |
|
X\x0d\x0a |
|
|
|
/X\H++\R/BZ |
|
X\x0d\x0a |
|
|
/(?<=abc)def/ |
/(?<=abc)def/ |
abc\P\P |
abc\P\P |
|
|
Line 3704 with \Y. ---/
|
Line 3403 with \Y. ---/
|
|
|
/\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 |
|
|
/a(*SKIP)c|b(*ACCEPT)|/+SI | /a(*SKIP)c|b(*ACCEPT)|/+S!I |
a |
a |
|
|
/a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI |
/a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI |
Line 3730 with \Y. ---/
|
Line 3429 with \Y. ---/
|
/a(?:.(*THEN:ABC))*?a/ims |
/a(?:.(*THEN:ABC))*?a/ims |
\Mabbbbbbbbbbbbbbbbbbbbba |
\Mabbbbbbbbbbbbbbbbbbbbba |
|
|
/-- 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 |
|
|
|
/(A (.*) C? (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) C? (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) C? (*THEN) | A D) \s* z/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) (?:C|) (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) C{0,6} (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x |
|
AbcdCEBefgBhiBqz |
|
|
|
/(A (.*) (CE){0,6} (*THEN) | A D) z/x |
|
AbcdCEBefgBhiBqz |
|
|
|
/(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x |
|
AbcdCBefgBhiBqz |
|
|
|
/(A (.*) (CE*){0,6} (*THEN) | A D) z/x |
|
AbcdCBefgBhiBqz |
|
|
|
/-----------------------------------------------/ |
|
|
|
/^(?>a+)(?>(z+))\w/BZ |
/^(?>a+)(?>(z+))\w/BZ |
aaaazzzzb |
aaaazzzzb |
** Failers |
** Failers |
Line 3841 AbcdCBefgBhiBqz
|
Line 3494 AbcdCBefgBhiBqz
|
|
|
/a[B-\Nc]/ |
/a[B-\Nc]/ |
|
|
|
/a[B\Nc]/ |
|
|
/(a)(?2){0,1999}?(b)/ |
/(a)(?2){0,1999}?(b)/ |
|
|
/(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/ |
/(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/ |
Line 3875 replaced by single letters. --/
|
Line 3530 replaced by single letters. --/
|
|
|
/^a(*:X)bcde/K |
/^a(*:X)bcde/K |
abc\P |
abc\P |
|
|
|
/-- These are here because Perl doesn't return a mark, except for the first --/ |
|
|
|
/(?=(*:x))(q|)/K+ |
|
abc |
|
|
|
/(?=(*:x))((*:y)q|)/K+ |
|
abc |
|
|
|
/(?=(*:x))(?:(*:y)q|)/K+ |
|
abc |
|
|
|
/(?=(*:x))(?>(*:y)q|)/K+ |
|
abc |
|
|
|
/(?=a(*:x))(?!a(*:y)c)/K+ |
|
ab |
|
|
|
/(?=a(*:x))(?=a(*:y)c|)/K+ |
|
ab |
|
|
|
/(..)\1/ |
|
ab\P |
|
aba\P |
|
abab\P |
|
|
|
/(..)\1/i |
|
ab\P |
|
abA\P |
|
aBAb\P |
|
|
|
/(..)\1{2,}/ |
|
ab\P |
|
aba\P |
|
abab\P |
|
ababa\P |
|
ababab\P |
|
ababab\P\P |
|
abababa\P |
|
abababa\P\P |
|
|
|
/(..)\1{2,}/i |
|
ab\P |
|
aBa\P |
|
aBAb\P |
|
AbaBA\P |
|
abABAb\P |
|
aBAbaB\P\P |
|
abABabA\P |
|
abaBABa\P\P |
|
|
|
/(..)\1{2,}?x/i |
|
ab\P |
|
abA\P |
|
aBAb\P |
|
abaBA\P |
|
abAbaB\P |
|
abaBabA\P |
|
abAbABaBx\P |
|
|
|
/^(..)\1/ |
|
aba\P |
|
|
|
/^(..)\1{2,3}x/ |
|
aba\P |
|
ababa\P |
|
ababa\P\P |
|
abababx |
|
ababababx |
|
|
|
/^(..)\1{2,3}?x/ |
|
aba\P |
|
ababa\P |
|
ababa\P\P |
|
abababx |
|
ababababx |
|
|
|
/^(..)(\1{2,3})ab/ |
|
abababab |
|
|
|
/^\R/ |
|
\r\P |
|
\r\P\P |
|
|
|
/^\R{2,3}x/ |
|
\r\P |
|
\r\P\P |
|
\r\r\P |
|
\r\r\P\P |
|
\r\r\r\P |
|
\r\r\r\P\P |
|
\r\rx |
|
\r\r\rx |
|
|
|
/^\R{2,3}?x/ |
|
\r\P |
|
\r\P\P |
|
\r\r\P |
|
\r\r\P\P |
|
\r\r\r\P |
|
\r\r\r\P\P |
|
\r\rx |
|
\r\r\rx |
|
|
|
/^\R?x/ |
|
\r\P |
|
\r\P\P |
|
x |
|
\rx |
|
|
|
/^\R+x/ |
|
\r\P |
|
\r\P\P |
|
\r\n\P |
|
\r\n\P\P |
|
\rx |
|
|
|
/^a$/<CRLF> |
|
a\r\P |
|
a\r\P\P |
|
|
|
/^a$/m<CRLF> |
|
a\r\P |
|
a\r\P\P |
|
|
|
/^(a$|a\r)/<CRLF> |
|
a\r\P |
|
a\r\P\P |
|
|
|
/^(a$|a\r)/m<CRLF> |
|
a\r\P |
|
a\r\P\P |
|
|
|
/./<CRLF> |
|
\r\P |
|
\r\P\P |
|
|
|
/.{2,3}/<CRLF> |
|
\r\P |
|
\r\P\P |
|
\r\r\P |
|
\r\r\P\P |
|
\r\r\r\P |
|
\r\r\r\P\P |
|
|
|
/.{2,3}?/<CRLF> |
|
\r\P |
|
\r\P\P |
|
\r\r\P |
|
\r\r\P\P |
|
\r\r\r\P |
|
\r\r\r\P\P |
|
|
|
"AB(C(D))(E(F))?(?(?=\2)(?=\4))" |
|
ABCDGHI\O03 |
|
|
|
/-- These are all run as real matches in test 1; here we are just checking the |
|
settings of the anchored and startline bits. --/ |
|
|
|
/(?>.*?a)(?<=ba)/I |
|
|
|
/(?:.*?a)(?<=ba)/I |
|
|
|
/.*?a(*PRUNE)b/I |
|
|
|
/.*?a(*PRUNE)b/sI |
|
|
|
/^a(*PRUNE)b/sI |
|
|
|
/.*?a(*SKIP)b/I |
|
|
|
/(?>.*?a)b/sI |
|
|
|
/(?>.*?a)b/I |
|
|
|
/(?>^a)b/sI |
|
|
|
/(?>.*?)(?<=(abcd)|(wxyz))/I |
|
|
|
/(?>.*)(?<=(abcd)|(wxyz))/I |
|
|
|
"(?>.*)foo"I |
|
|
|
"(?>.*?)foo"I |
|
|
|
/(?>^abc)/mI |
|
|
|
/(?>.*abc)/mI |
|
|
|
/(?:.*abc)/mI |
|
|
|
/-- Check PCRE_STUDY_EXTRA_NEEDED --/ |
|
|
|
/.?/S-I |
|
|
|
/.?/S!I |
|
|
|
/(?:(a)+(?C1)bb|aa(?C2)b)/ |
|
aab\C+ |
|
|
|
/(?:(a)++(?C1)bb|aa(?C2)b)/ |
|
aab\C+ |
|
|
|
/(?:(?>(a))(?C1)bb|aa(?C2)b)/ |
|
aab\C+ |
|
|
|
/(?:(?1)(?C1)x|ab(?C2))((a)){0}/ |
|
aab\C+ |
|
|
|
/(?1)(?C1)((a)(?C2)){0}/ |
|
aab\C+ |
|
|
|
/(?:(a)+(?C1)bb|aa(?C2)b)++/ |
|
aab\C+ |
|
aab\C+\O2 |
|
|
|
/(ab)x|ab/ |
|
ab\O3 |
|
ab\O2 |
|
|
|
/(ab)/ |
|
ab\O3 |
|
ab\O2 |
|
|
|
/(?<=123)(*MARK:xx)abc/K |
|
xxxx123a\P\P |
|
xxxx123a\P |
|
|
|
/123\Kabc/ |
|
xxxx123a\P\P |
|
xxxx123a\P |
|
|
|
/^(?(?=a)aa|bb)/C |
|
bb |
|
|
|
/(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/ |
|
bb |
|
|
|
/-- Perl seems to have a bug with this one --/ |
|
|
|
/aaaaa(*COMMIT)(*PRUNE)b|a+c/ |
|
aaaaaac |
|
|
|
/-- Here are some that Perl treats differently because of the way it handles |
|
backtracking verbs. --/ |
|
|
|
/(?!a(*COMMIT)b)ac|ad/ |
|
ac |
|
ad |
|
|
|
/^(?!a(*THEN)b|ac)../ |
|
ac |
|
ad |
|
|
|
/^(?=a(*THEN)b|ac)/ |
|
ac |
|
|
|
/\A.*?(?:a|b(*THEN)c)/ |
|
ba |
|
|
|
/\A.*?(?:a|b(*THEN)c)++/ |
|
ba |
|
|
|
/\A.*?(?:a|b(*THEN)c|d)/ |
|
ba |
|
|
|
/(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/ |
|
aac |
|
|
|
/\A.*?(a|b(*THEN)c)/ |
|
ba |
|
|
|
/^(A(*THEN)B|A(*THEN)D)/ |
|
AD |
|
|
|
/(?!b(*THEN)a)bn|bnn/ |
|
bnn |
|
|
|
/(?(?=b(*SKIP)a)bn|bnn)/ |
|
bnn |
|
|
|
/(?=b(*THEN)a|)bn|bnn/ |
|
bnn |
|
|
|
/-------------------------/ |
|
|
|
/(*LIMIT_MATCH=12bc)abc/ |
|
|
|
/(*LIMIT_MATCH=4294967290)abc/ |
|
|
|
/(*LIMIT_RECURSION=4294967280)abc/I |
|
|
|
/(a+)*zz/ |
|
aaaaaaaaaaaaaz |
|
aaaaaaaaaaaaaz\q3000 |
|
|
|
/(a+)*zz/S- |
|
aaaaaaaaaaaaaz\Q10 |
|
|
|
/(*LIMIT_MATCH=3000)(a+)*zz/I |
|
aaaaaaaaaaaaaz |
|
aaaaaaaaaaaaaz\q60000 |
|
|
|
/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I |
|
aaaaaaaaaaaaaz |
|
|
|
/(*LIMIT_MATCH=60000)(a+)*zz/I |
|
aaaaaaaaaaaaaz |
|
aaaaaaaaaaaaaz\q3000 |
|
|
|
/(*LIMIT_RECURSION=10)(a+)*zz/IS- |
|
aaaaaaaaaaaaaz |
|
aaaaaaaaaaaaaz\Q1000 |
|
|
|
/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/IS- |
|
aaaaaaaaaaaaaz |
|
|
|
/(*LIMIT_RECURSION=1000)(a+)*zz/IS- |
|
aaaaaaaaaaaaaz |
|
aaaaaaaaaaaaaz\Q10 |
|
|
|
/-- This test causes a segfault with Perl 5.18.0 --/ |
|
|
|
/^(?=(a)){0}b(?1)/ |
|
backgammon |
|
|
|
/(?|(?<n>f)|(?<n>b))/JI |
|
|
|
/(?<a>abc)(?<a>z)\k<a>()/JDZS |
|
|
|
/a*[bcd]/BZ |
|
|
|
/[bcd]*a/BZ |
|
|
|
/-- A complete set of tests for auto-possessification of character types --/ |
|
|
|
/\D+\D \D+\d \D+\S \D+\s \D+\W \D+\w \D+. \D+\C \D+\R \D+\H \D+\h \D+\V \D+\v \D+\Z \D+\z \D+$/BZx |
|
|
|
/\d+\D \d+\d \d+\S \d+\s \d+\W \d+\w \d+. \d+\C \d+\R \d+\H \d+\h \d+\V \d+\v \d+\Z \d+\z \d+$/BZx |
|
|
|
/\S+\D \S+\d \S+\S \S+\s \S+\W \S+\w \S+. \S+\C \S+\R \S+\H \S+\h \S+\V \S+\v \S+\Z \S+\z \S+$/BZx |
|
|
|
/\s+\D \s+\d \s+\S \s+\s \s+\W \s+\w \s+. \s+\C \s+\R \s+\H \s+\h \s+\V \s+\v \s+\Z \s+\z \s+$/BZx |
|
|
|
/\W+\D \W+\d \W+\S \W+\s \W+\W \W+\w \W+. \W+\C \W+\R \W+\H \W+\h \W+\V \W+\v \W+\Z \W+\z \W+$/BZx |
|
|
|
/\w+\D \w+\d \w+\S \w+\s \w+\W \w+\w \w+. \w+\C \w+\R \w+\H \w+\h \w+\V \w+\v \w+\Z \w+\z \w+$/BZx |
|
|
|
/\C+\D \C+\d \C+\S \C+\s \C+\W \C+\w \C+. \C+\C \C+\R \C+\H \C+\h \C+\V \C+\v \C+\Z \C+\z \C+$/BZx |
|
|
|
/\R+\D \R+\d \R+\S \R+\s \R+\W \R+\w \R+. \R+\C \R+\R \R+\H \R+\h \R+\V \R+\v \R+\Z \R+\z \R+$/BZx |
|
|
|
/\H+\D \H+\d \H+\S \H+\s \H+\W \H+\w \H+. \H+\C \H+\R \H+\H \H+\h \H+\V \H+\v \H+\Z \H+\z \H+$/BZx |
|
|
|
/\h+\D \h+\d \h+\S \h+\s \h+\W \h+\w \h+. \h+\C \h+\R \h+\H \h+\h \h+\V \h+\v \h+\Z \h+\z \h+$/BZx |
|
|
|
/\V+\D \V+\d \V+\S \V+\s \V+\W \V+\w \V+. \V+\C \V+\R \V+\H \V+\h \V+\V \V+\v \V+\Z \V+\z \V+$/BZx |
|
|
|
/\v+\D \v+\d \v+\S \v+\s \v+\W \v+\w \v+. \v+\C \v+\R \v+\H \v+\h \v+\V \v+\v \v+\Z \v+\z \v+$/BZx |
|
|
|
/ a+\D a+\d a+\S a+\s a+\W a+\w a+. a+\C a+\R a+\H a+\h a+\V a+\v a+\Z a+\z a+$/BZx |
|
|
|
/\n+\D \n+\d \n+\S \n+\s \n+\W \n+\w \n+. \n+\C \n+\R \n+\H \n+\h \n+\V \n+\v \n+\Z \n+\z \n+$/BZx |
|
|
|
/ .+\D .+\d .+\S .+\s .+\W .+\w .+. .+\C .+\R .+\H .+\h .+\V .+\v .+\Z .+\z .+$/BZx |
|
|
|
/ .+\D .+\d .+\S .+\s .+\W .+\w .+. .+\C .+\R .+\H .+\h .+\V .+\v .+\Z .+\z .+$/BZxs |
|
|
|
/\D+$ \d+$ \S+$ \s+$ \W+$ \w+$ \C+$ \R+$ \H+$ \h+$ \V+$ \v+$ a+$ \n+$ .+$ .+$/BZxm |
|
|
|
/(?=a+)a(a+)++a/BZ |
|
|
|
/a+(bb|cc)a+(?:bb|cc)a+(?>bb|cc)a+(?:bb|cc)+a+(aa)a+(?:bb|aa)/BZ |
|
|
|
/a+(bb|cc)?#a+(?:bb|cc)??#a+(?:bb|cc)?+#a+(?:bb|cc)*#a+(bb|cc)?a#a+(?:aa)?/BZ |
|
|
|
/a+(?:bb)?a#a+(?:|||)#a+(?:|b)a#a+(?:|||)?a/BZ |
|
|
|
/[ab]*/BZ |
|
aaaa |
|
|
|
/[ab]*?/BZ |
|
aaaa |
|
|
|
/[ab]?/BZ |
|
aaaa |
|
|
|
/[ab]??/BZ |
|
aaaa |
|
|
|
/[ab]+/BZ |
|
aaaa |
|
|
|
/[ab]+?/BZ |
|
aaaa |
|
|
|
/[ab]{2,3}/BZ |
|
aaaa |
|
|
|
/[ab]{2,3}?/BZ |
|
aaaa |
|
|
|
/[ab]{2,}/BZ |
|
aaaa |
|
|
|
/[ab]{2,}?/BZ |
|
aaaa |
|
|
|
/\d+\s{0,5}=\s*\S?=\w{0,4}\W*/BZ |
|
|
|
/[a-d]{5,12}[e-z0-9]*#[^a-z]+[b-y]*a[2-7]?[^0-9a-z]+/BZ |
|
|
|
/[a-z]*\s#[ \t]?\S#[a-c]*\S#[C-G]+?\d#[4-8]*\D#[4-9,]*\D#[!$]{0,5}\w#[M-Xf-l]+\W#[a-c,]?\W/BZ |
|
|
|
/a+(aa|bb)*c#a*(bb|cc)*a#a?(bb|cc)*d#[a-f]*(g|hh)*f/BZ |
|
|
|
/[a-f]*(g|hh|i)*i#[a-x]{4,}(y{0,6})*y#[a-k]+(ll|mm)+n/BZ |
|
|
|
/[a-f]*(?>gg|hh)+#[a-f]*(?>gg|hh)?#[a-f]*(?>gg|hh)*a#[a-f]*(?>gg|hh)*h/BZ |
|
|
|
/[a-c]*d/DZS |
|
|
|
/[a-c]+d/DZS |
|
|
|
/[a-c]?d/DZS |
|
|
|
/[a-c]{4,6}d/DZS |
|
|
|
/[a-c]{0,6}d/DZS |
|
|
|
/-- End of special auto-possessive tests --/ |
|
|
|
/^A\o{1239}B/ |
|
A\123B |
|
|
|
/^A\oB/ |
|
|
|
/^A\x{zz}B/ |
|
|
|
/^A\x{12Z/ |
|
|
|
/^A\x{/ |
|
|
|
/[ab]++/BZO |
|
|
|
/[^ab]*+/BZO |
|
|
|
/a{4}+/BZO |
|
|
|
/a{4}+/BZOi |
|
|
|
/[a-[:digit:]]+/ |
|
|
|
/[A-[:digit:]]+/ |
|
|
|
/[a-[.xxx.]]+/ |
|
|
|
/[a-[=xxx=]]+/ |
|
|
|
/[a-[!xxx!]]+/ |
|
|
|
/[A-[!xxx!]]+/ |
|
A]]] |
|
|
|
/[a-\d]+/ |
|
|
|
/(?<0abc>xx)/ |
|
|
|
/(?&1abc)xx(?<1abc>y)/ |
|
|
|
/(?<ab-cd>xx)/ |
|
|
|
/(?'0abc'xx)/ |
|
|
|
/(?P<0abc>xx)/ |
|
|
|
/\k<5ghj>/ |
|
|
|
/\k'5ghj'/ |
|
|
|
/\k{2fgh}/ |
|
|
|
/(?P=8yuki)/ |
|
|
|
/\g{4df}/ |
|
|
|
/(?&1abc)xx(?<1abc>y)/ |
|
|
|
/(?P>1abc)xx(?<1abc>y)/ |
|
|
|
/\g'3gh'/ |
|
|
|
/\g<5fg>/ |
|
|
|
/(?(<4gh>)abc)/ |
|
|
|
/(?('4gh')abc)/ |
|
|
|
/(?(4gh)abc)/ |
|
|
|
/(?(R&6yh)abc)/ |
|
|
|
/-- Test the ugly "start or end of word" compatibility syntax --/ |
|
|
|
/[[:<:]]red[[:>:]]/BZ |
|
little red riding hood |
|
a /red/ thing |
|
red is a colour |
|
put it all on red |
|
** Failers |
|
no reduction |
|
Alfred Winifred |
|
|
|
/[a[:<:]] should give error/ |
|
|
/-- End of testinput2 --/ |
/-- End of testinput2 --/ |