diff options
Diffstat (limited to 'ext/pcre/pcrelib/testdata/testinput1')
-rw-r--r-- | ext/pcre/pcrelib/testdata/testinput1 | 5745 |
1 files changed, 0 insertions, 5745 deletions
diff --git a/ext/pcre/pcrelib/testdata/testinput1 b/ext/pcre/pcrelib/testdata/testinput1 deleted file mode 100644 index 5c23f41fa8..0000000000 --- a/ext/pcre/pcrelib/testdata/testinput1 +++ /dev/null @@ -1,5745 +0,0 @@ -/-- This set of tests is for features that are compatible with all versions of - Perl >= 5.10, in non-UTF-8 mode. It should run clean for the 8-bit, 16-bit, - and 32-bit PCRE libraries. --/ - -< forbid 89?=ABCDEFfGILMNPTUWXZ< - -/the quick brown fox/ - the quick brown fox - The quick brown FOX - What do you know about the quick brown fox? - What do you know about THE QUICK BROWN FOX? - -/The quick brown fox/i - the quick brown fox - The quick brown FOX - What do you know about the quick brown fox? - What do you know about THE QUICK BROWN FOX? - -/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/ - abcd\t\n\r\f\a\e9;\$\\?caxyz - -/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/ - abxyzpqrrrabbxyyyypqAzz - abxyzpqrrrabbxyyyypqAzz - aabxyzpqrrrabbxyyyypqAzz - aaabxyzpqrrrabbxyyyypqAzz - aaaabxyzpqrrrabbxyyyypqAzz - abcxyzpqrrrabbxyyyypqAzz - aabcxyzpqrrrabbxyyyypqAzz - aaabcxyzpqrrrabbxyyyypAzz - aaabcxyzpqrrrabbxyyyypqAzz - aaabcxyzpqrrrabbxyyyypqqAzz - aaabcxyzpqrrrabbxyyyypqqqAzz - aaabcxyzpqrrrabbxyyyypqqqqAzz - aaabcxyzpqrrrabbxyyyypqqqqqAzz - aaabcxyzpqrrrabbxyyyypqqqqqqAzz - aaaabcxyzpqrrrabbxyyyypqAzz - abxyzzpqrrrabbxyyyypqAzz - aabxyzzzpqrrrabbxyyyypqAzz - aaabxyzzzzpqrrrabbxyyyypqAzz - aaaabxyzzzzpqrrrabbxyyyypqAzz - abcxyzzpqrrrabbxyyyypqAzz - aabcxyzzzpqrrrabbxyyyypqAzz - aaabcxyzzzzpqrrrabbxyyyypqAzz - aaaabcxyzzzzpqrrrabbxyyyypqAzz - aaaabcxyzzzzpqrrrabbbxyyyypqAzz - aaaabcxyzzzzpqrrrabbbxyyyyypqAzz - aaabcxyzpqrrrabbxyyyypABzz - aaabcxyzpqrrrabbxyyyypABBzz - >>>aaabxyzpqrrrabbxyyyypqAzz - >aaaabxyzpqrrrabbxyyyypqAzz - >>>>abcxyzpqrrrabbxyyyypqAzz - *** Failers - abxyzpqrrabbxyyyypqAzz - abxyzpqrrrrabbxyyyypqAzz - abxyzpqrrrabxyyyypqAzz - aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz - aaaabcxyzzzzpqrrrabbbxyyypqAzz - aaabcxyzpqrrrabbxyyyypqqqqqqqAzz - -/^(abc){1,2}zz/ - abczz - abcabczz - *** Failers - zz - abcabcabczz - >>abczz - -/^(b+?|a){1,2}?c/ - bc - bbc - bbbc - bac - bbac - aac - abbbbbbbbbbbc - bbbbbbbbbbbac - *** Failers - aaac - abbbbbbbbbbbac - -/^(b+|a){1,2}c/ - bc - bbc - bbbc - bac - bbac - aac - abbbbbbbbbbbc - bbbbbbbbbbbac - *** Failers - aaac - abbbbbbbbbbbac - -/^(b+|a){1,2}?bc/ - bbc - -/^(b*|ba){1,2}?bc/ - babc - bbabc - bababc - *** Failers - bababbc - babababc - -/^(ba|b*){1,2}?bc/ - babc - bbabc - bababc - *** Failers - bababbc - babababc - -/^\ca\cA\c[;\c:/ - \x01\x01\e;z - -/^[ab\]cde]/ - athing - bthing - ]thing - cthing - dthing - ething - *** Failers - fthing - [thing - \\thing - -/^[]cde]/ - ]thing - cthing - dthing - ething - *** Failers - athing - fthing - -/^[^ab\]cde]/ - fthing - [thing - \\thing - *** Failers - athing - bthing - ]thing - cthing - dthing - ething - -/^[^]cde]/ - athing - fthing - *** Failers - ]thing - cthing - dthing - ething - -/^\/ - - -/^/ - - -/^[0-9]+$/ - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 100 - *** Failers - abc - -/^.*nter/ - enter - inter - uponter - -/^xxx[0-9]+$/ - xxx0 - xxx1234 - *** Failers - xxx - -/^.+[0-9][0-9][0-9]$/ - x123 - xx123 - 123456 - *** Failers - 123 - x1234 - -/^.+?[0-9][0-9][0-9]$/ - x123 - xx123 - 123456 - *** Failers - 123 - x1234 - -/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/ - abc!pqr=apquxz.ixr.zzz.ac.uk - *** Failers - !pqr=apquxz.ixr.zzz.ac.uk - abc!=apquxz.ixr.zzz.ac.uk - abc!pqr=apquxz:ixr.zzz.ac.uk - abc!pqr=apquxz.ixr.zzz.ac.ukk - -/:/ - Well, we need a colon: somewhere - *** Fail if we don't - -/([\da-f:]+)$/i - 0abc - abc - fed - E - :: - 5f03:12C0::932e - fed def - Any old stuff - *** Failers - 0zzz - gzzz - fed\x20 - Any old rubbish - -/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/ - .1.2.3 - A.12.123.0 - *** Failers - .1.2.3333 - 1.2.3 - 1234.2.3 - -/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ - 1 IN SOA non-sp1 non-sp2( - 1 IN SOA non-sp1 non-sp2 ( - *** Failers - 1IN SOA non-sp1 non-sp2( - -/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/ - a. - Z. - 2. - ab-c.pq-r. - sxk.zzz.ac.uk. - x-.y-. - *** Failers - -abc.peq. - -/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/ - *.a - *.b0-a - *.c3-b.c - *.c-a.b-c - *** Failers - *.0 - *.a- - *.a-b.c- - *.c-a.0-c - -/^(?=ab(de))(abd)(e)/ - abde - -/^(?!(ab)de|x)(abd)(f)/ - abdf - -/^(?=(ab(cd)))(ab)/ - abcd - -/^[\da-f](\.[\da-f])*$/i - a.b.c.d - A.B.C.D - a.b.c.1.2.3.C - -/^\".*\"\s*(;.*)?$/ - \"1234\" - \"abcd\" ; - \"\" ; rhubarb - *** Failers - \"1234\" : things - -/^$/ - \ - *** Failers - -/ ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x - ab c - *** Failers - abc - ab cde - -/(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/ - ab c - *** Failers - abc - ab cde - -/^ a\ b[c ]d $/x - a bcd - a b d - *** Failers - abcd - ab d - -/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/ - abcdefhijklm - -/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/ - abcdefhijklm - -/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/ - a+ Z0+\x08\n\x1d\x12 - -/^[.^$|()*+?{,}]+/ - .^\$(*+)|{?,?} - -/^a*\w/ - z - az - aaaz - a - aa - aaaa - a+ - aa+ - -/^a*?\w/ - z - az - aaaz - a - aa - aaaa - a+ - aa+ - -/^a+\w/ - az - aaaz - aa - aaaa - aa+ - -/^a+?\w/ - az - aaaz - aa - aaaa - aa+ - -/^\d{8}\w{2,}/ - 1234567890 - 12345678ab - 12345678__ - *** Failers - 1234567 - -/^[aeiou\d]{4,5}$/ - uoie - 1234 - 12345 - aaaaa - *** Failers - 123456 - -/^[aeiou\d]{4,5}?/ - uoie - 1234 - 12345 - aaaaa - 123456 - -/\A(abc|def)=(\1){2,3}\Z/ - abc=abcabc - def=defdefdef - *** Failers - abc=defdef - -/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/ - abcdefghijkcda2 - abcdefghijkkkkcda2 - -/(cat(a(ract|tonic)|erpillar)) \1()2(3)/ - cataract cataract23 - catatonic catatonic23 - caterpillar caterpillar23 - - -/^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]/ - From abcd Mon Sep 01 12:33:02 1997 - -/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/ - From abcd Mon Sep 01 12:33:02 1997 - From abcd Mon Sep 1 12:33:02 1997 - *** Failers - From abcd Sep 01 12:33:02 1997 - -/^12.34/s - 12\n34 - 12\r34 - -/\w+(?=\t)/ - the quick brown\t fox - -/foo(?!bar)(.*)/ - foobar is foolish see? - -/(?:(?!foo)...|^.{0,2})bar(.*)/ - foobar crowbar etc - barrel - 2barrel - A barrel - -/^(\D*)(?=\d)(?!123)/ - abc456 - *** Failers - abc123 - -/^1234(?# test newlines - inside)/ - 1234 - -/^1234 #comment in extended re - /x - 1234 - -/#rhubarb - abcd/x - abcd - -/^abcd#rhubarb/x - abcd - -/^(a)\1{2,3}(.)/ - aaab - aaaab - aaaaab - aaaaaab - -/(?!^)abc/ - the abc - *** Failers - abc - -/(?=^)abc/ - abc - *** Failers - the abc - -/^[ab]{1,3}(ab*|b)/ - aabbbbb - -/^[ab]{1,3}?(ab*|b)/ - aabbbbb - -/^[ab]{1,3}?(ab*?|b)/ - aabbbbb - -/^[ab]{1,3}(ab*?|b)/ - aabbbbb - -/ (?: [\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 -/x - Alan Other <user\@dom.ain> - <user\@dom.ain> - user\@dom.ain - \"A. Other\" <user.1234\@dom.ain> (a comment) - A. Other <user.1234\@dom.ain> (a comment) - \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay - A missing angle <user\@some.where - *** Failers - The quick brown fox - -/[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# 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 -# Atom -| # or -" # " -[^\\\x80-\xff\n\015"] * # normal -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* -" # " -# Quoted string -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -\. -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -# Atom -| # or -" # " -[^\\\x80-\xff\n\015"] * # normal -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* -" # " -# Quoted string -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# additional words -)* -@ -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -(?: -\. -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -)* -# 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 -# Atom -| # or -" # " -[^\\\x80-\xff\n\015"] * # normal -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* -" # " -# Quoted string -) -# leading word -[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces -(?: -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -| -" # " -[^\\\x80-\xff\n\015"] * # normal -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* -" # " -) # "special" comment or quoted string -[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal" -)* -< -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# < -(?: -@ -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -(?: -\. -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -)* -(?: , -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -@ -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -(?: -\. -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -)* -)* # additional domains -: -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -)? # 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 -# Atom -| # or -" # " -[^\\\x80-\xff\n\015"] * # normal -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* -" # " -# Quoted string -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -\. -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -# Atom -| # or -" # " -[^\\\x80-\xff\n\015"] * # normal -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )* -" # " -# Quoted string -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# additional words -)* -@ -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -(?: -\. -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -(?: -[^(\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 -\] # ] -) -[\040\t]* # Nab whitespace. -(?: -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: # ( -(?: \\ [^\x80-\xff] | -\( # ( -[^\\\x80-\xff\n\015()] * # normal* -(?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)* -\) # ) -) # special -[^\\\x80-\xff\n\015()] * # normal* -)* # )* -\) # ) -[\040\t]* )* # If comment found, allow more spaces. -# optional trailing comments -)* -# address spec -> # > -# name and address -) -/x - Alan Other <user\@dom.ain> - <user\@dom.ain> - user\@dom.ain - \"A. Other\" <user.1234\@dom.ain> (a comment) - A. Other <user.1234\@dom.ain> (a comment) - \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay - A missing angle <user\@some.where - *** Failers - The quick brown fox - -/abc\0def\00pqr\000xyz\0000AB/ - abc\0def\00pqr\000xyz\0000AB - abc456 abc\0def\00pqr\000xyz\0000ABCDE - -/abc\x0def\x00pqr\x000xyz\x0000AB/ - abc\x0def\x00pqr\x000xyz\x0000AB - abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE - -/^[\000-\037]/ - \0A - \01B - \037C - -/\0*/ - \0\0\0\0 - -/A\x0{2,3}Z/ - The A\x0\x0Z - An A\0\x0\0Z - *** Failers - A\0Z - A\0\x0\0\x0Z - -/^(cow|)\1(bell)/ - cowcowbell - bell - *** Failers - cowbell - -/^\s/ - \040abc - \x0cabc - \nabc - \rabc - \tabc - *** Failers - abc - -/^a b - c/x - abc - -/^(a|)\1*b/ - ab - aaaab - b - *** Failers - acb - -/^(a|)\1+b/ - aab - aaaab - b - *** Failers - ab - -/^(a|)\1?b/ - ab - aab - b - *** Failers - acb - -/^(a|)\1{2}b/ - aaab - b - *** Failers - ab - aab - aaaab - -/^(a|)\1{2,3}b/ - aaab - aaaab - b - *** Failers - ab - aab - aaaaab - -/ab{1,3}bc/ - abbbbc - abbbc - abbc - *** Failers - abc - abbbbbc - -/([^.]*)\.([^:]*):[T ]+(.*)/ - track1.title:TBlah blah blah - -/([^.]*)\.([^:]*):[T ]+(.*)/i - track1.title:TBlah blah blah - -/([^.]*)\.([^:]*):[t ]+(.*)/i - track1.title:TBlah blah blah - -/^[W-c]+$/ - WXY_^abc - *** Failers - wxy - -/^[W-c]+$/i - WXY_^abc - wxy_^ABC - -/^[\x3f-\x5F]+$/i - WXY_^abc - wxy_^ABC - -/^abc$/m - abc - qqq\nabc - abc\nzzz - qqq\nabc\nzzz - -/^abc$/ - abc - *** Failers - qqq\nabc - abc\nzzz - qqq\nabc\nzzz - -/\Aabc\Z/m - abc - abc\n - *** Failers - qqq\nabc - abc\nzzz - qqq\nabc\nzzz - -/\A(.)*\Z/s - abc\ndef - -/\A(.)*\Z/m - *** Failers - abc\ndef - -/(?:b)|(?::+)/ - b::c - c::b - -/[-az]+/ - az- - *** Failers - b - -/[az-]+/ - za- - *** Failers - b - -/[a\-z]+/ - a-z - *** Failers - b - -/[a-z]+/ - abcdxyz - -/[\d-]+/ - 12-34 - *** Failers - aaa - -/[\d-z]+/ - 12-34z - *** Failers - aaa - -/\x5c/ - \\ - -/\x20Z/ - the Zoo - *** Failers - Zulu - -/(abc)\1/i - abcabc - ABCabc - abcABC - -/ab{3cd/ - ab{3cd - -/ab{3,cd/ - ab{3,cd - -/ab{3,4a}cd/ - ab{3,4a}cd - -/{4,5a}bc/ - {4,5a}bc - -/abc$/ - abc - abc\n - *** Failers - abc\ndef - -/(abc)\123/ - abc\x53 - -/(abc)\223/ - abc\x93 - -/(abc)\323/ - abc\xd3 - -/(abc)\100/ - abc\x40 - abc\100 - -/(abc)\1000/ - abc\x400 - abc\x40\x30 - abc\1000 - abc\100\x30 - abc\100\060 - abc\100\60 - -/^A\8B\9C$/ - A8B9C - *** Failers - A\08B\09C - -/^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/ - ABCDEFGHIHI - -/^[A\8B\9C]+$/ - A8B9C - *** Failers - A8B9C\x00 - -/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/ - abcdefghijkllS - -/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/ - abcdefghijk\12S - -/ab\idef/ - abidef - -/a{0}bc/ - bc - -/(a|(bc)){0,0}?xyz/ - xyz - -/abc[\10]de/ - abc\010de - -/abc[\1]de/ - abc\1de - -/(abc)[\1]de/ - abc\1de - -/(?s)a.b/ - a\nb - -/^([^a])([^\b])([^c]*)([^d]{3,4})/ - baNOTccccd - baNOTcccd - baNOTccd - bacccd - *** Failers - anything - b\bc - baccd - -/[^a]/ - Abc - -/[^a]/i - Abc - -/[^a]+/ - AAAaAbc - -/[^a]+/i - AAAaAbc - -/[^a]+/ - bbb\nccc - -/[^k]$/ - abc - *** Failers - abk - -/[^k]{2,3}$/ - abc - kbc - kabc - *** Failers - abk - akb - akk - -/^\d{8,}\@.+[^k]$/ - 12345678\@a.b.c.d - 123456789\@x.y.z - *** Failers - 12345678\@x.y.uk - 1234567\@a.b.c.d - -/(a)\1{8,}/ - aaaaaaaaa - aaaaaaaaaa - *** Failers - aaaaaaa - -/[^a]/ - aaaabcd - aaAabcd - -/[^a]/i - aaaabcd - aaAabcd - -/[^az]/ - aaaabcd - aaAabcd - -/[^az]/i - aaaabcd - aaAabcd - -/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/ - \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377 - -/P[^*]TAIRE[^*]{1,6}?LL/ - xxxxxxxxxxxPSTAIREISLLxxxxxxxxx - -/P[^*]TAIRE[^*]{1,}?LL/ - xxxxxxxxxxxPSTAIREISLLxxxxxxxxx - -/(\.\d\d[1-9]?)\d+/ - 1.230003938 - 1.875000282 - 1.235 - -/(\.\d\d((?=0)|\d(?=\d)))/ - 1.230003938 - 1.875000282 - *** Failers - 1.235 - -/a(?)b/ - ab - -/\b(foo)\s+(\w+)/i - Food is on the foo table - -/foo(.*)bar/ - The food is under the bar in the barn. - -/foo(.*?)bar/ - The food is under the bar in the barn. - -/(.*)(\d*)/ - I have 2 numbers: 53147 - -/(.*)(\d+)/ - I have 2 numbers: 53147 - -/(.*?)(\d*)/ - I have 2 numbers: 53147 - -/(.*?)(\d+)/ - I have 2 numbers: 53147 - -/(.*)(\d+)$/ - I have 2 numbers: 53147 - -/(.*?)(\d+)$/ - I have 2 numbers: 53147 - -/(.*)\b(\d+)$/ - I have 2 numbers: 53147 - -/(.*\D)(\d+)$/ - I have 2 numbers: 53147 - -/^\D*(?!123)/ - ABC123 - -/^(\D*)(?=\d)(?!123)/ - ABC445 - *** Failers - ABC123 - -/^[W-]46]/ - W46]789 - -46]789 - *** Failers - Wall - Zebra - 42 - [abcd] - ]abcd[ - -/^[W-\]46]/ - W46]789 - Wall - Zebra - Xylophone - 42 - [abcd] - ]abcd[ - \\backslash - *** Failers - -46]789 - well - -/\d\d\/\d\d\/\d\d\d\d/ - 01/01/2000 - -/word (?:[a-zA-Z0-9]+ ){0,10}otherword/ - word cat dog elephant mussel cow horse canary baboon snake shark otherword - word cat dog elephant mussel cow horse canary baboon snake shark - -/word (?:[a-zA-Z0-9]+ ){0,300}otherword/ - word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope - -/^(a){0,0}/ - bcd - abc - aab - -/^(a){0,1}/ - bcd - abc - aab - -/^(a){0,2}/ - bcd - abc - aab - -/^(a){0,3}/ - bcd - abc - aab - aaa - -/^(a){0,}/ - bcd - abc - aab - aaa - aaaaaaaa - -/^(a){1,1}/ - bcd - abc - aab - -/^(a){1,2}/ - bcd - abc - aab - -/^(a){1,3}/ - bcd - abc - aab - aaa - -/^(a){1,}/ - bcd - abc - aab - aaa - aaaaaaaa - -/.*\.gif/ - borfle\nbib.gif\nno - -/.{0,}\.gif/ - borfle\nbib.gif\nno - -/.*\.gif/m - borfle\nbib.gif\nno - -/.*\.gif/s - borfle\nbib.gif\nno - -/.*\.gif/ms - borfle\nbib.gif\nno - -/.*$/ - borfle\nbib.gif\nno - -/.*$/m - borfle\nbib.gif\nno - -/.*$/s - borfle\nbib.gif\nno - -/.*$/ms - borfle\nbib.gif\nno - -/.*$/ - borfle\nbib.gif\nno\n - -/.*$/m - borfle\nbib.gif\nno\n - -/.*$/s - borfle\nbib.gif\nno\n - -/.*$/ms - borfle\nbib.gif\nno\n - -/(.*X|^B)/ - abcde\n1234Xyz - BarFoo - *** Failers - abcde\nBar - -/(.*X|^B)/m - abcde\n1234Xyz - BarFoo - abcde\nBar - -/(.*X|^B)/s - abcde\n1234Xyz - BarFoo - *** Failers - abcde\nBar - -/(.*X|^B)/ms - abcde\n1234Xyz - BarFoo - abcde\nBar - -/(?s)(.*X|^B)/ - abcde\n1234Xyz - BarFoo - *** Failers - abcde\nBar - -/(?s:.*X|^B)/ - abcde\n1234Xyz - BarFoo - *** Failers - abcde\nBar - -/^.*B/ - **** Failers - abc\nB - -/(?s)^.*B/ - abc\nB - -/(?m)^.*B/ - abc\nB - -/(?ms)^.*B/ - abc\nB - -/(?ms)^B/ - abc\nB - -/(?s)B$/ - B\n - -/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/ - 123456654321 - -/^\d\d\d\d\d\d\d\d\d\d\d\d/ - 123456654321 - -/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/ - 123456654321 - -/^[abc]{12}/ - abcabcabcabc - -/^[a-c]{12}/ - abcabcabcabc - -/^(a|b|c){12}/ - abcabcabcabc - -/^[abcdefghijklmnopqrstuvwxy0123456789]/ - n - *** Failers - z - -/abcde{0,0}/ - abcd - *** Failers - abce - -/ab[cd]{0,0}e/ - abe - *** Failers - abcde - -/ab(c){0,0}d/ - abd - *** Failers - abcd - -/a(b*)/ - a - ab - abbbb - *** Failers - bbbbb - -/ab\d{0}e/ - abe - *** Failers - ab1e - -/"([^\\"]+|\\.)*"/ - the \"quick\" brown fox - \"the \\\"quick\\\" brown fox\" - -/.*?/g+ - abc - -/\b/g+ - abc - -/\b/+g - abc - -//g - abc - -/<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>/is - <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR> - -/a[^a]b/ - acb - a\nb - -/a.b/ - acb - *** Failers - a\nb - -/a[^a]b/s - acb - a\nb - -/a.b/s - acb - a\nb - -/^(b+?|a){1,2}?c/ - bac - bbac - bbbac - bbbbac - bbbbbac - -/^(b+|a){1,2}?c/ - bac - bbac - bbbac - bbbbac - bbbbbac - -/(?!\A)x/m - x\nb\n - a\bx\n - -/\x0{ab}/ - \0{ab} - -/(A|B)*?CD/ - CD - -/(A|B)*CD/ - CD - -/(AB)*?\1/ - ABABAB - -/(AB)*\1/ - ABABAB - -/(?<!bar)foo/ - foo - catfood - arfootle - rfoosh - *** Failers - barfoo - towbarfoo - -/\w{3}(?<!bar)foo/ - catfood - *** Failers - foo - barfoo - towbarfoo - -/(?<=(foo)a)bar/ - fooabar - *** Failers - bar - foobbar - -/\Aabc\z/m - abc - *** Failers - abc\n - qqq\nabc - abc\nzzz - qqq\nabc\nzzz - -"(?>.*/)foo" - /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/ - -"(?>.*/)foo" - /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo - -/(?>(\.\d\d[1-9]?))\d+/ - 1.230003938 - 1.875000282 - *** Failers - 1.235 - -/^((?>\w+)|(?>\s+))*$/ - now is the time for all good men to come to the aid of the party - *** Failers - this is not a line with only words and spaces! - -/(\d+)(\w)/ - 12345a - 12345+ - -/((?>\d+))(\w)/ - 12345a - *** Failers - 12345+ - -/(?>a+)b/ - aaab - -/((?>a+)b)/ - aaab - -/(?>(a+))b/ - aaab - -/(?>b)+/ - aaabbbccc - -/(?>a+|b+|c+)*c/ - aaabbbbccccd - -/((?>[^()]+)|\([^()]*\))+/ - ((abc(ade)ufh()()x - -/\(((?>[^()]+)|\([^()]+\))+\)/ - (abc) - (abc(def)xyz) - *** Failers - ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - -/a(?-i)b/i - ab - Ab - *** Failers - aB - AB - -/(a (?x)b c)d e/ - a bcd e - *** Failers - a b cd e - abcd e - a bcde - -/(a b(?x)c d (?-x)e f)/ - a bcde f - *** Failers - abcdef - -/(a(?i)b)c/ - abc - aBc - *** Failers - abC - aBC - Abc - ABc - ABC - AbC - -/a(?i:b)c/ - abc - aBc - *** Failers - ABC - abC - aBC - -/a(?i:b)*c/ - aBc - aBBc - *** Failers - aBC - aBBC - -/a(?=b(?i)c)\w\wd/ - abcd - abCd - *** Failers - aBCd - abcD - -/(?s-i:more.*than).*million/i - more than million - more than MILLION - more \n than Million - *** Failers - MORE THAN MILLION - more \n than \n million - -/(?:(?s-i)more.*than).*million/i - more than million - more than MILLION - more \n than Million - *** Failers - MORE THAN MILLION - more \n than \n million - -/(?>a(?i)b+)+c/ - abc - aBbc - aBBc - *** Failers - Abc - abAb - abbC - -/(?=a(?i)b)\w\wc/ - abc - aBc - *** Failers - Ab - abC - aBC - -/(?<=a(?i)b)(\w\w)c/ - abxxc - aBxxc - *** Failers - Abxxc - ABxxc - abxxC - -/(?:(a)|b)(?(1)A|B)/ - aA - bB - *** Failers - aB - bA - -/^(a)?(?(1)a|b)+$/ - aa - b - bb - *** Failers - ab - -/^(?(?=abc)\w{3}:|\d\d)$/ - abc: - 12 - *** Failers - 123 - xyz - -/^(?(?!abc)\d\d|\w{3}:)$/ - abc: - 12 - *** Failers - 123 - xyz - -/(?(?<=foo)bar|cat)/ - foobar - cat - fcat - focat - *** Failers - foocat - -/(?(?<!foo)cat|bar)/ - foobar - cat - fcat - focat - *** Failers - foocat - -/( \( )? [^()]+ (?(1) \) |) /x - abcd - (abcd) - the quick (abcd) fox - (abcd - -/( \( )? [^()]+ (?(1) \) ) /x - abcd - (abcd) - the quick (abcd) fox - (abcd - -/^(?(2)a|(1)(2))+$/ - 12 - 12a - 12aa - *** Failers - 1234 - -/((?i)blah)\s+\1/ - blah blah - BLAH BLAH - Blah Blah - blaH blaH - *** Failers - blah BLAH - Blah blah - blaH blah - -/((?i)blah)\s+(?i:\1)/ - blah blah - BLAH BLAH - Blah Blah - blaH blaH - blah BLAH - Blah blah - blaH blah - -/(?>a*)*/ - a - aa - aaaa - -/(abc|)+/ - abc - abcabc - abcabcabc - xyz - -/([a]*)*/ - a - aaaaa - -/([ab]*)*/ - a - b - ababab - aaaabcde - bbbb - -/([^a]*)*/ - b - bbbb - aaa - -/([^ab]*)*/ - cccc - abab - -/([a]*?)*/ - a - aaaa - -/([ab]*?)*/ - a - b - abab - baba - -/([^a]*?)*/ - b - bbbb - aaa - -/([^ab]*?)*/ - c - cccc - baba - -/(?>a*)*/ - a - aaabcde - -/((?>a*))*/ - aaaaa - aabbaa - -/((?>a*?))*/ - aaaaa - aabbaa - -/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x - 12-sep-98 - 12-09-98 - *** Failers - sep-12-98 - -/(?<=(foo))bar\1/ - foobarfoo - foobarfootling - *** Failers - foobar - barfoo - -/(?i:saturday|sunday)/ - saturday - sunday - Saturday - Sunday - SATURDAY - SUNDAY - SunDay - -/(a(?i)bc|BB)x/ - abcx - aBCx - bbx - BBx - *** Failers - abcX - aBCX - bbX - BBX - -/^([ab](?i)[cd]|[ef])/ - ac - aC - bD - elephant - Europe - frog - France - *** Failers - Africa - -/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/ - ab - aBd - xy - xY - zebra - Zambesi - *** Failers - aCD - XY - -/(?<=foo\n)^bar/m - foo\nbar - *** Failers - bar - baz\nbar - -/(?<=(?<!foo)bar)baz/ - barbaz - barbarbaz - koobarbaz - *** Failers - baz - foobarbaz - -/The cases of aaaa and aaaaaa are missed out below because Perl does things/ -/differently. We know that odd, and maybe incorrect, things happen with/ -/recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./ - -/^(a\1?){4}$/ - a - aa - aaa - aaaaa - aaaaaaa - aaaaaaaa - aaaaaaaaa - aaaaaaaaaa - aaaaaaaaaaa - aaaaaaaaaaaa - aaaaaaaaaaaaa - aaaaaaaaaaaaaa - aaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaa - -/^(a\1?)(a\1?)(a\2?)(a\3?)$/ - a - aa - aaa - aaaa - aaaaa - aaaaaa - aaaaaaa - aaaaaaaa - aaaaaaaaa - aaaaaaaaaa - aaaaaaaaaaa - aaaaaaaaaaaa - aaaaaaaaaaaaa - aaaaaaaaaaaaaa - aaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaa - -/The following tests are taken from the Perl 5.005 test suite; some of them/ -/are compatible with 5.004, but I'd rather not have to sort them out./ - -/abc/ - abc - xabcy - ababc - *** Failers - xbc - axc - abx - -/ab*c/ - abc - -/ab*bc/ - abc - abbc - abbbbc - -/.{1}/ - abbbbc - -/.{3,4}/ - abbbbc - -/ab{0,}bc/ - abbbbc - -/ab+bc/ - abbc - *** Failers - abc - abq - -/ab{1,}bc/ - -/ab+bc/ - abbbbc - -/ab{1,}bc/ - abbbbc - -/ab{1,3}bc/ - abbbbc - -/ab{3,4}bc/ - abbbbc - -/ab{4,5}bc/ - *** Failers - abq - abbbbc - -/ab?bc/ - abbc - abc - -/ab{0,1}bc/ - abc - -/ab?bc/ - -/ab?c/ - abc - -/ab{0,1}c/ - abc - -/^abc$/ - abc - *** Failers - abbbbc - abcc - -/^abc/ - abcc - -/^abc$/ - -/abc$/ - aabc - *** Failers - aabc - aabcd - -/^/ - abc - -/$/ - abc - -/a.c/ - abc - axc - -/a.*c/ - axyzc - -/a[bc]d/ - abd - *** Failers - axyzd - abc - -/a[b-d]e/ - ace - -/a[b-d]/ - aac - -/a[-b]/ - a- - -/a[b-]/ - a- - -/a]/ - a] - -/a[]]b/ - a]b - -/a[^bc]d/ - aed - *** Failers - abd - abd - -/a[^-b]c/ - adc - -/a[^]b]c/ - adc - *** Failers - a-c - a]c - -/\ba\b/ - a- - -a - -a- - -/\by\b/ - *** Failers - xy - yz - xyz - -/\Ba\B/ - *** Failers - a- - -a - -a- - -/\By\b/ - xy - -/\by\B/ - yz - -/\By\B/ - xyz - -/\w/ - a - -/\W/ - - - *** Failers - - - a - -/a\sb/ - a b - -/a\Sb/ - a-b - *** Failers - a-b - a b - -/\d/ - 1 - -/\D/ - - - *** Failers - - - 1 - -/[\w]/ - a - -/[\W]/ - - - *** Failers - - - a - -/a[\s]b/ - a b - -/a[\S]b/ - a-b - *** Failers - a-b - a b - -/[\d]/ - 1 - -/[\D]/ - - - *** Failers - - - 1 - -/ab|cd/ - abc - abcd - -/()ef/ - def - -/$b/ - -/a\(b/ - a(b - -/a\(*b/ - ab - a((b - -/a\\b/ - a\b - -/((a))/ - abc - -/(a)b(c)/ - abc - -/a+b+c/ - aabbabc - -/a{1,}b{1,}c/ - aabbabc - -/a.+?c/ - abcabc - -/(a+|b)*/ - ab - -/(a+|b){0,}/ - ab - -/(a+|b)+/ - ab - -/(a+|b){1,}/ - ab - -/(a+|b)?/ - ab - -/(a+|b){0,1}/ - ab - -/[^ab]*/ - cde - -/abc/ - *** Failers - b - - -/a*/ - - -/([abc])*d/ - abbbcd - -/([abc])*bcd/ - abcd - -/a|b|c|d|e/ - e - -/(a|b|c|d|e)f/ - ef - -/abcd*efg/ - abcdefg - -/ab*/ - xabyabbbz - xayabbbz - -/(ab|cd)e/ - abcde - -/[abhgefdc]ij/ - hij - -/^(ab|cd)e/ - -/(abc|)ef/ - abcdef - -/(a|b)c*d/ - abcd - -/(ab|ab*)bc/ - abc - -/a([bc]*)c*/ - abc - -/a([bc]*)(c*d)/ - abcd - -/a([bc]+)(c*d)/ - abcd - -/a([bc]*)(c+d)/ - abcd - -/a[bcd]*dcdcde/ - adcdcde - -/a[bcd]+dcdcde/ - *** Failers - abcde - adcdcde - -/(ab|a)b*c/ - abc - -/((a)(b)c)(d)/ - abcd - -/[a-zA-Z_][a-zA-Z0-9_]*/ - alpha - -/^a(bc+|b[eh])g|.h$/ - abh - -/(bc+d$|ef*g.|h?i(j|k))/ - effgz - ij - reffgz - *** Failers - effg - bcdd - -/((((((((((a))))))))))/ - a - -/((((((((((a))))))))))\10/ - aa - -/(((((((((a)))))))))/ - a - -/multiple words of text/ - *** Failers - aa - uh-uh - -/multiple words/ - multiple words, yeah - -/(.*)c(.*)/ - abcde - -/\((.*), (.*)\)/ - (a, b) - -/[k]/ - -/abcd/ - abcd - -/a(bc)d/ - abcd - -/a[-]?c/ - ac - -/(abc)\1/ - abcabc - -/([a-c]*)\1/ - abcabc - -/(a)|\1/ - a - *** Failers - ab - x - -/(([a-c])b*?\2)*/ - ababbbcbc - -/(([a-c])b*?\2){3}/ - ababbbcbc - -/((\3|b)\2(a)x)+/ - aaaxabaxbaaxbbax - -/((\3|b)\2(a)){2,}/ - bbaababbabaaaaabbaaaabba - -/abc/i - ABC - XABCY - ABABC - *** Failers - aaxabxbaxbbx - XBC - AXC - ABX - -/ab*c/i - ABC - -/ab*bc/i - ABC - ABBC - -/ab*?bc/i - ABBBBC - -/ab{0,}?bc/i - ABBBBC - -/ab+?bc/i - ABBC - -/ab+bc/i - *** Failers - ABC - ABQ - -/ab{1,}bc/i - -/ab+bc/i - ABBBBC - -/ab{1,}?bc/i - ABBBBC - -/ab{1,3}?bc/i - ABBBBC - -/ab{3,4}?bc/i - ABBBBC - -/ab{4,5}?bc/i - *** Failers - ABQ - ABBBBC - -/ab??bc/i - ABBC - ABC - -/ab{0,1}?bc/i - ABC - -/ab??bc/i - -/ab??c/i - ABC - -/ab{0,1}?c/i - ABC - -/^abc$/i - ABC - *** Failers - ABBBBC - ABCC - -/^abc/i - ABCC - -/^abc$/i - -/abc$/i - AABC - -/^/i - ABC - -/$/i - ABC - -/a.c/i - ABC - AXC - -/a.*?c/i - AXYZC - -/a.*c/i - *** Failers - AABC - AXYZD - -/a[bc]d/i - ABD - -/a[b-d]e/i - ACE - *** Failers - ABC - ABD - -/a[b-d]/i - AAC - -/a[-b]/i - A- - -/a[b-]/i - A- - -/a]/i - A] - -/a[]]b/i - A]B - -/a[^bc]d/i - AED - -/a[^-b]c/i - ADC - *** Failers - ABD - A-C - -/a[^]b]c/i - ADC - -/ab|cd/i - ABC - ABCD - -/()ef/i - DEF - -/$b/i - *** Failers - A]C - B - -/a\(b/i - A(B - -/a\(*b/i - AB - A((B - -/a\\b/i - A\B - -/((a))/i - ABC - -/(a)b(c)/i - ABC - -/a+b+c/i - AABBABC - -/a{1,}b{1,}c/i - AABBABC - -/a.+?c/i - ABCABC - -/a.*?c/i - ABCABC - -/a.{0,5}?c/i - ABCABC - -/(a+|b)*/i - AB - -/(a+|b){0,}/i - AB - -/(a+|b)+/i - AB - -/(a+|b){1,}/i - AB - -/(a+|b)?/i - AB - -/(a+|b){0,1}/i - AB - -/(a+|b){0,1}?/i - AB - -/[^ab]*/i - CDE - -/abc/i - -/a*/i - - -/([abc])*d/i - ABBBCD - -/([abc])*bcd/i - ABCD - -/a|b|c|d|e/i - E - -/(a|b|c|d|e)f/i - EF - -/abcd*efg/i - ABCDEFG - -/ab*/i - XABYABBBZ - XAYABBBZ - -/(ab|cd)e/i - ABCDE - -/[abhgefdc]ij/i - HIJ - -/^(ab|cd)e/i - ABCDE - -/(abc|)ef/i - ABCDEF - -/(a|b)c*d/i - ABCD - -/(ab|ab*)bc/i - ABC - -/a([bc]*)c*/i - ABC - -/a([bc]*)(c*d)/i - ABCD - -/a([bc]+)(c*d)/i - ABCD - -/a([bc]*)(c+d)/i - ABCD - -/a[bcd]*dcdcde/i - ADCDCDE - -/a[bcd]+dcdcde/i - -/(ab|a)b*c/i - ABC - -/((a)(b)c)(d)/i - ABCD - -/[a-zA-Z_][a-zA-Z0-9_]*/i - ALPHA - -/^a(bc+|b[eh])g|.h$/i - ABH - -/(bc+d$|ef*g.|h?i(j|k))/i - EFFGZ - IJ - REFFGZ - *** Failers - ADCDCDE - EFFG - BCDD - -/((((((((((a))))))))))/i - A - -/((((((((((a))))))))))\10/i - AA - -/(((((((((a)))))))))/i - A - -/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i - A - -/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i - C - -/multiple words of text/i - *** Failers - AA - UH-UH - -/multiple words/i - MULTIPLE WORDS, YEAH - -/(.*)c(.*)/i - ABCDE - -/\((.*), (.*)\)/i - (A, B) - -/[k]/i - -/abcd/i - ABCD - -/a(bc)d/i - ABCD - -/a[-]?c/i - AC - -/(abc)\1/i - ABCABC - -/([a-c]*)\1/i - ABCABC - -/a(?!b)./ - abad - -/a(?=d)./ - abad - -/a(?=c|d)./ - abad - -/a(?:b|c|d)(.)/ - ace - -/a(?:b|c|d)*(.)/ - ace - -/a(?:b|c|d)+?(.)/ - ace - acdbcdbe - -/a(?:b|c|d)+(.)/ - acdbcdbe - -/a(?:b|c|d){2}(.)/ - acdbcdbe - -/a(?:b|c|d){4,5}(.)/ - acdbcdbe - -/a(?:b|c|d){4,5}?(.)/ - acdbcdbe - -/((foo)|(bar))*/ - foobar - -/a(?:b|c|d){6,7}(.)/ - acdbcdbe - -/a(?:b|c|d){6,7}?(.)/ - acdbcdbe - -/a(?:b|c|d){5,6}(.)/ - acdbcdbe - -/a(?:b|c|d){5,6}?(.)/ - acdbcdbe - -/a(?:b|c|d){5,7}(.)/ - acdbcdbe - -/a(?:b|c|d){5,7}?(.)/ - acdbcdbe - -/a(?:b|(c|e){1,2}?|d)+?(.)/ - ace - -/^(.+)?B/ - AB - -/^([^a-z])|(\^)$/ - . - -/^[<>]&/ - <&OUT - -/^(a\1?){4}$/ - aaaaaaaaaa - *** Failers - AB - aaaaaaaaa - aaaaaaaaaaa - -/^(a(?(1)\1)){4}$/ - aaaaaaaaaa - *** Failers - aaaaaaaaa - aaaaaaaaaaa - -/(?:(f)(o)(o)|(b)(a)(r))*/ - foobar - -/(?<=a)b/ - ab - *** Failers - cb - b - -/(?<!c)b/ - ab - b - b - -/(?:..)*a/ - aba - -/(?:..)*?a/ - aba - -/^(?:b|a(?=(.)))*\1/ - abc - -/^(){3,5}/ - abc - -/^(a+)*ax/ - aax - -/^((a|b)+)*ax/ - aax - -/^((a|bc)+)*ax/ - aax - -/(a|x)*ab/ - cab - -/(a)*ab/ - cab - -/(?:(?i)a)b/ - ab - -/((?i)a)b/ - ab - -/(?:(?i)a)b/ - Ab - -/((?i)a)b/ - Ab - -/(?:(?i)a)b/ - *** Failers - cb - aB - -/((?i)a)b/ - -/(?i:a)b/ - ab - -/((?i:a))b/ - ab - -/(?i:a)b/ - Ab - -/((?i:a))b/ - Ab - -/(?i:a)b/ - *** Failers - aB - aB - -/((?i:a))b/ - -/(?:(?-i)a)b/i - ab - -/((?-i)a)b/i - ab - -/(?:(?-i)a)b/i - aB - -/((?-i)a)b/i - aB - -/(?:(?-i)a)b/i - *** Failers - aB - Ab - -/((?-i)a)b/i - -/(?:(?-i)a)b/i - aB - -/((?-i)a)b/i - aB - -/(?:(?-i)a)b/i - *** Failers - Ab - AB - -/((?-i)a)b/i - -/(?-i:a)b/i - ab - -/((?-i:a))b/i - ab - -/(?-i:a)b/i - aB - -/((?-i:a))b/i - aB - -/(?-i:a)b/i - *** Failers - AB - Ab - -/((?-i:a))b/i - -/(?-i:a)b/i - aB - -/((?-i:a))b/i - aB - -/(?-i:a)b/i - *** Failers - Ab - AB - -/((?-i:a))b/i - -/((?-i:a.))b/i - *** Failers - AB - a\nB - -/((?s-i:a.))b/i - a\nB - -/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/ - cabbbb - -/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/ - caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb - -/(ab)\d\1/i - Ab4ab - ab4Ab - -/foo\w*\d{4}baz/ - foobar1234baz - -/x(~~)*(?:(?:F)?)?/ - x~~ - -/^a(?#xxx){3}c/ - aaac - -/^a (?#xxx) (?#yyy) {3}c/x - aaac - -/(?<![cd])b/ - *** Failers - B\nB - dbcb - -/(?<![cd])[ab]/ - dbaacb - -/(?<!(c|d))b/ - -/(?<!(c|d))[ab]/ - dbaacb - -/(?<!cd)[ab]/ - cdaccb - -/^(?:a?b?)*$/ - \ - a - ab - aaa - *** Failers - dbcb - a-- - aa-- - -/((?s)^a(.))((?m)^b$)/ - a\nb\nc\n - -/((?m)^b$)/ - a\nb\nc\n - -/(?m)^b/ - a\nb\n - -/(?m)^(b)/ - a\nb\n - -/((?m)^b)/ - a\nb\n - -/\n((?m)^b)/ - a\nb\n - -/((?s).)c(?!.)/ - a\nb\nc\n - a\nb\nc\n - -/((?s)b.)c(?!.)/ - a\nb\nc\n - a\nb\nc\n - -/^b/ - -/()^b/ - *** Failers - a\nb\nc\n - a\nb\nc\n - -/((?m)^b)/ - a\nb\nc\n - -/(x)?(?(1)a|b)/ - *** Failers - a - a - -/(x)?(?(1)b|a)/ - a - -/()?(?(1)b|a)/ - a - -/()(?(1)b|a)/ - -/()?(?(1)a|b)/ - a - -/^(\()?blah(?(1)(\)))$/ - (blah) - blah - *** Failers - a - blah) - (blah - -/^(\(+)?blah(?(1)(\)))$/ - (blah) - blah - *** Failers - blah) - (blah - -/(?(?!a)a|b)/ - -/(?(?!a)b|a)/ - a - -/(?(?=a)b|a)/ - *** Failers - a - a - -/(?(?=a)a|b)/ - a - -/(?=(a+?))(\1ab)/ - aaab - -/^(?=(a+?))\1ab/ - -/(\w+:)+/ - one: - -/$(?<=^(a))/ - a - -/(?=(a+?))(\1ab)/ - aaab - -/^(?=(a+?))\1ab/ - *** Failers - aaab - aaab - -/([\w:]+::)?(\w+)$/ - abcd - xy:z:::abcd - -/^[^bcd]*(c+)/ - aexycd - -/(a*)b+/ - caab - -/([\w:]+::)?(\w+)$/ - abcd - xy:z:::abcd - *** Failers - abcd: - abcd: - -/^[^bcd]*(c+)/ - aexycd - -/(>a+)ab/ - -/(?>a+)b/ - aaab - -/([[:]+)/ - a:[b]: - -/([[=]+)/ - a=[b]= - -/([[.]+)/ - a.[b]. - -/((?>a+)b)/ - aaab - -/(?>(a+))b/ - aaab - -/((?>[^()]+)|\([^()]*\))+/ - ((abc(ade)ufh()()x - -/a\Z/ - *** Failers - aaab - a\nb\n - -/b\Z/ - a\nb\n - -/b\z/ - -/b\Z/ - a\nb - -/b\z/ - a\nb - *** Failers - -/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/ - a - abc - a-b - 0-9 - a.b - 5.6.7 - the.quick.brown.fox - a100.b200.300c - 12-ab.1245 - *** Failers - \ - .a - -a - a- - a. - a_b - a.- - a.. - ab..bc - the.quick.brown.fox- - the.quick.brown.fox. - the.quick.brown.fox_ - the.quick.brown.fox+ - -/(?>.*)(?<=(abcd|wxyz))/ - alphabetabcd - endingwxyz - *** Failers - a rather long string that doesn't end with one of them - -/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/ - word cat dog elephant mussel cow horse canary baboon snake shark otherword - word cat dog elephant mussel cow horse canary baboon snake shark - -/word (?>[a-zA-Z0-9]+ ){0,30}otherword/ - word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope - -/(?<=\d{3}(?!999))foo/ - 999foo - 123999foo - *** Failers - 123abcfoo - -/(?<=(?!...999)\d{3})foo/ - 999foo - 123999foo - *** Failers - 123abcfoo - -/(?<=\d{3}(?!999)...)foo/ - 123abcfoo - 123456foo - *** Failers - 123999foo - -/(?<=\d{3}...)(?<!999)foo/ - 123abcfoo - 123456foo - *** Failers - 123999foo - -/<a[\s]+href[\s]*=[\s]* # find <a href= - ([\"\'])? # find single or double quote - (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching - # quote, otherwise match up to next space -/isx - <a href=abcd xyz - <a href=\"abcd xyz pqr\" cats - <a href=\'abcd xyz pqr\' cats - -/<a\s+href\s*=\s* # find <a href= - (["'])? # find single or double quote - (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching - # quote, otherwise match up to next space -/isx - <a href=abcd xyz - <a href=\"abcd xyz pqr\" cats - <a href = \'abcd xyz pqr\' cats - -/<a\s+href(?>\s*)=(?>\s*) # find <a href= - (["'])? # find single or double quote - (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching - # quote, otherwise match up to next space -/isx - <a href=abcd xyz - <a href=\"abcd xyz pqr\" cats - <a href = \'abcd xyz pqr\' cats - -/((Z)+|A)*/ - ZABCDEFG - -/(Z()|A)*/ - ZABCDEFG - -/(Z(())|A)*/ - ZABCDEFG - -/((?>Z)+|A)*/ - ZABCDEFG - -/((?>)+|A)*/ - ZABCDEFG - -/a*/g - abbab - -/^[\d-a]/ - abcde - -things - 0digit - *** Failers - bcdef - -/[[:space:]]+/ - > \x09\x0a\x0c\x0d\x0b< - -/[[:blank:]]+/ - > \x09\x0a\x0c\x0d\x0b< - -/[\s]+/ - > \x09\x0a\x0c\x0d\x0b< - -/\s+/ - > \x09\x0a\x0c\x0d\x0b< - -/ab/x - ab - -/(?!\A)x/m - a\nxb\n - -/(?!^)x/m - a\nxb\n - -/abc\Qabc\Eabc/ - abcabcabc - -/abc\Q(*+|\Eabc/ - abc(*+|abc - -/ abc\Q abc\Eabc/x - abc abcabc - *** Failers - abcabcabc - -/abc#comment - \Q#not comment - literal\E/x - abc#not comment\n literal - -/abc#comment - \Q#not comment - literal/x - abc#not comment\n literal - -/abc#comment - \Q#not comment - literal\E #more comment - /x - abc#not comment\n literal - -/abc#comment - \Q#not comment - literal\E #more comment/x - abc#not comment\n literal - -/\Qabc\$xyz\E/ - abc\\\$xyz - -/\Qabc\E\$\Qxyz\E/ - abc\$xyz - -/\Gabc/ - abc - *** Failers - xyzabc - -/\Gabc./g - abc1abc2xyzabc3 - -/abc./g - abc1abc2xyzabc3 - -/a(?x: b c )d/ - XabcdY - *** Failers - Xa b c d Y - -/((?x)x y z | a b c)/ - XabcY - AxyzB - -/(?i)AB(?-i)C/ - XabCY - *** Failers - XabcY - -/((?i)AB(?-i)C|D)E/ - abCE - DE - *** Failers - abcE - abCe - dE - De - -/(.*)\d+\1/ - abc123abc - abc123bc - -/(.*)\d+\1/s - abc123abc - abc123bc - -/((.*))\d+\1/ - abc123abc - abc123bc - -/-- This tests for an IPv6 address in the form where it can have up to - eight components, one and only one of which is empty. This must be - an internal component. --/ - -/^(?!:) # colon disallowed at start - (?: # start of item - (?: [0-9a-f]{1,4} | # 1-4 hex digits or - (?(1)0 | () ) ) # if null previously matched, fail; else null - : # followed by colon - ){1,7} # end item; 1-7 of them required - [0-9a-f]{1,4} $ # final hex number at end of string - (?(1)|.) # check that there was an empty component - /xi - a123::a123 - a123:b342::abcd - a123:b342::324e:abcd - a123:ddde:b342::324e:abcd - a123:ddde:b342::324e:dcba:abcd - a123:ddde:9999:b342::324e:dcba:abcd - *** Failers - 1:2:3:4:5:6:7:8 - a123:bce:ddde:9999:b342::324e:dcba:abcd - a123::9999:b342::324e:dcba:abcd - abcde:2:3:4:5:6:7:8 - ::1 - abcd:fee0:123:: - :1 - 1: - -/[z\Qa-d]\E]/ - z - a - - - d - ] - *** Failers - b - -/[\z\C]/ - z - C - -/\M/ - M - -/(a+)*b/ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - -/(?i)reg(?:ul(?:[a]|ae)r|ex)/ - REGular - regulaer - Regex - regulr - -/[--]+/ - - - - - -/(?<=Z)X./ - \x84XAZXB - -/ab cd (?x) de fg/ - ab cd defg - -/ab cd(?x) de fg/ - ab cddefg - ** Failers - abcddefg - -/(?<![^f]oo)(bar)/ - foobarX - ** Failers - boobarX - -/(?<![^f])X/ - offX - ** Failers - onyX - -/(?<=[^f])X/ - onyX - ** Failers - offX - -/^/mg - a\nb\nc\n - \ - -/(?<=C\n)^/mg - A\nC\nC\n - -/(?:(?(1)a|b)(X))+/ - bXaX - -/(?:(?(1)\1a|b)(X|Y))+/ - bXXaYYaY - bXYaXXaX - -/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/ - bXXaYYaY - -/[[,abc,]+]/ - abc] - a,b] - [a,b,c] - -/(?-x: )/x - A\x20B - -"(?x)(?-x: \s*#\s*)" - A # B - ** Failers - # - -"(?x-is)(?:(?-ixs) \s*#\s*) include" - A #include - ** Failers - A#include - A #Include - -/a*b*\w/ - aaabbbb - aaaa - a - -/a*b?\w/ - aaabbbb - aaaa - a - -/a*b{0,4}\w/ - aaabbbb - aaaa - a - -/a*b{0,}\w/ - aaabbbb - aaaa - a - -/a*\d*\w/ - 0a - a - -/a*b *\w/x - a - -/a*b#comment - *\w/x - a - -/a* b *\w/x - a - -/^\w+=.*(\\\n.*)*/ - abc=xyz\\\npqr - -/(?=(\w+))\1:/ - abcd: - -/^(?=(\w+))\1:/ - abcd: - -/^\Eabc/ - abc - -/^[\Eabc]/ - a - ** Failers - E - -/^[a-\Ec]/ - b - ** Failers - - - E - -/^[a\E\E-\Ec]/ - b - ** Failers - - - E - -/^[\E\Qa\E-\Qz\E]+/ - b - ** Failers - - - -/^[a\Q]bc\E]/ - a - ] - c - -/^[a-\Q\E]/ - a - - - -/^(a()*)*/ - aaaa - -/^(?:a(?:(?:))*)*/ - aaaa - -/^(a()+)+/ - aaaa - -/^(?:a(?:(?:))+)+/ - aaaa - -/(a){0,3}(?(1)b|(c|))*D/ - abbD - ccccD - D - -/(a|)*\d/ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 - -/(?>a|)*\d/ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 - -/(?:a|)*\d/ - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4 - -/\Z/g - abc\n - -/^(?s)(?>.*)(?<!\n)/ - abc - abc\n - -/^(?![^\n]*\n\z)/ - abc - abc\n - -/\z(?<!\n)/ - abc - abc\n - -/(.*(.)?)*/ - abcd - -/( (A | (?(1)0|) )* )/x - abcd - -/( ( (?(1)0|) )* )/x - abcd - -/( (?(1)0|)* )/x - abcd - -/[[:abcd:xyz]]/ - a] - :] - -/[abc[:x\]pqr]/ - a - [ - : - ] - p - -/.*[op][xyz]/ - fooabcfoo - -/(?(?=.*b)b|^)/ - adc - abc - -/(?(?=^.*b)b|^)/ - adc - abc - -/(?(?=.*b)b|^)*/ - adc - abc - -/(?(?=.*b)b|^)+/ - adc - abc - -/(?(?=b).*b|^d)/ - abc - -/(?(?=.*b).*b|^d)/ - abc - -/^%((?(?=[a])[^%])|b)*%$/ - %ab% - -/(?i)a(?-i)b|c/ - XabX - XAbX - CcC - ** Failers - XABX - -/[\x00-\xff\s]+/ - \x0a\x0b\x0c\x0d - -/^\c/ - ? - -/(abc)\1/i - abc - -/(abc)\1/ - abc - -/[^a]*/i - 12abc - 12ABC - -/[^a]*+/i - 12abc - 12ABC - -/[^a]*?X/i - ** Failers - 12abc - 12ABC - -/[^a]+?X/i - ** Failers - 12abc - 12ABC - -/[^a]?X/i - 12aXbcX - 12AXBCX - BCX - -/[^a]??X/i - 12aXbcX - 12AXBCX - BCX - -/[^a]?+X/i - 12aXbcX - 12AXBCX - BCX - -/[^a]{2,3}/i - abcdef - ABCDEF - -/[^a]{2,3}?/i - abcdef - ABCDEF - -/[^a]{2,3}+/i - abcdef - ABCDEF - -/((a|)+)+Z/ - Z - -/(a)b|(a)c/ - ac - -/(?>(a))b|(a)c/ - ac - -/(?=(a))ab|(a)c/ - ac - -/((?>(a))b|(a)c)/ - ac - -/((?>(a))b|(a)c)++/ - ac - -/(?:(?>(a))b|(a)c)++/ - ac - -/(?=(?>(a))b|(a)c)(..)/ - ac - -/(?>(?>(a))b|(a)c)/ - ac - -/(?:(?>([ab])))+a=/+ - =ba= - -/(?>([ab]))+a=/+ - =ba= - -/((?>(a+)b)+(aabab))/ - aaaabaaabaabab - -/(?>a+|ab)+?c/ - aabc - -/(?>a+|ab)+c/ - aabc - -/(?:a+|ab)+c/ - aabc - -/(?(?=(a))a)/ - a - -/(?(?=(a))a)(b)/ - ab - -/^(?:a|ab)++c/ - aaaabc - -/^(?>a|ab)++c/ - aaaabc - -/^(?:a|ab)+c/ - aaaabc - -/(?=abc){3}abc/+ - abcabcabc - ** Failers - xyz - -/(?=abc)+abc/+ - abcabcabc - ** Failers - xyz - -/(?=abc)++abc/+ - abcabcabc - ** Failers - xyz - -/(?=abc){0}xyz/ - xyz - -/(?=abc){1}xyz/ - ** Failers - xyz - -/(?=(a))?./ - ab - bc - -/(?=(a))??./ - ab - bc - -/^(?=(?1))?[az]([abc])d/ - abd - zcdxx - -/^(?!a){0}\w+/ - aaaaa - -/(?<=(abc))?xyz/ - abcxyz - pqrxyz - -/^[\g<a>]+/ - ggg<<<aaa>>> - ** Failers - \\ga - -/^[\ga]+/ - gggagagaxyz - -/^[:a[:digit:]]+/ - aaaa444:::Z - -/^[:a[:digit:]:b]+/ - aaaa444:::bbbZ - -/[:a]xxx[b:]/ - :xxx: - -/(?<=a{2})b/i - xaabc - ** Failers - xabc - -/(?<!a{2})b/i - xabc - ** Failers - xaabc - -/(?<=a\h)c/ - xa c - -/(?<=[^a]{2})b/ - axxbc - aAAbc - ** Failers - xaabc - -/(?<=[^a]{2})b/i - axxbc - ** Failers - aAAbc - xaabc - -/(?<=a\H)c/ - abc - -/(?<=a\V)c/ - abc - -/(?<=a\v)c/ - a\nc - -/(?(?=c)c|d)++Y/ - XcccddYX - -/(?(?=c)c|d)*+Y/ - XcccddYX - -/^(a{2,3}){2,}+a/ - aaaaaaa - ** Failers - aaaaaa - aaaaaaaaa - -/^(a{2,3})++a/ - ** Failers - aaaaaa - -/^(a{2,3})*+a/ - ** Failers - aaaaaa - -/ab\Cde/ - abXde - -/(?<=ab\Cde)X/ - abZdeX - -/a[\CD]b/ - aCb - aDb - -/a[\C-X]b/ - aJb - -/\H\h\V\v/ - X X\x0a - X\x09X\x0b - ** Failers - \xa0 X\x0a - -/\H*\h+\V?\v{3,4}/ - \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a - \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a - \x09\x20\xa0\x0a\x0b\x0c - ** Failers - \x09\x20\xa0\x0a\x0b - -/\H{3,4}/ - XY ABCDE - XY PQR ST - -/.\h{3,4}./ - XY AB PQRS - -/\h*X\h?\H+Y\H?Z/ - >XNNNYZ - > X NYQZ - ** Failers - >XYZ - > X NY Z - -/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/ - >XY\x0aZ\x0aA\x0bNN\x0c - >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c - -/(foo)\Kbar/ - foobar - -/(foo)(\Kbar|baz)/ - foobar - foobaz - -/(foo\Kbar)baz/ - foobarbaz - -/abc\K|def\K/g+ - Xabcdefghi - -/ab\Kc|de\Kf/g+ - Xabcdefghi - -/(?=C)/g+ - ABCDECBA - -/^abc\K/+ - abcdef - ** Failers - defabcxyz - -/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/ - ababababbbabZXXXX - -/(?<A>tom|bon)-\g{A}/ - tom-tom - bon-bon - -/(^(a|b\g{-1}))/ - bacxxx - -/(?|(abc)|(xyz))\1/ - abcabc - xyzxyz - ** Failers - abcxyz - xyzabc - -/(?|(abc)|(xyz))(?1)/ - abcabc - xyzabc - ** Failers - xyzxyz - -/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/ - XYabcdY - -/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/ - XYabcdY - -/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/ - XYabcdY - -/(?'abc'\w+):\k<abc>{2}/ - a:aaxyz - ab:ababxyz - ** Failers - a:axyz - ab:abxyz - -/(?'abc'\w+):\g{abc}{2}/ - a:aaxyz - ab:ababxyz - ** Failers - a:axyz - ab:abxyz - -/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x - abd - ce - -/^(a.)\g-1Z/ - aXaXZ - -/^(a.)\g{-1}Z/ - aXaXZ - -/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x - abcd - -/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT)) - (?(DEFINE) - (?<NAME_PAT>[a-z]+) - (?<ADDRESS_PAT>\d+) - )/x - metcalfe 33 - -/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/ - 1.2.3.4 - 131.111.10.206 - 10.0.0.0 - ** Failers - 10.6 - 455.3.4.5 - -/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/ - 1.2.3.4 - 131.111.10.206 - 10.0.0.0 - ** Failers - 10.6 - 455.3.4.5 - -/^(\w++|\s++)*$/ - now is the time for all good men to come to the aid of the party - *** Failers - this is not a line with only words and spaces! - -/(\d++)(\w)/ - 12345a - *** Failers - 12345+ - -/a++b/ - aaab - -/(a++b)/ - aaab - -/(a++)b/ - aaab - -/([^()]++|\([^()]*\))+/ - ((abc(ade)ufh()()x - -/\(([^()]++|\([^()]+\))+\)/ - (abc) - (abc(def)xyz) - *** Failers - ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa - -/^([^()]|\((?1)*\))*$/ - abc - a(b)c - a(b(c))d - *** Failers) - a(b(c)d - -/^>abc>([^()]|\((?1)*\))*<xyz<$/ - >abc>123<xyz< - >abc>1(2)3<xyz< - >abc>(1(2)3)<xyz< - -/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i - 1221 - Satanoscillatemymetallicsonatas - AmanaplanacanalPanama - AblewasIereIsawElba - *** Failers - Thequickbrownfox - -/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/ - 12 - (((2+2)*-3)-7) - -12 - *** Failers - ((2+2)*-3)-7) - -/^(x(y|(?1){2})z)/ - xyz - xxyzxyzz - *** Failers - xxyzz - xxyzxyzxyzz - -/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x - <> - <abcd> - <abc <123> hij> - <abc <def> hij> - <abc<>def> - <abc<> - *** Failers - <abc - -/^a+(*FAIL)/ - aaaaaa - -/a+b?c+(*FAIL)/ - aaabccc - -/a+b?(*PRUNE)c+(*FAIL)/ - aaabccc - -/a+b?(*COMMIT)c+(*FAIL)/ - aaabccc - -/a+b?(*SKIP)c+(*FAIL)/ - aaabcccaaabccc - -/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ - aaaxxxxxx - aaa++++++ - bbbxxxxx - bbb+++++ - cccxxxx - ccc++++ - dddddddd - -/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/ - aaaxxxxxx - aaa++++++ - bbbxxxxx - bbb+++++ - cccxxxx - ccc++++ - dddddddd - -/a+b?(*THEN)c+(*FAIL)/ - aaabccc - -/(A (A|B(*ACCEPT)|C) D)(E)/x - AB - ABX - AADE - ACDE - ** Failers - AD - -/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i - 1221 - Satan, oscillate my metallic sonatas! - A man, a plan, a canal: Panama! - Able was I ere I saw Elba. - *** Failers - The quick brown fox - -/^((.)(?1)\2|.)$/ - a - aba - aabaa - abcdcba - pqaabaaqp - ablewasiereisawelba - rhubarb - the quick brown fox - -/(a)(?<=b(?1))/ - baz - ** Failers - caz - -/(?<=b(?1))(a)/ - zbaaz - ** Failers - aaa - -/(?<X>a)(?<=b(?&X))/ - baz - -/^(?|(abc)|(def))\1/ - abcabc - defdef - ** Failers - abcdef - defabc - -/^(?|(abc)|(def))(?1)/ - abcabc - defabc - ** Failers - defdef - abcdef - -/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ - a\"aaaaa - b\"aaaaa - ** Failers - b\"11111 - -/(?:(?1)|B)(A(*F)|C)/ - ABCD - CCD - ** Failers - CAD - -/^(?:(?1)|B)(A(*F)|C)/ - CCD - BCD - ** Failers - ABCD - CAD - BAD - -/(?:(?1)|B)(A(*ACCEPT)XX|C)D/ - AAD - ACD - BAD - BCD - BAX - ** Failers - ACX - ABC - -/(?(DEFINE)(A))B(?1)C/ - BAC - -/(?(DEFINE)((A)\2))B(?1)C/ - BAAC - -/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x - (ab(cd)ef) - -/^(?=a(*SKIP)b|ac)/ - ** Failers - ac - -/^(?=a(*PRUNE)b)/ - ab - ** Failers - ac - -/^(?=a(*ACCEPT)b)/ - ac - -/(?>a\Kb)/ - ab - -/((?>a\Kb))/ - ab - -/(a\Kb)/ - ab - -/^a\Kcz|ac/ - ac - -/(?>a\Kbz|ab)/ - ab - -/^(?&t)(?(DEFINE)(?<t>a\Kb))$/ - ab - -/^([^()]|\((?1)*\))*$/ - a(b)c - a(b(c)d)e - -/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/ - 0 - 00 - 0000 - -/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/ - 0 - 00 - 0000 - -/--- This one does fail, as expected, in Perl. It needs the complex item at the - end of the pattern. A single letter instead of (B|D) makes it not fail, - which I think is a Perl bug. --- / - -/A(*COMMIT)(B|D)/ - ACABX - -/--- Check the use of names for failure ---/ - -/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K - ** Failers - AC - CB - -/--- Force no study, otherwise mark is not seen. The studied version is in - test 2 because it isn't Perl-compatible. ---/ - -/(*MARK:A)(*SKIP:B)(C|X)/KSS - C - D - -/^(A(*THEN:A)B|C(*THEN:B)D)/K - ** Failers - CB - -/^(?:A(*THEN:A)B|C(*THEN:B)D)/K - CB - -/^(?>A(*THEN:A)B|C(*THEN:B)D)/K - CB - -/--- This should succeed, as the skip causes bump to offset 1 (the mark). Note -that we have to have something complicated such as (B|Z) at the end because, -for Perl, a simple character somehow causes an unwanted optimization to mess -with the handling of backtracking verbs. ---/ - -/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK - AAAC - -/--- Test skipping over a non-matching mark. ---/ - -/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK - AAAC - -/--- Check shorthand for MARK ---/ - -/A(*:A)A+(*SKIP:A)(B|Z) | AC/xK - AAAC - -/--- Don't loop! Force no study, otherwise mark is not seen. ---/ - -/(*:A)A+(*SKIP:A)(B|Z)/KSS - AAAC - -/--- This should succeed, as a non-existent skip name disables the skip ---/ - -/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK - AAAC - -/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK - AAAC - -/--- COMMIT at the start of a pattern should act like an anchor. Again, -however, we need the complication for Perl. ---/ - -/(*COMMIT)(A|P)(B|P)(C|P)/ - ABCDEFG - ** Failers - DEFGABC - -/--- COMMIT inside an atomic group can't stop backtracking over the group. ---/ - -/(\w+)(?>b(*COMMIT))\w{2}/ - abbb - -/(\w+)b(*COMMIT)\w{2}/ - abbb - -/--- Check opening parens in comment when seeking forward reference. ---/ - -/(?&t)(?#()(?(DEFINE)(?<t>a))/ - bac - -/--- COMMIT should override THEN ---/ - -/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/ - yes - -/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/ - yes - -/b?(*SKIP)c/ - bc - abc - -/(*SKIP)bc/ - a - -/(*SKIP)b/ - a - -/(?P<abn>(?P=abn)xxx|)+/ - xxx - -/(?i:([^b]))(?1)/ - aa - aA - ** Failers - ab - aB - Ba - ba - -/^(?&t)*+(?(DEFINE)(?<t>a))\w$/ - aaaaaaX - ** Failers - aaaaaa - -/^(?&t)*(?(DEFINE)(?<t>a))\w$/ - aaaaaaX - aaaaaa - -/^(a)*+(\w)/ - aaaaX - YZ - ** Failers - aaaa - -/^(?:a)*+(\w)/ - aaaaX - YZ - ** Failers - aaaa - -/^(a)++(\w)/ - aaaaX - ** Failers - aaaa - YZ - -/^(?:a)++(\w)/ - aaaaX - ** Failers - aaaa - YZ - -/^(a)?+(\w)/ - aaaaX - YZ - -/^(?:a)?+(\w)/ - aaaaX - YZ - -/^(a){2,}+(\w)/ - aaaaX - ** Failers - aaa - YZ - -/^(?:a){2,}+(\w)/ - aaaaX - ** Failers - aaa - YZ - -/(a|)*(?1)b/ - b - ab - aab - -/(a)++(?1)b/ - ** Failers - ab - aab - -/(a)*+(?1)b/ - ** Failers - ab - aab - -/(?1)(?:(b)){0}/ - b - -/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x - foo(bar(baz)+baz(bop)) - -/(A (A|B(*ACCEPT)|C) D)(E)/x - AB - -/\A.*?(a|bc)/ - ba - -/\A.*?(?:a|bc)++/ - ba - -/\A.*?(a|bc)++/ - ba - -/\A.*?(?:a|bc|d)/ - ba - -/(?:(b))++/ - beetle - -/(?(?=(a(*ACCEPT)z))a)/ - a - -/^(a)(?1)+ab/ - aaaab - -/^(a)(?1)++ab/ - aaaab - -/^(?=a(*:M))aZ/K - aZbc - -/^(?!(*:M)b)aZ/K - aZbc - -/(?(DEFINE)(a))?b(?1)/ - backgammon - -/^\N+/ - abc\ndef - -/^\N{1,}/ - abc\ndef - -/(?(R)a+|(?R)b)/ - aaaabcde - -/(?(R)a+|((?R))b)/ - aaaabcde - -/((?(R)a+|(?1)b))/ - aaaabcde - -/((?(R1)a+|(?1)b))/ - aaaabcde - -/((?(R)a|(?1)))*/ - aaa - -/((?(R)a|(?1)))+/ - aaa - -/a(*:any -name)/K - abc - -/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/ - a - ba - bba - -/--- Checking revised (*THEN) handling ---/ - -/--- Capture ---/ - -/^.*? (a(*THEN)b) c/x - aabc - -/^.*? (a(*THEN)b|(*F)) c/x - aabc - -/^.*? ( (a(*THEN)b) | (*F) ) c/x - aabc - -/^.*? ( (a(*THEN)b) ) c/x - aabc - -/--- Non-capture ---/ - -/^.*? (?:a(*THEN)b) c/x - aabc - -/^.*? (?:a(*THEN)b|(*F)) c/x - aabc - -/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x - aabc - -/^.*? (?: (?:a(*THEN)b) ) c/x - aabc - -/--- Atomic ---/ - -/^.*? (?>a(*THEN)b) c/x - aabc - -/^.*? (?>a(*THEN)b|(*F)) c/x - aabc - -/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x - aabc - -/^.*? (?> (?>a(*THEN)b) ) c/x - aabc - -/--- Possessive capture ---/ - -/^.*? (a(*THEN)b)++ c/x - aabc - -/^.*? (a(*THEN)b|(*F))++ c/x - aabc - -/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x - aabc - -/^.*? ( (a(*THEN)b)++ )++ c/x - aabc - -/--- Possessive non-capture ---/ - -/^.*? (?:a(*THEN)b)++ c/x - aabc - -/^.*? (?:a(*THEN)b|(*F))++ c/x - aabc - -/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x - aabc - -/^.*? (?: (?:a(*THEN)b)++ )++ c/x - aabc - -/--- Condition assertion ---/ - -/^(?(?=a(*THEN)b)ab|ac)/ - ac - -/--- Condition ---/ - -/^.*?(?(?=a)a|b(*THEN)c)/ - ba - -/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/ - ba - -/^.*?(?(?=a)a(*THEN)b|c)/ - ac - -/--- Assertion ---/ - -/^.*(?=a(*THEN)b)/ - aabc - -/------------------------------/ - -/(?>a(*:m))/imsxSK - a - -/(?>(a)(*:m))/imsxSK - a - -/(?<=a(*ACCEPT)b)c/ - xacd - -/(?<=(a(*ACCEPT)b))c/ - xacd - -/(?<=(a(*COMMIT)b))c/ - xabcd - ** Failers - xacd - -/(?<!a(*FAIL)b)c/ - xcd - acd - -/(?<=a(*:N)b)c/K - xabcd - -/(?<=a(*PRUNE)b)c/ - xabcd - -/(?<=a(*SKIP)b)c/ - xabcd - -/(?<=a(*THEN)b)c/ - xabcd - -/(a)(?2){2}(.)/ - abcd - -/(*MARK:A)(*PRUNE:B)(C|X)/KS - C - D - -/(*MARK:A)(*PRUNE:B)(C|X)/KSS - C - D - -/(*MARK:A)(*THEN:B)(C|X)/KS - C - D - -/(*MARK:A)(*THEN:B)(C|X)/KSY - C - D - -/(*MARK:A)(*THEN:B)(C|X)/KSS - C - D - -/--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/ - -/A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK - AAAC - -/--- Same --/ - -/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK - AAAC - -/A(*:A)A+(*SKIP)(B|Z) | AC/xK - AAAC - -/--- This should fail, as a null name is the same as no name ---/ - -/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK - AAAC - -/--- A check on what happens after hitting a mark and them bumping along to -something that does not even start. Perl reports tags after the failures here, -though it does not when the individual letters are made into something -more complicated. ---/ - -/A(*:A)B|XX(*:B)Y/K - AABC - XXYZ - ** Failers - XAQQ - XAQQXZZ - AXQQQ - AXXQQQ - -/^(A(*THEN:A)B|C(*THEN:B)D)/K - AB - CD - ** Failers - AC - CB - -/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K - AB - CD - ** Failers - AC - CB - -/--- An empty name does not pass back an empty string. It is the same as if no -name were given. ---/ - -/^(A(*PRUNE:)B|C(*PRUNE:B)D)/K - AB - CD - -/--- PRUNE goes to next bumpalong; COMMIT does not. ---/ - -/A(*PRUNE:A)B/K - ACAB - -/--- Mark names can be duplicated ---/ - -/A(*:A)B|X(*:A)Y/K - AABC - XXYZ - -/b(*:m)f|a(*:n)w/K - aw - ** Failers - abc - -/b(*:m)f|aw/K - abaw - ** Failers - abc - abax - -/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK - AAAC - -/a(*PRUNE:X)bc|qq/KY - ** Failers - axy - -/a(*THEN:X)bc|qq/KY - ** Failers - axy - -/(?=a(*MARK:A)b)..x/K - abxy - ** Failers - abpq - -/(?=a(*MARK:A)b)..(*:Y)x/K - abxy - ** Failers - abpq - -/(?=a(*PRUNE:A)b)..x/K - abxy - ** Failers - abpq - -/(?=a(*PRUNE:A)b)..(*:Y)x/K - abxy - ** Failers - abpq - -/(?=a(*THEN:A)b)..x/K - abxy - ** Failers - abpq - -/(?=a(*THEN:A)b)..(*:Y)x/K - abxy - ** Failers - abpq - -/(another)?(\1?)test/ - hello world test - -/(another)?(\1+)test/ - hello world test - -/(a(*COMMIT)b){0}a(?1)|aac/ - aac - -/((?:a?)*)*c/ - aac - -/((?>a?)*)*c/ - aac - -/(?>.*?a)(?<=ba)/ - aba - -/(?:.*?a)(?<=ba)/ - aba - -/.*?a(*PRUNE)b/ - aab - -/.*?a(*PRUNE)b/s - aab - -/^a(*PRUNE)b/s - aab - -/.*?a(*SKIP)b/ - aab - -/(?>.*?a)b/s - aab - -/(?>.*?a)b/ - aab - -/(?>^a)b/s - aab - -/(?>.*?)(?<=(abcd)|(wxyz))/ - alphabetabcd - endingwxyz - -/(?>.*)(?<=(abcd)|(wxyz))/ - alphabetabcd - endingwxyz - -"(?>.*)foo" - abcdfooxyz - -"(?>.*?)foo" - abcdfooxyz - -/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/ - ac - -/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/ - ac - -/(?<=(*SKIP)ac)a/ - aa - -/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK - AAAC - -/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K - acacd - -/A(*SKIP:m)x|A(*SKIP:n)x|AB/K - AB - -/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K - acacd - -/-- Tests that try to figure out how Perl works. My hypothesis is that the - first verb that is backtracked onto is the one that acts. This seems to be - the case almost all the time, but there is one exception that is perhaps a - bug. --/ - -/-- This matches "aaaac"; each PRUNE advances one character until the subject - no longer starts with 5 'a's. --/ - -/aaaaa(*PRUNE)b|a+c/ - aaaaaac - -/-- Putting SKIP in front of PRUNE makes no difference, as it is never -backtracked onto, whether or not it has a label. --/ - -/aaaaa(*SKIP)(*PRUNE)b|a+c/ - aaaaaac - -/aaaaa(*SKIP:N)(*PRUNE)b|a+c/ - aaaaaac - -/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/ - aaaaaac - -/-- Putting THEN in front makes no difference. */ - -/aaaaa(*THEN)(*PRUNE)b|a+c/ - aaaaaac - -/-- However, putting COMMIT in front of the prune changes it to "no match". I - think this is inconsistent and possibly a bug. For the moment, running this - test is moved out of the Perl-compatible file. --/ - -/aaaaa(*COMMIT)(*PRUNE)b|a+c/ - - -/---- OK, lets play the same game again using SKIP instead of PRUNE. ----/ - -/-- This matches "ac" because SKIP forces the next match to start on the - sixth "a". --/ - -/aaaaa(*SKIP)b|a+c/ - aaaaaac - -/-- Putting PRUNE in front makes no difference. --/ - -/aaaaa(*PRUNE)(*SKIP)b|a+c/ - aaaaaac - -/-- Putting THEN in front makes no difference. --/ - -/aaaaa(*THEN)(*SKIP)b|a+c/ - aaaaaac - -/-- In this case, neither does COMMIT. This still matches "ac". --/ - -/aaaaa(*COMMIT)(*SKIP)b|a+c/ - aaaaaac - -/-- This gives "no match", as expected. --/ - -/aaaaa(*COMMIT)b|a+c/ - aaaaaac - - -/------ Tests using THEN ------/ - -/-- This matches "aaaaaac", as expected. --/ - -/aaaaa(*THEN)b|a+c/ - aaaaaac - -/-- Putting SKIP in front makes no difference. --/ - -/aaaaa(*SKIP)(*THEN)b|a+c/ - aaaaaac - -/-- Putting PRUNE in front makes no difference. --/ - -/aaaaa(*PRUNE)(*THEN)b|a+c/ - aaaaaac - -/-- Putting COMMIT in front makes no difference. --/ - -/aaaaa(*COMMIT)(*THEN)b|a+c/ - aaaaaac - -/-- End of "priority" tests --/ - -/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/ - aaaaaa - -/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/ - aaaaaa - -/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/ - aaaaaa - -/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/ - aaaaaa - -/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/ - aaaac - -/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/ - aaaac - -/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/ - aaaac - -/aaa(*MARK:A)a(*SKIP:A)b|a+c/ - aaaac - -/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K - aaaaaac - -/.?(a|b(*THEN)c)/ - ba - -/(a(*COMMIT)b)c|abd/ - abc - abd - -/(?=a(*COMMIT)b)abc|abd/ - abc - abd - -/(?>a(*COMMIT)b)c|abd/ - abc - abd - -/a(?=b(*COMMIT)c)[^d]|abd/ - abd - abc - -/a(?=bc).|abd/ - abd - abc - -/a(?>b(*COMMIT)c)d|abd/ - abceabd - -/a(?>bc)d|abd/ - abceabd - -/(?>a(*COMMIT)b)c|abd/ - abd - -/(?>a(*COMMIT)c)d|abd/ - abd - -/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/ - ac - -/-- These tests were formerly in test 2, but changes in PCRE and Perl have - made them compatible. --/ - -/^(a)?(?(1)a|b)+$/ - *** Failers - a - -/(?=a\Kb)ab/ - ab - -/(?!a\Kb)ac/ - ac - -/^abc(?<=b\Kc)d/ - abcd - -/^abc(?<!b\Kq)d/ - abcd - - -/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK - AAAC - -/^((abc|abcx)(*THEN)y|abcd)/ - abcd - *** Failers - abcxy - -/^((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(*COMMIT)b|ac)ac|ac/ - ac - -/(?=a(*COMMIT)b|(ac)) ac | (a)c/x - ac - -/--------/ - -/(?(?!b(*THEN)a)bn|bnn)/ - bnn - -/(?!b(*SKIP)a)bn|bnn/ - bnn - -/(?(?!b(*SKIP)a)bn|bnn)/ - bnn - -/(?!b(*PRUNE)a)bn|bnn/ - bnn - -/(?(?!b(*PRUNE)a)bn|bnn)/ - bnn - -/(?!b(*COMMIT)a)bn|bnn/ - bnn - -/(?(?!b(*COMMIT)a)bn|bnn)/ - bnn - -/(?=b(*SKIP)a)bn|bnn/ - bnn - -/(?=b(*THEN)a)bn|bnn/ - bnn - - /^(?!a(*SKIP)b)/ - ac - - /^(?!a(*SKIP)b)../ - acd - -/(?!a(*SKIP)b)../ - acd - -/^(?(?!a(*SKIP)b))/ - ac - -/^(?!a(*PRUNE)b)../ - acd - -/(?!a(*PRUNE)b)../ - acd - - /(?!a(*COMMIT)b)ac|cd/ - ac - -/\A.*?(?:a|bc)/ - ba - -/^(A(*THEN)B|C(*THEN)D)/ - CD - -/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K - abc - -/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K - abc - -/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K - abc - -/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K - abc - -/^\d*\w{4}/ - 1234 - 123 - -/^[^b]*\w{4}/ - aaaa - aaa - -/^[^b]*\w{4}/i - aaaa - aaa - -/^a*\w{4}/ - aaaa - aaa - -/^a*\w{4}/i - aaaa - aaa - -/(?(?=ab)ab)/+ - ca - cd - -/(?:(?<n>foo)|(?<n>bar))\k<n>/J - foofoo - barbar - -/(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/J - AfooA - AbarA - ** Failers - Afoofoo - Abarbar - -/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/ - 1 IN SOA non-sp1 non-sp2( - -/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/xJ - Ax - BAxy - -/^A\xZ/ - A\0Z - -/^A\o{123}B/ - A\123B - -/ ^ a + + b $ /x - aaaab - -/ ^ a + #comment - + b $ /x - aaaab - -/ ^ a + #comment - #comment - + b $ /x - aaaab - -/ ^ (?> a + ) b $ /x - aaaab - -/ ^ ( a + ) + + \w $ /x - aaaab - -/(?:a\Kb)*+/+ - ababc - -/(?>a\Kb)*/+ - ababc - -/(?:a\Kb)*/+ - ababc - -/(a\Kb)*+/+ - ababc - -/(a\Kb)*/+ - ababc - -/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/ - acb - -'\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++' - NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED - -'\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++' - NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED - -'\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++' - NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED - -'\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++' - NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED - -/^\w+(?>\s*)(?<=\w)/ - test test - -/(?P<same>a)(?P<same>b)/gJ - abbaba - -/(?P<same>a)(?P<same>b)(?P=same)/gJ - abbaba - -/(?P=same)?(?P<same>a)(?P<same>b)/gJ - abbaba - -/(?:(?P=same)?(?:(?P<same>a)|(?P<same>b))(?P=same))+/gJ - bbbaaabaabb - -/(?:(?P=same)?(?:(?P=same)(?P<same>a)(?P=same)|(?P=same)?(?P<same>b)(?P=same)){2}(?P=same)(?P<same>c)(?P=same)){2}(?P<same>z)?/gJ - bbbaaaccccaaabbbcc - -/(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/ - acl - bdl - adl - bcl - -/\sabc/ - \x{0b}abc - -/[\Qa]\E]+/ - aa]] - -/[\Q]a\E]+/ - aa]] - -/(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/ - 1234abcd - -/(\2)(\1)/ - -"Z*(|d*){216}" - -"(?1)(?#?'){8}(a)" - baaaaaaaaac - -"(?|(\k'Pm')|(?'Pm'))" - abcd - -/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])/ - \ Fred:099 - -/(?=.*X)X$/ - \ X - -/X+(?#comment)?/ - >XXX< - -/-- End of testinput1 --/ |