Return-Path: Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: (qmail 41547 invoked from network); 26 Nov 2007 17:07:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 26 Nov 2007 17:07:01 -0000 Received: (qmail 8247 invoked by uid 500); 26 Nov 2007 17:06:46 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 8093 invoked by uid 500); 26 Nov 2007 17:06:45 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 7874 invoked by uid 99); 26 Nov 2007 17:06:44 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Nov 2007 09:06:43 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED,OBSCURED_EMAIL X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 26 Nov 2007 17:06:23 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id EF6CF1A9878; Mon, 26 Nov 2007 09:05:26 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r598343 [21/22] - in /httpd/httpd/vendor/pcre/current: ./ doc/ doc/html/ testdata/ Date: Mon, 26 Nov 2007 17:04:37 -0000 To: cvs@httpd.apache.org From: pgollucci@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071126170526.EF6CF1A9878@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Modified: httpd/httpd/vendor/pcre/current/testdata/testoutput2 URL: http://svn.apache.org/viewvc/httpd/httpd/vendor/pcre/current/testdata/testoutput2?rev=598343&r1=598342&r2=598343&view=diff ============================================================================== --- httpd/httpd/vendor/pcre/current/testdata/testoutput2 (original) +++ httpd/httpd/vendor/pcre/current/testdata/testoutput2 Mon Nov 26 09:04:19 2007 @@ -1,10 +1,12 @@ -/(a)b|/I +PCRE version 5.0 13-Sep-2004 + +/(a)b|/ Capturing subpattern count = 1 No options No first char No need char -/abc/I +/abc/ Capturing subpattern count = 0 No options First char = 'a' @@ -22,7 +24,7 @@ ABC No match -/^abc/I +/^abc/ Capturing subpattern count = 0 Options: anchored No first char @@ -38,35 +40,35 @@ \Adefabc No match -/a+bc/I +/a+bc/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'c' -/a*bc/I +/a*bc/ Capturing subpattern count = 0 Partial matching not supported No options No first char Need char = 'c' -/a{3}bc/I +/a{3}bc/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'c' -/(abc|a+z)/I +/(abc|a+z)/ Capturing subpattern count = 1 Partial matching not supported No options First char = 'a' No need char -/^abc$/I +/^abc$/ Capturing subpattern count = 0 Options: anchored No first char @@ -78,10 +80,10 @@ def\nabc No match -/ab\idef/X +/ab\gdef/X Failed: unrecognized character follows \ at offset 3 -/(?X)ab\idef/X +/(?X)ab\gdef/X Failed: unrecognized character follows \ at offset 7 /x{5,4}/ @@ -111,21 +113,21 @@ /(?z)abc/ Failed: unrecognized character after (? at offset 2 -/.*b/I +/.*b/ Capturing subpattern count = 0 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n Need char = 'b' -/.*?b/I +/.*?b/ Capturing subpattern count = 0 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n Need char = 'b' -/cat|dog|elephant/I +/cat|dog|elephant/ Capturing subpattern count = 0 No options No first char @@ -135,7 +137,7 @@ this sentences rambles on and on for a while and then reaches elephant 0: elephant -/cat|dog|elephant/IS +/cat|dog|elephant/S Capturing subpattern count = 0 No options No first char @@ -146,7 +148,7 @@ this sentences rambles on and on for a while and then reaches elephant 0: elephant -/cat|dog|elephant/IiS +/cat|dog|elephant/iS Capturing subpattern count = 0 Options: caseless No first char @@ -157,14 +159,14 @@ this sentences rambles on and on for a while to elephant ElePhant 0: elephant -/a|[bcd]/IS +/a|[bcd]/S Capturing subpattern count = 0 No options No first char No need char Starting byte set: a b c d -/(a|[^\dZ])/IS +/(a|[^\dZ])/S Capturing subpattern count = 1 No options No first char @@ -184,7 +186,7 @@ \xed \xee \xef \xf0 \xf1 \xf2 \xf3 \xf4 \xf5 \xf6 \xf7 \xf8 \xf9 \xfa \xfb \xfc \xfd \xfe \xff -/(a|b)*[\s]/IS +/(a|b)*[\s]/S Capturing subpattern count = 1 No options No first char @@ -197,7 +199,7 @@ /{4,5}abc/ Failed: nothing to repeat at offset 4 -/(a)(b)(c)\2/I +/(a)(b)(c)\2/ Capturing subpattern count = 3 Max back reference = 2 No options @@ -222,13 +224,13 @@ 0: abcb 1: a 2: b - \O12abcb + \O12abcb 0: abcb 1: a 2: b 3: c -/(a)bc|(a)(b)\2/I +/(a)bc|(a)(b)\2/ Capturing subpattern count = 3 Max back reference = 2 No options @@ -270,7 +272,7 @@ 2: a 3: b -/abc$/IE +/abc$/E Capturing subpattern count = 0 Options: dollar_endonly First char = 'a' @@ -287,7 +289,7 @@ /(a)(b)(c)(d)(e)\6/ Failed: reference to non-existent subpattern at offset 17 -/the quick brown fox/I +/the quick brown fox/ Capturing subpattern count = 0 No options First char = 't' @@ -297,7 +299,7 @@ this is a line with the quick brown fox 0: the quick brown fox -/the quick brown fox/IA +/the quick brown fox/A Capturing subpattern count = 0 Options: anchored No first char @@ -312,7 +314,7 @@ /ab(?z)cd/ Failed: unrecognized character after (? at offset 4 -/^abc|def/I +/^abc|def/ Capturing subpattern count = 0 No options No first char @@ -322,11 +324,11 @@ abcdef\B 0: def -/.*((abc)$|(def))/I +/.*((abc)$|(def))/ Capturing subpattern count = 3 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n No need char defabc 0: defabc @@ -338,19 +340,19 @@ 2: 3: def -/abc/IP +/abc/P abc 0: abc *** Failers No match: POSIX code 17: match failed - -/^abc|def/IP + +/^abc|def/P abcdef 0: abc abcdef\B 0: def -/.*((abc)$|(def))/IP +/.*((abc)$|(def))/P defabc 0: defabc 1: abc @@ -359,37 +361,37 @@ 0: def 1: def 3: def - -/the quick brown fox/IP + +/the quick brown fox/P the quick brown fox 0: the quick brown fox - *** Failers + *** Failers No match: POSIX code 17: match failed - The Quick Brown Fox + The Quick Brown Fox No match: POSIX code 17: match failed -/the quick brown fox/IPi +/the quick brown fox/Pi the quick brown fox 0: the quick brown fox - The Quick Brown Fox + The Quick Brown Fox 0: The Quick Brown Fox -/abc.def/IP +/abc.def/P *** Failers No match: POSIX code 17: match failed abc\ndef No match: POSIX code 17: match failed - -/abc$/IP + +/abc$/P abc 0: abc - abc\n + abc\n 0: abc -/(abc)\2/IP +/(abc)\2/P Failed: POSIX code 15: bad back reference at offset 7 -/(abc\1)/IP +/(abc\1)/P abc No match: POSIX code 17: match failed @@ -399,16 +401,16 @@ /a[]b/ Failed: missing terminating ] for character class at offset 4 -/[^aeiou ]{3,}/I +/[^aeiou ]{3,}/ Capturing subpattern count = 0 Partial matching not supported No options No first char No need char - co-processors, and for + co-processors, and for 0: -pr - -/<.*>/I + +/<.*>/ Capturing subpattern count = 0 Partial matching not supported No options @@ -417,7 +419,7 @@ abcghinop 0: ghi -/<.*?>/I +/<.*?>/ Capturing subpattern count = 0 Partial matching not supported No options @@ -426,7 +428,7 @@ abcghinop 0: -/<.*>/IU +/<.*>/U Capturing subpattern count = 0 Partial matching not supported Options: ungreedy @@ -434,8 +436,8 @@ Need char = '>' abcghinop 0: - -/(?U)<.*>/I + +/(?U)<.*>/ Capturing subpattern count = 0 Partial matching not supported Options: ungreedy @@ -444,7 +446,7 @@ abcghinop 0: -/<.*?>/IU +/<.*?>/U Capturing subpattern count = 0 Partial matching not supported Options: ungreedy @@ -452,8 +454,8 @@ Need char = '>' abcghinop 0: ghi - -/={3,}/IU + +/={3,}/U Capturing subpattern count = 0 Partial matching not supported Options: ungreedy @@ -461,8 +463,8 @@ Need char = '=' abc========def 0: === - -/(?U)={3,}?/I + +/(?U)={3,}?/ Capturing subpattern count = 0 Partial matching not supported Options: ungreedy @@ -470,21 +472,21 @@ Need char = '=' abc========def 0: ======== - -/(?^abc)/Im +/(?>^abc)/m Capturing subpattern count = 0 Options: multiline -First char at start or follows newline +First char at start or follows \n Need char = 'c' abc 0: abc @@ -746,7 +747,7 @@ 0: abc *** Failers No match - defabc + defabc No match /(?<=ab(c+)d)ef/ @@ -759,8 +760,12 @@ Failed: lookbehind assertion is not fixed length at offset 13 /The next three are in testinput2 because they have variable length branches/ +Capturing subpattern count = 0 +No options +First char = 'T' +Need char = 's' -/(?<=bullock|donkey)-cart/I +/(?<=bullock|donkey)-cart/ Capturing subpattern count = 0 No options First char = '-' @@ -773,20 +778,21 @@ No match cart No match - horse-and-cart + horse-and-cart No match - -/(?<=ab(?i)x|y|z)/I + +/(?<=ab(?i)x|y|z)/ Capturing subpattern count = 0 No options +Case state changes No first char No need char -/(?>.*)(?<=(abcd)|(xyz))/I +/(?>.*)(?<=(abcd)|(xyz))/ Capturing subpattern count = 2 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n No need char alphabetabcd 0: alphabetabcd @@ -796,9 +802,10 @@ 1: 2: xyz -/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/I +/(?<=ab(?i)x(?-i)y|(?i)z|b)ZZ/ Capturing subpattern count = 0 No options +Case state changes First char = 'Z' Need char = 'Z' abxyZZ @@ -811,56 +818,56 @@ 0: ZZ bZZ 0: ZZ - BZZ + BZZ 0: ZZ *** Failers No match - ZZ + ZZ No match - abXYZZ + abXYZZ No match zzz No match - bzz + bzz No match -/(? @@ -1072,7 +1079,7 @@ 1L a 2L 3L f - bcdef\G1\G2\G3\G4\L + bcdef\G1\G2\G3\G4\L 0: bcdef 1: bc 2: bc @@ -1085,54 +1092,54 @@ 1L bc 2L bc 3L f - adefghijk\C0 + adefghijk\C0 0: adef 1: a 2: 3: f 0C adef (4) - -/^abc\00def/I + +/^abc\00def/ Capturing subpattern count = 0 Options: anchored No first char No need char - abc\00def\L\C0 + abc\00def\L\C0 0: abc\x00def 0C abc (7) 0L abc - -/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ -)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ -)?)?)?)?)?)?)?)?)?otherword/I + +/word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ +)((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ +)?)?)?)?)?)?)?)?)?otherword/M +Memory allocation (code space): 432 Capturing subpattern count = 8 Partial matching not supported -Contains explicit CR or LF match No options First char = 'w' Need char = 'd' -/.*X/IDZ +/.*X/D ------------------------------------------------------------------ - Bra - Any* - X - Ket - End + 0 7 Bra 0 + 3 Any* + 5 X + 7 7 Ket + 10 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n Need char = 'X' -/.*X/IDZs +/.*X/Ds ------------------------------------------------------------------ - Bra - Any* - X - Ket - End + 0 7 Bra 0 + 3 Any* + 5 X + 7 7 Ket + 10 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -1140,56 +1147,56 @@ No first char Need char = 'X' -/(.*X|^B)/IDZ +/(.*X|^B)/D ------------------------------------------------------------------ - Bra - CBra 1 - Any* - X - Alt - ^ - B - Ket - Ket - End + 0 19 Bra 0 + 3 7 Bra 1 + 6 Any* + 8 X + 10 6 Alt + 13 ^ + 14 B + 16 13 Ket + 19 19 Ket + 22 End ------------------------------------------------------------------ Capturing subpattern count = 1 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n No need char -/(.*X|^B)/IDZs +/(.*X|^B)/Ds ------------------------------------------------------------------ - Bra - CBra 1 - Any* - X - Alt - ^ - B - Ket - Ket - End + 0 19 Bra 0 + 3 7 Bra 1 + 6 Any* + 8 X + 10 6 Alt + 13 ^ + 14 B + 16 13 Ket + 19 19 Ket + 22 End ------------------------------------------------------------------ Capturing subpattern count = 1 Partial matching not supported Options: anchored dotall No first char No need char - -/(?s)(.*X|^B)/IDZ + +/(?s)(.*X|^B)/D ------------------------------------------------------------------ - Bra - CBra 1 - Any* - X - Alt - ^ - B - Ket - Ket - End + 0 19 Bra 0 + 3 7 Bra 1 + 6 Any* + 8 X + 10 6 Alt + 13 ^ + 14 B + 16 13 Ket + 19 19 Ket + 22 End ------------------------------------------------------------------ Capturing subpattern count = 1 Partial matching not supported @@ -1197,29 +1204,29 @@ No first char No need char -/(?s:.*X|^B)/IDZ +/(?s:.*X|^B)/D ------------------------------------------------------------------ - Bra - Bra - 04 Opt - Any* - X - Alt - 04 Opt - ^ - B - Ket - 00 Opt - Ket - End + 0 25 Bra 0 + 3 9 Bra 0 + 6 04 Opt + 8 Any* + 10 X + 12 8 Alt + 15 04 Opt + 17 ^ + 18 B + 20 17 Ket + 23 00 Opt + 25 25 Ket + 28 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n No need char -/\Biss\B/I+ +/\Biss\B/+ Capturing subpattern count = 0 No options First char = 'i' @@ -1228,12 +1235,12 @@ 0: iss 0+ issippi -/\Biss\B/I+P +/\Biss\B/+P Mississippi 0: iss 0+ issippi -/iss/IG+ +/iss/G+ Capturing subpattern count = 0 No options First char = 'i' @@ -1244,7 +1251,7 @@ 0: iss 0+ ippi -/\Biss\B/IG+ +/\Biss\B/G+ Capturing subpattern count = 0 No options First char = 'i' @@ -1253,7 +1260,7 @@ 0: iss 0+ issippi -/\Biss\B/Ig+ +/\Biss\B/g+ Capturing subpattern count = 0 No options First char = 'i' @@ -1268,7 +1275,7 @@ Mississippi\A No match -/(?<=[Ms])iss/Ig+ +/(?<=[Ms])iss/g+ Capturing subpattern count = 0 No options First char = 'i' @@ -1279,7 +1286,7 @@ 0: iss 0+ ippi -/(?<=[Ms])iss/IG+ +/(?<=[Ms])iss/G+ Capturing subpattern count = 0 No options First char = 'i' @@ -1288,7 +1295,7 @@ 0: iss 0+ issippi -/^iss/Ig+ +/^iss/g+ Capturing subpattern count = 0 Options: anchored No first char @@ -1296,20 +1303,20 @@ ississippi 0: iss 0+ issippi - -/.*iss/Ig+ + +/.*iss/g+ Capturing subpattern count = 0 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n Need char = 's' - abciss\nxyzisspqr + abciss\nxyzisspqr 0: abciss 0+ \x0axyzisspqr 0: xyziss 0+ pqr -/.i./I+g +/.i./+g Capturing subpattern count = 0 No options No first char @@ -1335,11 +1342,11 @@ 0+ river 0: riv 0+ er - Missouri river\A + Missouri river\A 0: Mis 0+ souri river -/^.is/I+g +/^.is/+g Capturing subpattern count = 0 Options: anchored No first char @@ -1348,9 +1355,8 @@ 0: Mis 0+ sissippi -/^ab\n/Ig+ +/^ab\n/g+ Capturing subpattern count = 0 -Contains explicit CR or LF match Options: anchored No first char No need char @@ -1358,11 +1364,10 @@ 0: ab\x0a 0+ ab\x0acd -/^ab\n/Img+ +/^ab\n/mg+ Capturing subpattern count = 0 -Contains explicit CR or LF match Options: multiline -First char at start or follows newline +First char at start or follows \n Need char = 10 ab\nab\ncd 0: ab\x0a @@ -1370,272 +1375,272 @@ 0: ab\x0a 0+ cd -/abc/I +/abc/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'c' -/abc|bac/I +/abc|bac/ Capturing subpattern count = 0 No options No first char Need char = 'c' -/(abc|bac)/I +/(abc|bac)/ Capturing subpattern count = 1 No options No first char Need char = 'c' -/(abc|(c|dc))/I +/(abc|(c|dc))/ Capturing subpattern count = 2 No options No first char Need char = 'c' -/(abc|(d|de)c)/I +/(abc|(d|de)c)/ Capturing subpattern count = 2 No options No first char Need char = 'c' -/a*/I +/a*/ Capturing subpattern count = 0 Partial matching not supported No options No first char No need char -/a+/I +/a+/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' No need char -/(baa|a+)/I +/(baa|a+)/ Capturing subpattern count = 1 Partial matching not supported No options No first char Need char = 'a' -/a{0,3}/I +/a{0,3}/ Capturing subpattern count = 0 Partial matching not supported No options No first char No need char -/baa{3,}/I +/baa{3,}/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'b' Need char = 'a' -/"([^\\"]+|\\.)*"/I +/"([^\\"]+|\\.)*"/ Capturing subpattern count = 1 Partial matching not supported No options First char = '"' Need char = '"' -/(abc|ab[cd])/I +/(abc|ab[cd])/ Capturing subpattern count = 1 No options First char = 'a' No need char -/(a|.)/I +/(a|.)/ Capturing subpattern count = 1 No options No first char No need char -/a|ba|\w/I +/a|ba|\w/ Capturing subpattern count = 0 No options No first char No need char -/abc(?=pqr)/I +/abc(?=pqr)/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'r' -/...(?<=abc)/I +/...(?<=abc)/ Capturing subpattern count = 0 No options No first char No need char -/abc(?!pqr)/I +/abc(?!pqr)/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'c' -/ab./I +/ab./ Capturing subpattern count = 0 No options First char = 'a' Need char = 'b' -/ab[xyz]/I +/ab[xyz]/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'b' -/abc*/I +/abc*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'b' -/ab.c*/I +/ab.c*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'b' -/a.c*/I +/a.c*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' No need char -/.c*/I +/.c*/ Capturing subpattern count = 0 Partial matching not supported No options No first char No need char -/ac*/I +/ac*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' No need char -/(a.c*|b.c*)/I +/(a.c*|b.c*)/ Capturing subpattern count = 1 Partial matching not supported No options No first char No need char -/a.c*|aba/I +/a.c*|aba/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' No need char -/.+a/I +/.+a/ Capturing subpattern count = 0 Partial matching not supported No options No first char Need char = 'a' -/(?=abcda)a.*/I +/(?=abcda)a.*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'a' -/(?=a)a.*/I +/(?=a)a.*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' No need char -/a(b)*/I +/a(b)*/ Capturing subpattern count = 1 No options First char = 'a' No need char -/a\d*/I +/a\d*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' No need char -/ab\d*/I +/ab\d*/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'b' -/a(\d)*/I +/a(\d)*/ Capturing subpattern count = 1 No options First char = 'a' No need char -/abcde{0,0}/I +/abcde{0,0}/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'd' -/ab\d+/I +/ab\d+/ Capturing subpattern count = 0 Partial matching not supported No options First char = 'a' Need char = 'b' -/a(?(1)b)/I +/a(?(1)b)/ Capturing subpattern count = 0 No options First char = 'a' No need char -/a(?(1)bag|big)/I +/a(?(1)bag|big)/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'g' -/a(?(1)bag|big)*/I +/a(?(1)bag|big)*/ Capturing subpattern count = 0 No options First char = 'a' No need char -/a(?(1)bag|big)+/I +/a(?(1)bag|big)+/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'g' -/a(?(1)b..|b..)/I +/a(?(1)b..|b..)/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'b' -/ab\d{0}e/I +/ab\d{0}e/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'e' -/a?b?/I +/a?b?/ Capturing subpattern count = 0 No options No first char @@ -1650,10 +1655,10 @@ 0: *** Failers 0: - \N + \N No match - -/|-/I + +/|-/ Capturing subpattern count = 0 No options No first char @@ -1666,10 +1671,10 @@ 0: - *** Failers 0: - \Nabc + \Nabc No match -/a*(b+)(z)(z)/IP +/a*(b+)(z)(z)/P aaaabbbbzzzz 0: aaaabbbbzz 1: bbbb @@ -1695,8 +1700,8 @@ 1: bbbb 2: z 3: z - -/^.?abcd/IS + +/^.?abcd/S Capturing subpattern count = 0 Options: anchored No first char @@ -1710,7 +1715,7 @@ (?R) # Recurse - i.e. nested bracketed string )* # Zero or more contents \) # Closing ) - /Ix + /x Capturing subpattern count = 0 Partial matching not supported Options: extended @@ -1722,30 +1727,30 @@ 0: (abcd) xyz(abcd) 0: (abcd) - (ab(xy)cd)pqr + (ab(xy)cd)pqr 0: (ab(xy)cd) - (ab(xycd)pqr + (ab(xycd)pqr 0: (xycd) - () abc () + () abc () 0: () 12(abcde(fsh)xyz(foo(bar))lmno)89 0: (abcde(fsh)xyz(foo(bar))lmno) *** Failers No match - abcd + abcd No match abcd) No match - (abcd + (abcd No match -/\( ( (?>[^()]+) | (?R) )* \) /Ixg +/\( ( (?>[^()]+) | (?R) )* \) /xg Capturing subpattern count = 1 Partial matching not supported Options: extended First char = '(' Need char = ')' - (ab(xy)cd)pqr + (ab(xy)cd)pqr 0: (ab(xy)cd) 1: cd 1(abcd)(x(y)z)pqr @@ -1754,7 +1759,7 @@ 0: (x(y)z) 1: z -/\( (?: (?>[^()]+) | (?R) ) \) /Ix +/\( (?: (?>[^()]+) | (?R) ) \) /x Capturing subpattern count = 0 Partial matching not supported Options: extended @@ -1764,16 +1769,16 @@ 0: (abcd) (ab(xy)cd) 0: (xy) - (a(b(c)d)e) + (a(b(c)d)e) 0: (c) - ((ab)) + ((ab)) 0: ((ab)) *** Failers No match - () + () No match -/\( (?: (?>[^()]+) | (?R) )? \) /Ix +/\( (?: (?>[^()]+) | (?R) )? \) /x Capturing subpattern count = 0 Partial matching not supported Options: extended @@ -1784,7 +1789,7 @@ 12(abcde(fsh)xyz(foo(bar))lmno)89 0: (fsh) -/\( ( (?>[^()]+) | (?R) )* \) /Ix +/\( ( (?>[^()]+) | (?R) )* \) /x Capturing subpattern count = 1 Partial matching not supported Options: extended @@ -1794,7 +1799,7 @@ 0: (ab(xy)cd) 1: cd -/\( ( ( (?>[^()]+) | (?R) )* ) \) /Ix +/\( ( ( (?>[^()]+) | (?R) )* ) \) /x Capturing subpattern count = 2 Partial matching not supported Options: extended @@ -1805,7 +1810,7 @@ 1: ab(xy)cd 2: cd -/\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /Ix +/\( (123)? ( ( (?>[^()]+) | (?R) )* ) \) /x Capturing subpattern count = 3 Partial matching not supported Options: extended @@ -1822,7 +1827,7 @@ 2: ab(xy)cd 3: cd -/\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /Ix +/\( ( (123)? ( (?>[^()]+) | (?R) )* ) \) /x Capturing subpattern count = 3 Partial matching not supported Options: extended @@ -1839,7 +1844,7 @@ 2: 123 3: cd -/\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /Ix +/\( (((((((((( ( (?>[^()]+) | (?R) )* )))))))))) \) /x Capturing subpattern count = 11 Partial matching not supported Options: extended @@ -1859,7 +1864,7 @@ 10: ab(xy)cd 11: cd -/\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /Ix +/\( ( ( (?>[^()<>]+) | ((?>[^()]+)) | (?R) )* ) \) /x Capturing subpattern count = 3 Partial matching not supported Options: extended @@ -1871,7 +1876,7 @@ 2: 123 3: -/\( ( ( (?>[^()]+) | ((?R)) )* ) \) /Ix +/\( ( ( (?>[^()]+) | ((?R)) )* ) \) /x Capturing subpattern count = 3 Partial matching not supported Options: extended @@ -1888,339 +1893,311 @@ 2: ij 3: (cd(ef)gh) -/^[[:alnum:]]/DZ ------------------------------------------------------------------- - Bra - ^ - [0-9A-Za-z] - Ket - End ------------------------------------------------------------------- -Capturing subpattern count = 0 -Options: anchored -No first char -No need char - -/^[[:^alnum:]]/DZ +/^[[:alnum:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-/:-@[-`{-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [0-9A-Za-z] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:alpha:]]/DZ +/^[[:^alnum:]]/D ------------------------------------------------------------------ - Bra - ^ - [A-Za-z] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x00-/:-@[-`{-\xff] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:^alpha:]]/DZ +/^[[:alpha:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-@[-`{-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [A-Za-z] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/[_[:alpha:]]/IS -Capturing subpattern count = 0 -No options -No first char -No need char -Starting byte set: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - _ a b c d e f g h i j k l m n o p q r s t u v w x y z - -/^[[:ascii:]]/DZ +/^[[:^alpha:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-\x7f] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x00-@[-`{-\xff] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char - -/^[[:^ascii:]]/DZ + +/^[[:ascii:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x80-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x00-\x7f] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:blank:]]/DZ +/^[[:^ascii:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x09 ] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x80-\xff] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:^blank:]]/DZ +/^[[:blank:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-\x08\x0a-\x1f!-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x09 ] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/[\n\x0b\x0c\x0d[:blank:]]/IS -Capturing subpattern count = 0 -Contains explicit CR or LF match -No options -No first char -No need char -Starting byte set: \x09 \x0a \x0b \x0c \x0d \x20 - -/^[[:cntrl:]]/DZ +/^[[:cntrl:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-\x1f\x7f] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x00-\x1f\x7f] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:digit:]]/DZ +/^[[:digit:]]/D ------------------------------------------------------------------ - Bra - ^ - [0-9] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [0-9] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:graph:]]/DZ +/^[[:graph:]]/D ------------------------------------------------------------------ - Bra - ^ - [!-~] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [!-~] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:lower:]]/DZ +/^[[:lower:]]/D ------------------------------------------------------------------ - Bra - ^ - [a-z] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [a-z] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:print:]]/DZ +/^[[:print:]]/D ------------------------------------------------------------------ - Bra - ^ - [ -~] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [ -~] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:punct:]]/DZ +/^[[:punct:]]/D ------------------------------------------------------------------ - Bra - ^ - [!-/:-@[-`{-~] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [!-/:-@[-`{-~] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:space:]]/DZ +/^[[:space:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x09-\x0d ] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x09-\x0d ] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:upper:]]/DZ +/^[[:upper:]]/D ------------------------------------------------------------------ - Bra - ^ - [A-Z] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [A-Z] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:xdigit:]]/DZ +/^[[:xdigit:]]/D ------------------------------------------------------------------ - Bra - ^ - [0-9A-Fa-f] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [0-9A-Fa-f] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:word:]]/DZ +/^[[:word:]]/D ------------------------------------------------------------------ - Bra - ^ - [0-9A-Z_a-z] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [0-9A-Z_a-z] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:^cntrl:]]/DZ +/^[[:^cntrl:]]/D ------------------------------------------------------------------ - Bra - ^ - [ -~\x80-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [ -~\x80-\xff] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[12[:^digit:]]/DZ +/^[12[:^digit:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-/12:-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x00-/12:-\xff] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/^[[:^blank:]]/DZ +/^[[:^blank:]]/D ------------------------------------------------------------------ - Bra - ^ - [\x00-\x08\x0a-\x1f!-\xff] - Ket - End + 0 37 Bra 0 + 3 ^ + 4 [\x00-\x08\x0a-\x1f!-\xff] + 37 37 Ket + 40 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: anchored No first char No need char -/[01[:alpha:]%]/DZ +/[01[:alpha:]%]/D ------------------------------------------------------------------ - Bra - [%01A-Za-z] - Ket - End + 0 36 Bra 0 + 3 [%01A-Za-z] + 36 36 Ket + 39 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/[[.ch.]]/I +/[[.ch.]]/ Failed: POSIX collating elements are not supported at offset 1 -/[[=ch=]]/I +/[[=ch=]]/ Failed: POSIX collating elements are not supported at offset 1 -/[[:rhubarb:]]/I +/[[:rhubarb:]]/ Failed: unknown POSIX class name at offset 3 -/[[:upper:]]/Ii +/[[:upper:]]/i Capturing subpattern count = 0 Options: caseless No first char No need char A 0: A - a + a 0: a - -/[[:lower:]]/Ii + +/[[:lower:]]/i Capturing subpattern count = 0 Options: caseless No first char No need char A 0: A - a + a 0: a -/((?-i)[[:lower:]])[[:lower:]]/Ii +/((?-i)[[:lower:]])[[:lower:]]/i Capturing subpattern count = 1 Options: caseless +Case state changes No first char No need char ab @@ -2234,22 +2211,22 @@ 1: a Ab No match - AB + AB No match -/[\200-\110]/I +/[\200-\410]/ Failed: range out of order in character class at offset 9 -/^(?(0)f|b)oo/I -Failed: invalid condition (?(0) at offset 6 +/^(?(0)f|b)oo/ +Failed: invalid condition (?(0) at offset 5 -/This one's here because of the large output vector needed/I +/This one's here because of the large output vector needed/ Capturing subpattern count = 0 No options First char = 'T' Need char = 'd' -/(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$)) (\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))( \d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\ d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/I +/(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$)) (\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))( \d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\ d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\d+(?:\s|$))(\w+)\s+(\270)/ Capturing subpattern count = 271 Max back reference = 270 Partial matching not supported @@ -2530,13 +2507,13 @@ 270: ABC 271: ABC -/This one's here because Perl does this differently and PCRE can't at present/I +/This one's here because Perl does this differently and PCRE can't at present/ Capturing subpattern count = 0 No options First char = 'T' Need char = 't' -/(main(O)?)+/I +/(main(O)?)+/ Capturing subpattern count = 2 No options First char = 'm' @@ -2548,14 +2525,14 @@ 0: mainOmain 1: main 2: O - -/These are all cases where Perl does it differently (nested captures)/I + +/These are all cases where Perl does it differently (nested captures)/ Capturing subpattern count = 1 No options First char = 'T' Need char = 's' -/^(a(b)?)+$/I +/^(a(b)?)+$/ Capturing subpattern count = 2 Options: anchored No first char @@ -2564,223 +2541,227 @@ 0: aba 1: a 2: b - -/^(aa(bb)?)+$/I + +/^(aa(bb)?)+$/ Capturing subpattern count = 2 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: aa 2: bb - -/^(aa|aa(bb))+$/I + +/^(aa|aa(bb))+$/ Capturing subpattern count = 2 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: aa 2: bb - -/^(aa(bb)??)+$/I + +/^(aa(bb)??)+$/ Capturing subpattern count = 2 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: aa 2: bb - -/^(?:aa(bb)?)+$/I + +/^(?:aa(bb)?)+$/ Capturing subpattern count = 1 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: bb - -/^(aa(b(b))?)+$/I + +/^(aa(b(b))?)+$/ Capturing subpattern count = 3 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: aa 2: bb 3: b -/^(?:aa(b(b))?)+$/I +/^(?:aa(b(b))?)+$/ Capturing subpattern count = 2 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: bb 2: b -/^(?:aa(b(?:b))?)+$/I +/^(?:aa(b(?:b))?)+$/ Capturing subpattern count = 1 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: bb -/^(?:aa(bb(?:b))?)+$/I +/^(?:aa(bb(?:b))?)+$/ Capturing subpattern count = 1 Options: anchored No first char No need char - aabbbaa + aabbbaa 0: aabbbaa 1: bbb - -/^(?:aa(b(?:bb))?)+$/I + +/^(?:aa(b(?:bb))?)+$/ Capturing subpattern count = 1 Options: anchored No first char No need char - aabbbaa + aabbbaa 0: aabbbaa 1: bbb -/^(?:aa(?:b(b))?)+$/I +/^(?:aa(?:b(b))?)+$/ Capturing subpattern count = 1 Options: anchored No first char No need char - aabbaa + aabbaa 0: aabbaa 1: b -/^(?:aa(?:b(bb))?)+$/I +/^(?:aa(?:b(bb))?)+$/ Capturing subpattern count = 1 Options: anchored No first char No need char - aabbbaa + aabbbaa 0: aabbbaa 1: bb -/^(aa(b(bb))?)+$/I +/^(aa(b(bb))?)+$/ Capturing subpattern count = 3 Options: anchored No first char No need char - aabbbaa + aabbbaa 0: aabbbaa 1: aa 2: bbb 3: bb -/^(aa(bb(bb))?)+$/I +/^(aa(bb(bb))?)+$/ Capturing subpattern count = 3 Options: anchored No first char No need char - aabbbbaa + aabbbbaa 0: aabbbbaa 1: aa 2: bbbb 3: bb -/--------------------------------------------------------------------/I +/--------------------------------------------------------------------/ Capturing subpattern count = 0 No options First char = '-' Need char = '-' - -/#/IxDZ + +/#/xMD +Memory allocation (code space): 7 ------------------------------------------------------------------ - Bra - Ket - End + 0 3 Bra 0 + 3 3 Ket + 6 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: extended No first char No need char -/a#/IxDZ +/a#/xMD +Memory allocation (code space): 9 ------------------------------------------------------------------ - Bra - a - Ket - End + 0 5 Bra 0 + 3 a + 5 5 Ket + 8 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: extended First char = 'a' No need char -/[\s]/DZ +/[\s]/D ------------------------------------------------------------------ - Bra - [\x09\x0a\x0c\x0d ] - Ket - End + 0 36 Bra 0 + 3 [\x09\x0a\x0c\x0d ] + 36 36 Ket + 39 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/[\S]/DZ +/[\S]/D ------------------------------------------------------------------ - Bra - [\x00-\x08\x0b\x0e-\x1f!-\xff] - Ket - End + 0 36 Bra 0 + 3 [\x00-\x08\x0b\x0e-\x1f!-\xff] + 36 36 Ket + 39 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/a(?i)b/DZ +/a(?i)b/D ------------------------------------------------------------------ - Bra - a - 01 Opt - NC b - Ket - End + 0 9 Bra 0 + 3 a + 5 01 Opt + 7 NC b + 9 9 Ket + 12 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options +Case state changes First char = 'a' Need char = 'b' (caseless) ab 0: ab aB 0: aB - *** Failers + *** Failers No match - AB + AB No match -/(a(?i)b)/DZ +/(a(?i)b)/D ------------------------------------------------------------------ - Bra - CBra 1 - a - 01 Opt - NC b - Ket - 00 Opt - Ket - End + 0 17 Bra 0 + 3 9 Bra 1 + 6 a + 8 01 Opt + 10 NC b + 12 9 Ket + 15 00 Opt + 17 17 Ket + 20 End ------------------------------------------------------------------ Capturing subpattern count = 1 No options +Case state changes First char = 'a' Need char = 'b' (caseless) ab @@ -2789,17 +2770,17 @@ aB 0: aB 1: aB - *** Failers + *** Failers No match - AB + AB No match - -/ (?i)abc/IxDZ + +/ (?i)abc/xD ------------------------------------------------------------------ - Bra - NC abc - Ket - End + 0 9 Bra 0 + 3 NC abc + 9 9 Ket + 12 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless extended @@ -2807,47 +2788,47 @@ Need char = 'c' (caseless) /#this is a comment - (?i)abc/IxDZ + (?i)abc/xD ------------------------------------------------------------------ - Bra - NC abc - Ket - End + 0 9 Bra 0 + 3 NC abc + 9 9 Ket + 12 End ------------------------------------------------------------------ Capturing subpattern count = 0 Options: caseless extended First char = 'a' (caseless) Need char = 'c' (caseless) -/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ +/123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/D ------------------------------------------------------------------ - Bra - 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - Ket - End + 0 603 Bra 0 + 3 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 +603 603 Ket +606 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options First char = '1' Need char = '0' -/\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/DZ +/\Q123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890/D ------------------------------------------------------------------ - Bra - 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - Ket - End + 0 603 Bra 0 + 3 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 +603 603 Ket +606 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options First char = '1' Need char = '0' -/\Q\E/DZ +/\Q\E/D ------------------------------------------------------------------ - Bra - Ket - End + 0 3 Bra 0 + 3 3 Ket + 6 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options @@ -2856,36 +2837,36 @@ \ 0: -/\Q\Ex/DZ +/\Q\Ex/D ------------------------------------------------------------------ - Bra - x - Ket - End + 0 5 Bra 0 + 3 x + 5 5 Ket + 8 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options First char = 'x' No need char -/ \Q\E/DZ +/ \Q\E/D ------------------------------------------------------------------ - Bra - - Ket - End + 0 5 Bra 0 + 3 + 5 5 Ket + 8 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options First char = ' ' No need char -/a\Q\E/DZ +/a\Q\E/D ------------------------------------------------------------------ - Bra - a - Ket - End + 0 5 Bra 0 + 3 a + 5 5 Ket + 8 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options @@ -2895,15 +2876,15 @@ 0: a bca 0: a - bac + bac 0: a -/a\Q\Eb/DZ +/a\Q\Eb/D ------------------------------------------------------------------ - Bra - ab - Ket - End + 0 7 Bra 0 + 3 ab + 7 7 Ket + 10 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options @@ -2912,25 +2893,27 @@ abc 0: ab -/\Q\Eabc/DZ +/\Q\Eabc/D ------------------------------------------------------------------ - Bra - abc - Ket - End + 0 9 Bra 0 + 3 abc + 9 9 Ket + 12 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options First char = 'a' Need char = 'c' -/x*+\w/DZ +/x*+\w/D ------------------------------------------------------------------ - Bra - x*+ - \w - Ket - End + 0 12 Bra 0 + 3 5 Once + 6 x* + 8 5 Ket + 11 \w + 12 12 Ket + 15 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -2941,25 +2924,29 @@ 0: F xxxxx No match - -/x?+/DZ + +/x?+/D ------------------------------------------------------------------ - Bra - x?+ - Ket - End + 0 11 Bra 0 + 3 5 Once + 6 x? + 8 5 Ket + 11 11 Ket + 14 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/x++/DZ +/x++/D ------------------------------------------------------------------ - Bra - x++ - Ket - End + 0 11 Bra 0 + 3 5 Once + 6 x+ + 8 5 Ket + 11 11 Ket + 14 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -2967,15 +2954,15 @@ First char = 'x' No need char -/x{1,3}+/DZ +/x{1,3}+/D ------------------------------------------------------------------ - Bra - Once - x - x{0,2} - Ket - Ket - End + 0 15 Bra 0 + 3 9 Once + 6 x + 8 x{,2} + 12 9 Ket + 15 15 Ket + 18 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -2983,24 +2970,24 @@ First char = 'x' No need char -/(x)*+/DZ +/(x)*+/D ------------------------------------------------------------------ - Bra - Once - Brazero - CBra 1 - x - KetRmax - Ket - Ket - End + 0 18 Bra 0 + 3 12 Once + 6 Brazero + 7 5 Bra 1 + 10 x + 12 5 KetRmax + 15 12 Ket + 18 18 Ket + 21 End ------------------------------------------------------------------ Capturing subpattern count = 1 No options No first char No need char -/^(\w++|\s++)*$/I +/^(\w++|\s++)*$/ Capturing subpattern count = 1 Partial matching not supported Options: anchored @@ -3013,8 +3000,8 @@ No match this is not a line with only words and spaces! No match - -/(\d++)(\w)/I + +/(\d++)(\w)/ Capturing subpattern count = 2 Partial matching not supported No options @@ -3026,10 +3013,10 @@ 2: a *** Failers No match - 12345+ + 12345+ No match -/a++b/I +/a++b/ Capturing subpattern count = 0 Partial matching not supported No options @@ -3038,7 +3025,7 @@ aaab 0: aaab -/(a++b)/I +/(a++b)/ Capturing subpattern count = 1 Partial matching not supported No options @@ -3048,7 +3035,7 @@ 0: aaab 1: aaab -/(a++)b/I +/(a++)b/ Capturing subpattern count = 1 Partial matching not supported No options @@ -3058,7 +3045,7 @@ 0: aaab 1: aaa -/([^()]++|\([^()]*\))+/I +/([^()]++|\([^()]*\))+/ Capturing subpattern count = 1 Partial matching not supported No options @@ -3067,8 +3054,8 @@ ((abc(ade)ufh()()x 0: abc(ade)ufh()()x 1: x - -/\(([^()]++|\([^()]+\))+\)/I + +/\(([^()]++|\([^()]+\))+\)/ Capturing subpattern count = 1 Partial matching not supported No options @@ -3082,55 +3069,57 @@ 1: xyz *** Failers No match - ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa No match -/(abc){1,3}+/DZ +/(abc){1,3}+/D ------------------------------------------------------------------ - Bra - Once - CBra 1 - abc - Ket - Brazero - Bra - CBra 1 - abc - Ket - Brazero - CBra 1 - abc - Ket - Ket - Ket - Ket - End + 0 53 Bra 0 + 3 47 Once + 6 9 Bra 1 + 9 abc + 15 9 Ket + 18 Brazero + 19 28 Bra 0 + 22 9 Bra 1 + 25 abc + 31 9 Ket + 34 Brazero + 35 9 Bra 1 + 38 abc + 44 9 Ket + 47 28 Ket + 50 47 Ket + 53 53 Ket + 56 End ------------------------------------------------------------------ Capturing subpattern count = 1 No options First char = 'a' Need char = 'c' -/a+?+/I +/a+?+/ Failed: nothing to repeat at offset 3 -/a{2,3}?+b/I +/a{2,3}?+b/ Failed: nothing to repeat at offset 7 -/(?U)a+?+/I +/(?U)a+?+/ Failed: nothing to repeat at offset 7 -/a{2,3}?+b/IU +/a{2,3}?+b/U Failed: nothing to repeat at offset 7 -/x(?U)a++b/DZ +/x(?U)a++b/D ------------------------------------------------------------------ - Bra - x - a++ - b - Ket - End + 0 15 Bra 0 + 3 x + 5 5 Once + 8 a+ + 10 5 Ket + 13 b + 15 15 Ket + 18 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -3140,14 +3129,16 @@ xaaaab 0: xaaaab -/(?U)xa++b/DZ +/(?U)xa++b/D ------------------------------------------------------------------ - Bra - x - a++ - b - Ket - End + 0 15 Bra 0 + 3 x + 5 5 Once + 8 a+ + 10 5 Ket + 13 b + 15 15 Ket + 18 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -3157,26 +3148,26 @@ xaaaab 0: xaaaab -/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/DZ +/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/D ------------------------------------------------------------------ - Bra - ^ - CBra 1 - CBra 2 - a+ - Ket - CBra 3 - [ab]+? - Ket - CBra 4 - [bc]+ - Ket - CBra 5 - \w* - Ket - Ket - Ket - End + 0 106 Bra 0 + 3 ^ + 4 99 Bra 1 + 7 5 Bra 2 + 10 a+ + 12 5 Ket + 15 37 Bra 3 + 18 [ab]+? + 52 37 Ket + 55 37 Bra 4 + 58 [bc]+ + 92 37 Ket + 95 5 Bra 5 + 98 \w* +100 5 Ket +103 99 Ket +106 106 Ket +109 End ------------------------------------------------------------------ Capturing subpattern count = 5 Partial matching not supported @@ -3184,15 +3175,15 @@ No first char No need char -/^x(?U)a+b/DZ +/^x(?U)a+b/D ------------------------------------------------------------------ - Bra - ^ - x - a++ - b - Ket - End + 0 10 Bra 0 + 3 ^ + 4 x + 6 a+? + 8 b + 10 10 Ket + 13 End ------------------------------------------------------------------ Capturing subpattern count = 0 Partial matching not supported @@ -3200,17 +3191,17 @@ No first char Need char = 'b' -/^x(?U)(a+)b/DZ +/^x(?U)(a+)b/D ------------------------------------------------------------------ - Bra - ^ - x - CBra 1 - a+? - Ket - b - Ket - End + 0 16 Bra 0 + 3 ^ + 4 x + 6 5 Bra 1 + 9 a+? + 11 5 Ket + 14 b + 16 16 Ket + 19 End ------------------------------------------------------------------ Capturing subpattern count = 1 Partial matching not supported @@ -3218,76 +3209,79 @@ No first char Need char = 'b' -/[.x.]/I +/[.x.]/ Failed: POSIX collating elements are not supported at offset 0 -/[=x=]/I +/[=x=]/ Failed: POSIX collating elements are not supported at offset 0 -/[:x:]/I +/[:x:]/ Failed: POSIX named classes are supported only within a class at offset 0 -/\l/I +/\l/ Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1 -/\L/I +/\L/ Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1 -/\N{name}/I +/\N{name}/ Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1 -/\u/I +/\u/ Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1 -/\U/I +/\U/ Failed: PCRE does not support \L, \l, \N, \U, or \u at offset 1 -/[/I +/[/ Failed: missing terminating ] for character class at offset 1 -/[a-/I +/[a-/ Failed: missing terminating ] for character class at offset 3 -/[[:space:]/I +/[[:space:]/ Failed: missing terminating ] for character class at offset 10 -/[\s]/IDZ +/[\s]/DM +Memory allocation (code space): 40 ------------------------------------------------------------------ - Bra - [\x09\x0a\x0c\x0d ] - Ket - End + 0 36 Bra 0 + 3 [\x09\x0a\x0c\x0d ] + 36 36 Ket + 39 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/[[:space:]]/IDZ +/[[:space:]]/DM +Memory allocation (code space): 40 ------------------------------------------------------------------ - Bra - [\x09-\x0d ] - Ket - End + 0 36 Bra 0 + 3 [\x09-\x0d ] + 36 36 Ket + 39 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/[[:space:]abcde]/IDZ +/[[:space:]abcde]/DM +Memory allocation (code space): 40 ------------------------------------------------------------------ - Bra - [\x09-\x0d a-e] - Ket - End + 0 36 Bra 0 + 3 [\x09-\x0d a-e] + 36 36 Ket + 39 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options No first char No need char -/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/Ix +/< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x Capturing subpattern count = 0 Partial matching not supported Options: extended @@ -3301,35 +3295,37 @@ 0: hij> hij> 0: - def> + def> 0: def> - + 0: <> *** Failers No match iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ +|8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|DM +Memory allocation (code space): 826 ------------------------------------------------------------------ - Bra - 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDDqmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X - \b - Ket - End + 0 822 Bra 0 + 3 8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDDqmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +821 \b +822 822 Ket +825 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options First char = '8' Need char = 'X' -|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ +|\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|DM +Memory allocation (code space): 816 ------------------------------------------------------------------ - Bra - $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDDqmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X - \b - Ket - End + 0 812 Bra 0 + 3 $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDDqmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X +811 \b +812 812 Ket +815 End ------------------------------------------------------------------ Capturing subpattern count = 0 No options @@ -3348,9 +3344,9 @@ Capturing subpattern count = 1 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n No need char - + /(.*)\d+\1/Is Capturing subpattern count = 1 Max back reference = 1 @@ -3371,7 +3367,7 @@ Max back reference = 2 Partial matching not supported No options -First char at start or follows newline +First char at start or follows \n Need char = 'z' /((.*))\d+\1/I @@ -3385,7 +3381,7 @@ 0: bc123bc 1: bc 2: bc - + /a[b]/I Capturing subpattern count = 0 No options @@ -3399,7 +3395,7 @@ First char = 'a' No need char -/(?=abc).xyz/IiI +/(?=abc).xyz/iI Capturing subpattern count = 0 Options: caseless First char = 'a' (caseless) @@ -3408,6 +3404,7 @@ /(?=abc)(?i).xyz/I Capturing subpattern count = 0 No options +Case state changes First char = 'a' Need char = 'z' (caseless) @@ -3527,18 +3524,18 @@ First char = 'a' Need char = 'b' -/^a/Im +/^a/mI Capturing subpattern count = 0 Options: multiline -First char at start or follows newline +First char at start or follows \n Need char = 'a' abcde 0: a - xy\nabc + xy\nabc 0: a - *** Failers + *** Failers No match - xyabc + xyabc No match /c|abc/I @@ -3557,11 +3554,12 @@ /[ab](?i)cd/IS Capturing subpattern count = 0 No options +Case state changes No first char Need char = 'd' (caseless) Starting byte set: a b -/abc(?C)def/I +/abc(?C)def/ Capturing subpattern count = 0 No options First char = 'a' @@ -3570,7 +3568,7 @@ --->abcdef 0 ^ ^ d 0: abcdef - 1234abcdef + 1234abcdef --->1234abcdef 0 ^ ^ d 0: abcdef @@ -3578,12 +3576,12 @@ No match abcxyz No match - abcxyzf + abcxyzf --->abcxyzf 0 ^ ^ d No match -/abc(?C)de(?C1)f/I +/abc(?C)de(?C1)f/ Capturing subpattern count = 0 No options First char = 'a' @@ -3593,8 +3591,8 @@ 0 ^ ^ d 1 ^ ^ f 0: abcdef - -/(?C1)\dabc(?C2)def/I + +/(?C1)\dabc(?C2)def/ Capturing subpattern count = 0 No options No first char @@ -3609,7 +3607,7 @@ 0: 4abcdef *** Failers No match - abcdef + abcdef --->abcdef 1 ^ \d 1 ^ \d @@ -3618,23 +3616,23 @@ 1 ^ \d 1 ^ \d No match - -/(?C255)ab/I + +/(?C255)ab/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'b' -/(?C256)ab/I +/(?C256)ab/ Failed: number after (?C is > 255 at offset 6 -/(?Cab)xx/I +/(?Cab)xx/ Failed: closing ) for (?C expected at offset 3 -/(?C12vr)x/I +/(?C12vr)x/ Failed: closing ) for (?C expected at offset 5 -/abc(?C)def/I +/abc(?C)def/ Capturing subpattern count = 0 No options First char = 'a' @@ -3646,7 +3644,7 @@ 0 ^ ^ d 0: abcdef -/(abc)(?C)de(?C1)f/I +/(abc)(?C)de(?C1)f/ Capturing subpattern count = 1 No options First char = 'a' @@ -3657,7 +3655,7 @@ 1 ^ ^ f 0: abcdef 1: abc - 123abcdef\C+ + 123abcdef\C+ Callout 0: last capture = 1 0: 1: abc @@ -3670,18 +3668,18 @@ ^ ^ f 0: abcdef 1: abc - 123abcdef\C- + 123abcdef\C- 0: abcdef 1: abc *** Failers No match - 123abcdef\C!1 + 123abcdef\C!1 --->123abcdef 0 ^ ^ d 1 ^ ^ f No match - -/(?C0)(abc(?C1))*/I + +/(?C0)(abc(?C1))*/ Capturing subpattern count = 1 No options No first char @@ -3694,7 +3692,7 @@ 1 ^ ^ ) 0: abcabcabc 1: abc - abcabc\C!1!3 + abcabc\C!1!3 --->abcabc 0 ^ (abc(?C1))* 1 ^ ^ ) @@ -3705,7 +3703,7 @@ --->*** Failers 0 ^ (abc(?C1))* 0: - abcabcabc\C!1!3 + abcabcabc\C!1!3 --->abcabcabc 0 ^ (abc(?C1))* 1 ^ ^ ) @@ -3714,7 +3712,7 @@ 0: abcabc 1: abc -/(\d{3}(?C))*/I +/(\d{3}(?C))*/ Capturing subpattern count = 1 Partial matching not supported No options @@ -3739,7 +3737,7 @@ ^ ^ ) 0: 123456 1: 456 - 123456789\C+ + 123456789\C+ Callout 0: last capture = -1 0: --->123456789 @@ -3757,7 +3755,7 @@ 0: 123456789 1: 789 -/((xyz)(?C)p|(?C1)xyzabc)/I +/((xyz)(?C)p|(?C1)xyzabc)/ Capturing subpattern count = 2 No options First char = 'x' @@ -3776,7 +3774,7 @@ 0: xyzabc 1: xyzabc -/(X)((xyz)(?C)p|(?C1)xyzabc)/I +/(X)((xyz)(?C)p|(?C1)xyzabc)/ Capturing subpattern count = 3 No options First char = 'X' @@ -3798,7 +3796,7 @@ 1: X 2: xyzabc -/(?=(abc))(?C)abcdef/I +/(?=(abc))(?C)abcdef/ Capturing subpattern count = 1 No options First char = 'a' @@ -3811,13 +3809,13 @@ ^ a 0: abcdef 1: abc - -/(?!(abc)(?C1)d)(?C2)abcxyz/I + +/(?!(abc)(?C1)d)(?C2)abcxyz/ Capturing subpattern count = 1 No options First char = 'a' Need char = 'z' - abcxyz\C+ + abcxyz\C+ Callout 1: last capture = 1 0: 1: abc @@ -3829,7 +3827,7 @@ ^ a 0: abcxyz -/(?<=(abc)(?C))xyz/I +/(?<=(abc)(?C))xyz/ Capturing subpattern count = 1 No options First char = 'x' @@ -3842,88 +3840,36 @@ ^ ) 0: xyz 1: abc - -/a(b+)(c*)(?C1)/I -Capturing subpattern count = 2 -Partial matching not supported -No options -First char = 'a' -Need char = 'b' - abbbbbccc\C*1 ---->abbbbbccc - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 -No match - -/a(b+?)(c*?)(?C1)/I -Capturing subpattern count = 2 -Partial matching not supported -No options -First char = 'a' -Need char = 'b' - abbbbbccc\C*1 ---->abbbbbccc - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 - 1 ^ ^ -Callout data = 1 -No match - -/(?C)abc/I + +/(?C)abc/ Capturing subpattern count = 0 No options First char = 'a' Need char = 'c' -/(?C)^abc/I +/(?C)^abc/ Capturing subpattern count = 0 Options: anchored No first char No need char -/(?C)a|b/IS +/(?C)a|b/S Capturing subpattern count = 0 No options No first char No need char Starting byte set: a b -/(?R)/I +/(?R)/ Failed: recursive call could loop indefinitely at offset 3 -/(a|(?R))/I +/(a|(?R))/ Failed: recursive call could loop indefinitely at offset 6 -/(ab|(bc|(de|(?R))))/I +/(ab|(bc|(de|(?R))))/ Failed: recursive call could loop indefinitely at offset 15 -/x(ab|(bc|(de|(?R))))/I +/x(ab|(bc|(de|(?R))))/ Capturing subpattern count = 3 No options First char = 'x' @@ -3952,16 +3898,16 @@ 3: xxab *** Failers No match - xyab + xyab No match -/(ab|(bc|(de|(?1))))/I +/(ab|(bc|(de|(?1))))/ Failed: recursive call could loop indefinitely at offset 15 -/x(ab|(bc|(de|(?1)x)x)x)/I +/x(ab|(bc|(de|(?1)x)x)x)/ Failed: recursive call could loop indefinitely at offset 16 -/^([^()]|\((?1)*\))*$/I +/^([^()]|\((?1)*\))*$/ Capturing subpattern count = 1 Options: anchored No first char @@ -3972,15 +3918,15 @@ a(b)c 0: a(b)c 1: c - a(b(c))d + a(b(c))d 0: a(b(c))d 1: d *** Failers) No match - a(b(c)d + a(b(c)d No match -/^>abc>([^()]|\((?1)*\))*abc>([^()]|\((?1)*\))*abc>(1(2)3) 3: A man, a plan, a canal: Panama 4: A - Able was I ere I saw Elba. + Able was I ere I saw Elba. 0: Able was I ere I saw Elba. 1: 2: @@ -4062,10 +4006,10 @@ 4: A *** Failers No match - The quick brown fox + The quick brown fox No match - -/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I + +/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/ Capturing subpattern count = 2 Partial matching not supported Options: anchored @@ -4085,8 +4029,8 @@ No match ((2+2)*-3)-7) No match - -/^(x(y|(?1){2})z)/I + +/^(x(y|(?1){2})z)/ Capturing subpattern count = 2 Options: anchored No first char @@ -4095,7 +4039,7 @@ 0: xyz 1: xyz 2: y - xxyzxyzz + xxyzxyzz 0: xxyzxyzz 1: xxyzxyzz 2: xyzxyz @@ -4103,10 +4047,10 @@ No match xxyzz No match - xxyzxyzxyzz + xxyzxyzxyzz No match -/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/Ix +/((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x Capturing subpattern count = 2 Partial matching not supported Options: extended @@ -4128,11 +4072,11 @@ 0: 1: 2: - def> + def> 0: def> 1: def> 2: def> - + 0: <> 1: <> 2: <> @@ -4141,13 +4085,13 @@ b|c)d(?Pe)/DZ +/a(?Pb|c)d(?Pe)/D ------------------------------------------------------------------ - Bra - a - CBra 1 - b - Alt - c - Ket - d - CBra 2 - e - Ket - Ket - End + 0 28 Bra 0 + 3 a + 5 5 Bra 1 + 8 b + 10 5 Alt + 13 c + 15 10 Ket + 18 d + 20 5 Bra 2 + 23 e + 25 5 Ket + 28 28 Ket + 31 End ------------------------------------------------------------------ Capturing subpattern count = 2 Named capturing subpatterns: @@ -4216,28 +4160,28 @@ 0: abde 1: b 2: e - acde + acde 0: acde 1: c 2: e -/(?:a(?Pc(?Pd)))(?Pa)/DZ +/(?:a(?Pc(?Pd)))(?Pa)/D ------------------------------------------------------------------ - Bra - Bra - a - CBra 1 - c - CBra 2 - d - Ket - Ket - Ket - CBra 3 - a - Ket - Ket - End + 0 35 Bra 0 + 3 21 Bra 0 + 6 a + 8 13 Bra 1 + 11 c + 13 5 Bra 2 + 16 d + 18 5 Ket + 21 13 Ket + 24 21 Ket + 27 5 Bra 3 + 30 a + 32 5 Ket + 35 35 Ket + 38 End ------------------------------------------------------------------ Capturing subpattern count = 3 Named capturing subpatterns: @@ -4248,23 +4192,21 @@ First char = 'a' Need char = 'a' -/(?Pa)...(?P=a)bbb(?P>a)d/DZ +/(?Pa)...(?P=a)bbb(?P>a)d/D ------------------------------------------------------------------ - Bra - CBra 1 - a - Ket - Any - Any - Any - \1 - bbb - Once - Recurse - Ket - d - Ket - End + 0 28 Bra 0 + 3 5 Bra 1 + 6 a + 8 5 Ket + 11 Any + 12 Any + 13 Any + 14 \1 + 17 bbb + 23 3 Recurse + 26 d + 28 28 Ket + 31 End ------------------------------------------------------------------ Capturing subpattern count = 1 Max back reference = 1 @@ -4274,7 +4216,7 @@ First char = 'a' Need char = 'd' -/^\W*(?:(?P(?P.)\W*(?P>one)\W*(?P=two)|)|(?P(?P.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/Ii +/^\W*(?:(?P(?P.)\W*(?P>one)\W*(?P=two)|)|(?P(?P.)\W*(?P>three)\W*(?P=four)|\W*.\W*))\W*$/i Capturing subpattern count = 4 Max back reference = 4 Named capturing subpatterns: @@ -4302,7 +4244,7 @@ 2: 3: A man, a plan, a canal: Panama 4: A [... 4991 lines stripped ...]