1.1 --- a/tools/pcre/testdata/testinput2 Sun Mar 17 11:29:55 2013 -0400
1.2 +++ b/tools/pcre/testdata/testinput2 Sun Mar 17 11:32:03 2013 -0400
1.3 @@ -1,3 +1,13 @@
1.4 +/-- This set of tests is not Perl-compatible. It checks on special features
1.5 + of PCRE's API, error diagnostics, and the compiled code of some patterns.
1.6 + It also checks the non-Perl syntax the PCRE supports (Python, .NET,
1.7 + Oniguruma). Finally, there are some tests where PCRE and Perl differ,
1.8 + either because PCRE can't be compatible, or there is a possible Perl
1.9 + bug.
1.10 +
1.11 + NOTE: This is a non-UTF set of tests. When UTF support is needed, use
1.12 + test 5, and if Unicode Property Support is needed, use test 7. --/
1.13 +
1.14 /(a)b|/I
1.15
1.16 /abc/I
1.17 @@ -40,6 +50,16 @@
1.18
1.19 /(?X)[\B]/
1.20
1.21 +/(?X)[\R]/
1.22 +
1.23 +/(?X)[\X]/
1.24 +
1.25 +/[\B]/BZ
1.26 +
1.27 +/[\R]/BZ
1.28 +
1.29 +/[\X]/BZ
1.30 +
1.31 /[z-a]/
1.32
1.33 /^*/
1.34 @@ -123,40 +143,6 @@
1.35 defabc
1.36 \Zdefabc
1.37
1.38 -/abc/IP
1.39 - abc
1.40 - *** Failers
1.41 -
1.42 -/^abc|def/IP
1.43 - abcdef
1.44 - abcdef\B
1.45 -
1.46 -/.*((abc)$|(def))/IP
1.47 - defabc
1.48 - \Zdefabc
1.49 -
1.50 -/the quick brown fox/IP
1.51 - the quick brown fox
1.52 - *** Failers
1.53 - The Quick Brown Fox
1.54 -
1.55 -/the quick brown fox/IPi
1.56 - the quick brown fox
1.57 - The Quick Brown Fox
1.58 -
1.59 -/abc.def/IP
1.60 - *** Failers
1.61 - abc\ndef
1.62 -
1.63 -/abc$/IP
1.64 - abc
1.65 - abc\n
1.66 -
1.67 -/(abc)\2/IP
1.68 -
1.69 -/(abc\1)/IP
1.70 - abc
1.71 -
1.72 /)/
1.73
1.74 /a[]b/
1.75 @@ -333,10 +319,25 @@
1.76 *** Failers
1.77 a
1.78
1.79 -/This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/I
1.80 +/This one is here because Perl behaves differently; see also the following/I
1.81
1.82 /^(a\1?){4}$/I
1.83 + aaaa
1.84 aaaaaa
1.85 +
1.86 +/Perl does not fail these two for the final subjects. Neither did PCRE until/
1.87 +/release 8.01. The problem is in backtracking into a subpattern that contains/
1.88 +/a recursive reference to itself. PCRE has now made these into atomic patterns./
1.89 +
1.90 +/^(xa|=?\1a){2}$/
1.91 + xa=xaa
1.92 + ** Failers
1.93 + xa=xaaa
1.94 +
1.95 +/^(xa|=?\1a)+$/
1.96 + xa=xaa
1.97 + ** Failers
1.98 + xa=xaaa
1.99
1.100 /These are syntax tests from Perl 5.005/I
1.101
1.102 @@ -406,8 +407,6 @@
1.103
1.104 /abc/\
1.105
1.106 -/abc/\P
1.107 -
1.108 /abc/\i
1.109
1.110 /(a)bc(d)/I
1.111 @@ -455,9 +454,6 @@
1.112 /\Biss\B/I+
1.113 Mississippi
1.114
1.115 -/\Biss\B/I+P
1.116 - Mississippi
1.117 -
1.118 /iss/IG+
1.119 Mississippi
1.120
1.121 @@ -593,15 +589,6 @@
1.122 *** Failers
1.123 \Nabc
1.124
1.125 -/a*(b+)(z)(z)/IP
1.126 - aaaabbbbzzzz
1.127 - aaaabbbbzzzz\O0
1.128 - aaaabbbbzzzz\O1
1.129 - aaaabbbbzzzz\O2
1.130 - aaaabbbbzzzz\O3
1.131 - aaaabbbbzzzz\O4
1.132 - aaaabbbbzzzz\O5
1.133 -
1.134 /^.?abcd/IS
1.135
1.136 /\( # ( at start
1.137 @@ -1025,7 +1012,12 @@
1.138 /abc(?C)de(?C1)f/I
1.139 123abcdef
1.140
1.141 -/(?C1)\dabc(?C2)def/I
1.142 +/(?C1)\dabc(?C2)def/IS
1.143 + 1234abcdef
1.144 + *** Failers
1.145 + abcdef
1.146 +
1.147 +/(?C1)\dabc(?C2)def/ISS
1.148 1234abcdef
1.149 *** Failers
1.150 abcdef
1.151 @@ -1122,14 +1114,6 @@
1.152
1.153 /(a(?1)+b)/DZ
1.154
1.155 -/^\W*(?:((.)\W*(?1)\W*\2|)|((.)\W*(?3)\W*\4|\W*.\W*))\W*$/Ii
1.156 - 1221
1.157 - Satan, oscillate my metallic sonatas!
1.158 - A man, a plan, a canal: Panama!
1.159 - Able was I ere I saw Elba.
1.160 - *** Failers
1.161 - The quick brown fox
1.162 -
1.163 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
1.164 12
1.165 (((2+2)*-3)-7)
1.166 @@ -1282,7 +1266,12 @@
1.167 abcde
1.168 abcdfe
1.169
1.170 -/a*b/ICDZ
1.171 +/a*b/ICDZS
1.172 + ab
1.173 + aaaab
1.174 + aaaacb
1.175 +
1.176 +/a*b/ICDZSS
1.177 ab
1.178 aaaab
1.179 aaaacb
1.180 @@ -1292,9 +1281,16 @@
1.181 aaaab
1.182 aaaacb
1.183
1.184 -/(abc|def)x/ICDZ
1.185 +/(abc|def)x/ICDZS
1.186 abcx
1.187 defx
1.188 + ** Failers
1.189 + abcdefzx
1.190 +
1.191 +/(abc|def)x/ICDZSS
1.192 + abcx
1.193 + defx
1.194 + ** Failers
1.195 abcdefzx
1.196
1.197 /(ab|cd){3,4}/IC
1.198 @@ -1302,7 +1298,10 @@
1.199 abcdabcd
1.200 abcdcdcdcdcd
1.201
1.202 -/([ab]{,4}c|xy)/ICDZ
1.203 +/([ab]{,4}c|xy)/ICDZS
1.204 + Note: that { does NOT introduce a quantifier
1.205 +
1.206 +/([ab]{,4}c|xy)/ICDZSS
1.207 Note: that { does NOT introduce a quantifier
1.208
1.209 /([ab]{1,4}c|xy){4,5}?123/ICDZ
1.210 @@ -1376,13 +1375,25 @@
1.211 1X
1.212 123456\P
1.213
1.214 -/abc/I>testsavedregex
1.215 +/abc/IS>testsavedregex
1.216 <testsavedregex
1.217 abc
1.218 ** Failers
1.219 bca
1.220
1.221 -/abc/IF>testsavedregex
1.222 +/abc/ISS>testsavedregex
1.223 +<testsavedregex
1.224 + abc
1.225 + ** Failers
1.226 + bca
1.227 +
1.228 +/abc/IFS>testsavedregex
1.229 +<testsavedregex
1.230 + abc
1.231 + ** Failers
1.232 + bca
1.233 +
1.234 +/abc/IFSS>testsavedregex
1.235 <testsavedregex
1.236 abc
1.237 ** Failers
1.238 @@ -1394,14 +1405,26 @@
1.239 ** Failers
1.240 def
1.241
1.242 +/(a|b)/ISS>testsavedregex
1.243 +<testsavedregex
1.244 + abc
1.245 + ** Failers
1.246 + def
1.247 +
1.248 /(a|b)/ISF>testsavedregex
1.249 <testsavedregex
1.250 abc
1.251 ** Failers
1.252 def
1.253
1.254 +/(a|b)/ISSF>testsavedregex
1.255 +<testsavedregex
1.256 + abc
1.257 + ** Failers
1.258 + def
1.259 +
1.260 ~<(\w+)/?>(.)*</(\1)>~smgI
1.261 - <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
1.262 + \J1024<!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
1.263
1.264 /^a/IF
1.265
1.266 @@ -1419,17 +1442,6 @@
1.267 ** Failers
1.268 line one\nthis is a line\nbreak in the second line
1.269
1.270 -/ab.cd/IP
1.271 - ab-cd
1.272 - ab=cd
1.273 - ** Failers
1.274 - ab\ncd
1.275 -
1.276 -/ab.cd/IPs
1.277 - ab-cd
1.278 - ab=cd
1.279 - ab\ncd
1.280 -
1.281 /(?i)(?-i)AbCd/I
1.282 AbCd
1.283 ** Failers
1.284 @@ -1480,14 +1492,6 @@
1.285 (this)
1.286 ((this))
1.287
1.288 -/a(b)c/IPN
1.289 - abc
1.290 -
1.291 -/a(?P<name>b)c/IPN
1.292 - abc
1.293 -
1.294 -/\x{100}/I
1.295 -
1.296 /\x{0000ff}/I
1.297
1.298 /^((?P<A>a1)|(?P<A>a2)b)/I
1.299 @@ -1565,8 +1569,6 @@
1.300 /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
1.301 bXXaYYaY
1.302
1.303 -/\777/I
1.304 -
1.305 /\s*,\s*/IS
1.306 \x0b,\x0b
1.307 \x0c,\x0d
1.308 @@ -1915,13 +1917,6 @@
1.309 /(?=(?'abc'\w+))\k<abc>:/I
1.310 abcd:
1.311
1.312 -/(?'abc'\w+):\k<abc>{2}/
1.313 - a:aaxyz
1.314 - ab:ababxyz
1.315 - ** Failers
1.316 - a:axyz
1.317 - ab:abxyz
1.318 -
1.319 /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
1.320 adaa
1.321 ** Failers
1.322 @@ -1934,10 +1929,6 @@
1.323 ** Failers
1.324 bddd
1.325
1.326 -/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
1.327 - abd
1.328 - ce
1.329 -
1.330 /(?(<bc))/
1.331
1.332 /(?(''))/
1.333 @@ -1955,22 +1946,10 @@
1.334 /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X | (?1) (?2) (?R) ))) /x
1.335 abcabc1Xabc2XabcXabcabc
1.336
1.337 -/^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
1.338 - abcd
1.339 -
1.340 -/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
1.341 - (?(DEFINE)
1.342 - (?<NAME_PAT>[a-z]+)
1.343 - (?<ADDRESS_PAT>\d+)
1.344 - )/x
1.345 - metcalfe 33
1.346 -
1.347 /^(?(DEFINE) abc | xyz ) /x
1.348
1.349 /(?(DEFINE) abc) xyz/xI
1.350
1.351 -/(?(DEFINE) abc){3} xyz/x
1.352 -
1.353 /(a|)*\d/
1.354 \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1.355 \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
1.356 @@ -2053,22 +2032,6 @@
1.357 /(?1)X(?<abc>P)/I
1.358 abcPXP123
1.359
1.360 -/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
1.361 - 1.2.3.4
1.362 - 131.111.10.206
1.363 - 10.0.0.0
1.364 - ** Failers
1.365 - 10.6
1.366 - 455.3.4.5
1.367 -
1.368 -/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
1.369 - 1.2.3.4
1.370 - 131.111.10.206
1.371 - 10.0.0.0
1.372 - ** Failers
1.373 - 10.6
1.374 - 455.3.4.5
1.375 -
1.376 /(?:a(?&abc)b)*(?<abc>x)/
1.377 123axbaxbaxbx456
1.378 123axbaxbaxb456
1.379 @@ -2090,9 +2053,6 @@
1.380 defabcabcxyz
1.381 DEFabcABCXYZ
1.382
1.383 -/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
1.384 - ababababbbabZXXXX
1.385 -
1.386 /^(a)\g-2/
1.387
1.388 /^(a)\g/
1.389 @@ -2191,26 +2151,12 @@
1.390 /^(?(+1)X|Y)(.)/BZ
1.391 Y!
1.392
1.393 -/(foo)\Kbar/
1.394 - foobar
1.395 -
1.396 -/(foo)(\Kbar|baz)/
1.397 - foobar
1.398 - foobaz
1.399 -
1.400 -/(foo\Kbar)baz/
1.401 - foobarbaz
1.402 -
1.403 /(?<A>tom|bon)-\k{A}/
1.404 tom-tom
1.405 bon-bon
1.406 ** Failers
1.407 tom-bon
1.408
1.409 -/(?<A>tom|bon)-\g{A}/
1.410 - tom-tom
1.411 - bon-bon
1.412 -
1.413 /\g{A/
1.414
1.415 /(?|(abc)|(xyz))/BZ
1.416 @@ -2225,66 +2171,6 @@
1.417 xabcpqrx
1.418 xxyzx
1.419
1.420 -/(?|(abc)|(xyz))\1/
1.421 - abcabc
1.422 - xyzxyz
1.423 - ** Failers
1.424 - abcxyz
1.425 - xyzabc
1.426 -
1.427 -/(?|(abc)|(xyz))(?1)/
1.428 - abcabc
1.429 - xyzabc
1.430 - ** Failers
1.431 - xyzxyz
1.432 -
1.433 -/\H\h\V\v/
1.434 - X X\x0a
1.435 - X\x09X\x0b
1.436 - ** Failers
1.437 - \xa0 X\x0a
1.438 -
1.439 -/\H*\h+\V?\v{3,4}/
1.440 - \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
1.441 - \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
1.442 - \x09\x20\xa0\x0a\x0b\x0c
1.443 - ** Failers
1.444 - \x09\x20\xa0\x0a\x0b
1.445 -
1.446 -/\H{3,4}/
1.447 - XY ABCDE
1.448 - XY PQR ST
1.449 -
1.450 -/.\h{3,4}./
1.451 - XY AB PQRS
1.452 -
1.453 -/\h*X\h?\H+Y\H?Z/
1.454 - >XNNNYZ
1.455 - > X NYQZ
1.456 - ** Failers
1.457 - >XYZ
1.458 - > X NY Z
1.459 -
1.460 -/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
1.461 - >XY\x0aZ\x0aA\x0bNN\x0c
1.462 - >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
1.463 -
1.464 -/[\h]/BZ
1.465 - >\x09<
1.466 -
1.467 -/[\h]+/BZ
1.468 - >\x09\x20\xa0<
1.469 -
1.470 -/[\v]/BZ
1.471 -
1.472 -/[\H]/BZ
1.473 -
1.474 -/[^\h]/BZ
1.475 -
1.476 -/[\V]/BZ
1.477 -
1.478 -/[\x0a\V]/BZ
1.479 -
1.480 /\H++X/BZ
1.481 ** Failers
1.482 XXXX
1.483 @@ -2325,7 +2211,7 @@
1.484 /\V+\v\V+\w/BZ
1.485
1.486 /\( (?: [^()]* | (?R) )* \)/x
1.487 -(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
1.488 +\J1024(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(00)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)0)
1.489
1.490 /[\E]AAA/
1.491
1.492 @@ -2341,49 +2227,6 @@
1.493
1.494 /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
1.495
1.496 -/^a+(*FAIL)/
1.497 - aaaaaa
1.498 -
1.499 -/a+b?c+(*FAIL)/
1.500 - aaabccc
1.501 -
1.502 -/a+b?(*PRUNE)c+(*FAIL)/
1.503 - aaabccc
1.504 -
1.505 -/a+b?(*COMMIT)c+(*FAIL)/
1.506 - aaabccc
1.507 -
1.508 -/a+b?(*SKIP)c+(*FAIL)/
1.509 - aaabcccaaabccc
1.510 -
1.511 -/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
1.512 - aaaxxxxxx
1.513 - aaa++++++
1.514 - bbbxxxxx
1.515 - bbb+++++
1.516 - cccxxxx
1.517 - ccc++++
1.518 - dddddddd
1.519 -
1.520 -/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
1.521 - aaaxxxxxx
1.522 - aaa++++++
1.523 - bbbxxxxx
1.524 - bbb+++++
1.525 - cccxxxx
1.526 - ccc++++
1.527 - dddddddd
1.528 -
1.529 -/a+b?(*THEN)c+(*FAIL)/
1.530 - aaabccc
1.531 -
1.532 -/(A (A|B(*ACCEPT)|C) D)(E)/x
1.533 - ABX
1.534 - AADE
1.535 - ACDE
1.536 - ** Failers
1.537 - AD
1.538 -
1.539 /^a+(*FAIL)/C
1.540 aaaaaa
1.541
1.542 @@ -2402,15 +2245,13 @@
1.543 /a+b?(*THEN)c+(*FAIL)/C
1.544 aaabccc
1.545
1.546 -/a(*PRUNE:XXX)b/
1.547 -
1.548 /a(*MARK)b/
1.549
1.550 /(?i:A{1,}\6666666666)/
1.551
1.552 /\g6666666666/
1.553
1.554 -/[\g6666666666]/
1.555 +/[\g6666666666]/BZ
1.556
1.557 /(?1)\c[/
1.558
1.559 @@ -2461,6 +2302,15 @@
1.560 a\nb
1.561 a\r\nb
1.562 a\x85b
1.563 +
1.564 +/(*ANY).*/g
1.565 + abc\r\ndef
1.566 +
1.567 +/(*ANYCRLF).*/g
1.568 + abc\r\ndef
1.569 +
1.570 +/(*CRLF).*/g
1.571 + abc\r\ndef
1.572
1.573 /a\Rb/I<bsr_anycrlf>
1.574 a\rb
1.575 @@ -2559,6 +2409,10 @@
1.576
1.577 /\k{}/
1.578
1.579 +/\k/
1.580 +
1.581 +/\kabc/
1.582 +
1.583 /(?P=)/
1.584
1.585 /(?P>)/
1.586 @@ -2589,66 +2443,8 @@
1.587
1.588 /[[:a\dz:]]/
1.589
1.590 -/^(?<name>a|b\g<name>c)/
1.591 - aaaa
1.592 - bacxxx
1.593 - bbaccxxx
1.594 - bbbacccxx
1.595 -
1.596 -/^(?<name>a|b\g'name'c)/
1.597 - aaaa
1.598 - bacxxx
1.599 - bbaccxxx
1.600 - bbbacccxx
1.601 -
1.602 -/^(a|b\g<1>c)/
1.603 - aaaa
1.604 - bacxxx
1.605 - bbaccxxx
1.606 - bbbacccxx
1.607 -
1.608 -/^(a|b\g'1'c)/
1.609 - aaaa
1.610 - bacxxx
1.611 - bbaccxxx
1.612 - bbbacccxx
1.613 -
1.614 -/^(a|b\g'-1'c)/
1.615 - aaaa
1.616 - bacxxx
1.617 - bbaccxxx
1.618 - bbbacccxx
1.619 -
1.620 -/(^(a|b\g<-1>c))/
1.621 - aaaa
1.622 - bacxxx
1.623 - bbaccxxx
1.624 - bbbacccxx
1.625 -
1.626 /(^(a|b\g<-1'c))/
1.627
1.628 -/(^(a|b\g{-1}))/
1.629 - bacxxx
1.630 -
1.631 -/(?-i:\g<name>)(?i:(?<name>a))/
1.632 - XaaX
1.633 - XAAX
1.634 -
1.635 -/(?i:\g<name>)(?-i:(?<name>a))/
1.636 - XaaX
1.637 - ** Failers
1.638 - XAAX
1.639 -
1.640 -/(?-i:\g<+1>)(?i:(a))/
1.641 - XaaX
1.642 - XAAX
1.643 -
1.644 -/(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
1.645 -
1.646 -/(?<n>a|b|c)\g<n>*/
1.647 - abc
1.648 - accccbbb
1.649 -
1.650 /^(?+1)(?<a>x|y){0}z/
1.651 xzxx
1.652 yzyy
1.653 @@ -2734,11 +2530,6 @@
1.654
1.655 /(?(?=.*b).*b|^d)/I
1.656
1.657 -/a?|b?/P
1.658 - abc
1.659 - ** Failers
1.660 - ddd\N
1.661 -
1.662 /xyz/C
1.663 xyz
1.664 abcxyz
1.665 @@ -2748,6 +2539,12 @@
1.666 abc\Y
1.667 abcxypqr
1.668 abcxypqr\Y
1.669 +
1.670 +/(*NO_START_OPT)xyz/C
1.671 + abcxyz
1.672 +
1.673 +/xyz/CY
1.674 + abcxyz
1.675
1.676 /^"((?(?=[a])[^"])|b)*"$/C
1.677 "ab"
1.678 @@ -2755,22 +2552,1262 @@
1.679 /^"((?(?=[a])[^"])|b)*"$/
1.680 "ab"
1.681
1.682 -/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
1.683 - XYabcdY
1.684 -
1.685 /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
1.686 XYabcdY
1.687
1.688 /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
1.689 XYabcdY
1.690
1.691 +/Xa{2,4}b/
1.692 + X\P
1.693 + Xa\P
1.694 + Xaa\P
1.695 + Xaaa\P
1.696 + Xaaaa\P
1.697 +
1.698 +/Xa{2,4}?b/
1.699 + X\P
1.700 + Xa\P
1.701 + Xaa\P
1.702 + Xaaa\P
1.703 + Xaaaa\P
1.704 +
1.705 +/Xa{2,4}+b/
1.706 + X\P
1.707 + Xa\P
1.708 + Xaa\P
1.709 + Xaaa\P
1.710 + Xaaaa\P
1.711 +
1.712 +/X\d{2,4}b/
1.713 + X\P
1.714 + X3\P
1.715 + X33\P
1.716 + X333\P
1.717 + X3333\P
1.718 +
1.719 +/X\d{2,4}?b/
1.720 + X\P
1.721 + X3\P
1.722 + X33\P
1.723 + X333\P
1.724 + X3333\P
1.725 +
1.726 +/X\d{2,4}+b/
1.727 + X\P
1.728 + X3\P
1.729 + X33\P
1.730 + X333\P
1.731 + X3333\P
1.732 +
1.733 +/X\D{2,4}b/
1.734 + X\P
1.735 + Xa\P
1.736 + Xaa\P
1.737 + Xaaa\P
1.738 + Xaaaa\P
1.739 +
1.740 +/X\D{2,4}?b/
1.741 + X\P
1.742 + Xa\P
1.743 + Xaa\P
1.744 + Xaaa\P
1.745 + Xaaaa\P
1.746 +
1.747 +/X\D{2,4}+b/
1.748 + X\P
1.749 + Xa\P
1.750 + Xaa\P
1.751 + Xaaa\P
1.752 + Xaaaa\P
1.753 +
1.754 +/X[abc]{2,4}b/
1.755 + X\P
1.756 + Xa\P
1.757 + Xaa\P
1.758 + Xaaa\P
1.759 + Xaaaa\P
1.760 +
1.761 +/X[abc]{2,4}?b/
1.762 + X\P
1.763 + Xa\P
1.764 + Xaa\P
1.765 + Xaaa\P
1.766 + Xaaaa\P
1.767 +
1.768 +/X[abc]{2,4}+b/
1.769 + X\P
1.770 + Xa\P
1.771 + Xaa\P
1.772 + Xaaa\P
1.773 + Xaaaa\P
1.774 +
1.775 +/X[^a]{2,4}b/
1.776 + X\P
1.777 + Xz\P
1.778 + Xzz\P
1.779 + Xzzz\P
1.780 + Xzzzz\P
1.781 +
1.782 +/X[^a]{2,4}?b/
1.783 + X\P
1.784 + Xz\P
1.785 + Xzz\P
1.786 + Xzzz\P
1.787 + Xzzzz\P
1.788 +
1.789 +/X[^a]{2,4}+b/
1.790 + X\P
1.791 + Xz\P
1.792 + Xzz\P
1.793 + Xzzz\P
1.794 + Xzzzz\P
1.795 +
1.796 +/(Y)X\1{2,4}b/
1.797 + YX\P
1.798 + YXY\P
1.799 + YXYY\P
1.800 + YXYYY\P
1.801 + YXYYYY\P
1.802 +
1.803 +/(Y)X\1{2,4}?b/
1.804 + YX\P
1.805 + YXY\P
1.806 + YXYY\P
1.807 + YXYYY\P
1.808 + YXYYYY\P
1.809 +
1.810 +/(Y)X\1{2,4}+b/
1.811 + YX\P
1.812 + YXY\P
1.813 + YXYY\P
1.814 + YXYYY\P
1.815 + YXYYYY\P
1.816 +
1.817 +/\++\KZ|\d+X|9+Y/
1.818 + ++++123999\P
1.819 + ++++123999Y\P
1.820 + ++++Z1234\P
1.821 +
1.822 +/Z(*F)/
1.823 + Z\P
1.824 + ZA\P
1.825 +
1.826 +/Z(?!)/
1.827 + Z\P
1.828 + ZA\P
1.829 +
1.830 +/dog(sbody)?/
1.831 + dogs\P
1.832 + dogs\P\P
1.833 +
1.834 +/dog(sbody)??/
1.835 + dogs\P
1.836 + dogs\P\P
1.837 +
1.838 +/dog|dogsbody/
1.839 + dogs\P
1.840 + dogs\P\P
1.841 +
1.842 +/dogsbody|dog/
1.843 + dogs\P
1.844 + dogs\P\P
1.845 +
1.846 +/\bthe cat\b/
1.847 + the cat\P
1.848 + the cat\P\P
1.849 +
1.850 +/abc/
1.851 + abc\P
1.852 + abc\P\P
1.853 +
1.854 +/abc\K123/
1.855 + xyzabc123pqr
1.856 + xyzabc12\P
1.857 + xyzabc12\P\P
1.858 +
1.859 +/(?<=abc)123/
1.860 + xyzabc123pqr
1.861 + xyzabc12\P
1.862 + xyzabc12\P\P
1.863 +
1.864 +/\babc\b/
1.865 + +++abc+++
1.866 + +++ab\P
1.867 + +++ab\P\P
1.868 +
1.869 +/(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
1.870 +
1.871 +/(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
1.872 +
1.873 +/(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
1.874 +
1.875 +/abc\K/+
1.876 + abcdef
1.877 + abcdef\N\N
1.878 + xyzabcdef\N\N
1.879 + ** Failers
1.880 + abcdef\N
1.881 + xyzabcdef\N
1.882 +
1.883 +/^(?:(?=abc)|abc\K)/+
1.884 + abcdef
1.885 + abcdef\N\N
1.886 + ** Failers
1.887 + abcdef\N
1.888 +
1.889 +/a?b?/+
1.890 + xyz
1.891 + xyzabc
1.892 + xyzabc\N
1.893 + xyzabc\N\N
1.894 + xyz\N\N
1.895 + ** Failers
1.896 + xyz\N
1.897 +
1.898 +/^a?b?/+
1.899 + xyz
1.900 + xyzabc
1.901 + ** Failers
1.902 + xyzabc\N
1.903 + xyzabc\N\N
1.904 + xyz\N\N
1.905 + xyz\N
1.906 +
1.907 +/^(?<name>a|b\g<name>c)/
1.908 + aaaa
1.909 + bacxxx
1.910 + bbaccxxx
1.911 + bbbacccxx
1.912 +
1.913 +/^(?<name>a|b\g'name'c)/
1.914 + aaaa
1.915 + bacxxx
1.916 + bbaccxxx
1.917 + bbbacccxx
1.918 +
1.919 +/^(a|b\g<1>c)/
1.920 + aaaa
1.921 + bacxxx
1.922 + bbaccxxx
1.923 + bbbacccxx
1.924 +
1.925 +/^(a|b\g'1'c)/
1.926 + aaaa
1.927 + bacxxx
1.928 + bbaccxxx
1.929 + bbbacccxx
1.930 +
1.931 +/^(a|b\g'-1'c)/
1.932 + aaaa
1.933 + bacxxx
1.934 + bbaccxxx
1.935 + bbbacccxx
1.936 +
1.937 +/(^(a|b\g<-1>c))/
1.938 + aaaa
1.939 + bacxxx
1.940 + bbaccxxx
1.941 + bbbacccxx
1.942 +
1.943 +/(?-i:\g<name>)(?i:(?<name>a))/
1.944 + XaaX
1.945 + XAAX
1.946 +
1.947 +/(?i:\g<name>)(?-i:(?<name>a))/
1.948 + XaaX
1.949 + ** Failers
1.950 + XAAX
1.951 +
1.952 +/(?-i:\g<+1>)(?i:(a))/
1.953 + XaaX
1.954 + XAAX
1.955 +
1.956 +/(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
1.957 +
1.958 +/(?<n>a|b|c)\g<n>*/
1.959 + abc
1.960 + accccbbb
1.961 +
1.962 /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
1.963 XYabcdY
1.964
1.965 -/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
1.966 - XYabcdY
1.967 -
1.968 -/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
1.969 - XYabcdY
1.970 -
1.971 -/ End of testinput2 /
1.972 +/(?<=b(?1)|zzz)(a)/
1.973 + xbaax
1.974 + xzzzax
1.975 +
1.976 +/(a)(?<=b\1)/
1.977 +
1.978 +/(a)(?<=b+(?1))/
1.979 +
1.980 +/(a+)(?<=b(?1))/
1.981 +
1.982 +/(a(?<=b(?1)))/
1.983 +
1.984 +/(?<=b(?1))xyz/
1.985 +
1.986 +/(?<=b(?1))xyz(b+)pqrstuvew/
1.987 +
1.988 +/(a|bc)\1/SI
1.989 +
1.990 +/(a|bc)\1{2,3}/SI
1.991 +
1.992 +/(a|bc)(?1)/SI
1.993 +
1.994 +/(a|b\1)(a|b\1)/SI
1.995 +
1.996 +/(a|b\1){2}/SI
1.997 +
1.998 +/(a|bbbb\1)(a|bbbb\1)/SI
1.999 +
1.1000 +/(a|bbbb\1){2}/SI
1.1001 +
1.1002 +/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI
1.1003 +
1.1004 +/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS
1.1005 +
1.1006 +"(?>.*/)foo"SI
1.1007 +
1.1008 +/(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /xSI
1.1009 +
1.1010 +/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
1.1011 +
1.1012 +/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
1.1013 +
1.1014 +/<a[\s]+href[\s]*=[\s]* # find <a href=
1.1015 + ([\"\'])? # find single or double quote
1.1016 + (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
1.1017 + # quote, otherwise match up to next space
1.1018 +/isxSI
1.1019 +
1.1020 +/^(?!:) # colon disallowed at start
1.1021 + (?: # start of item
1.1022 + (?: [0-9a-f]{1,4} | # 1-4 hex digits or
1.1023 + (?(1)0 | () ) ) # if null previously matched, fail; else null
1.1024 + : # followed by colon
1.1025 + ){1,7} # end item; 1-7 of them required
1.1026 + [0-9a-f]{1,4} $ # final hex number at end of string
1.1027 + (?(1)|.) # check that there was an empty component
1.1028 + /xiIS
1.1029 +
1.1030 +/(?|(?<a>A)|(?<a>B))/I
1.1031 + AB\Ca
1.1032 + BA\Ca
1.1033 +
1.1034 +/(?|(?<a>A)|(?<b>B))/
1.1035 +
1.1036 +/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
1.1037 + b(?<quote> (?<apostrophe>')|(?<realquote>")) )
1.1038 + (?('quote')[a-z]+|[0-9]+)/JIx
1.1039 + a"aaaaa
1.1040 + b"aaaaa
1.1041 + ** Failers
1.1042 + b"11111
1.1043 + a"11111
1.1044 +
1.1045 +/^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
1.1046 + abcdX
1.1047 + eX
1.1048 + ** Failers
1.1049 + abcdY
1.1050 + ey
1.1051 +
1.1052 +/(?<A>a) (b)(c) (?<A>d (?(R&A)$ | (?4)) )/JDZx
1.1053 + abcdd
1.1054 + ** Failers
1.1055 + abcdde
1.1056 +
1.1057 +/abcd*/
1.1058 + xxxxabcd\P
1.1059 + xxxxabcd\P\P
1.1060 +
1.1061 +/abcd*/i
1.1062 + xxxxabcd\P
1.1063 + xxxxabcd\P\P
1.1064 + XXXXABCD\P
1.1065 + XXXXABCD\P\P
1.1066 +
1.1067 +/abc\d*/
1.1068 + xxxxabc1\P
1.1069 + xxxxabc1\P\P
1.1070 +
1.1071 +/(a)bc\1*/
1.1072 + xxxxabca\P
1.1073 + xxxxabca\P\P
1.1074 +
1.1075 +/abc[de]*/
1.1076 + xxxxabcde\P
1.1077 + xxxxabcde\P\P
1.1078 +
1.1079 +/-- This is not in the Perl >= 5.10 test because Perl seems currently to be
1.1080 + broken and not behaving as specified in that it *does* bumpalong after
1.1081 + hitting (*COMMIT). --/
1.1082 +
1.1083 +/(?1)(A(*COMMIT)|B)D/
1.1084 + ABD
1.1085 + XABD
1.1086 + BAD
1.1087 + ABXABD
1.1088 + ** Failers
1.1089 + ABX
1.1090 + BAXBAD
1.1091 +
1.1092 +/(\3)(\1)(a)/<JS>
1.1093 + cat
1.1094 +
1.1095 +/(\3)(\1)(a)/SI<JS>
1.1096 + cat
1.1097 +
1.1098 +/(\3)(\1)(a)/SI
1.1099 + cat
1.1100 +
1.1101 +/i(?(DEFINE)(?<s>a))/SI
1.1102 + i
1.1103 +
1.1104 +/()i(?(1)a)/SI
1.1105 + ia
1.1106 +
1.1107 +/(?i)a(?-i)b|c/BZ
1.1108 + XabX
1.1109 + XAbX
1.1110 + CcC
1.1111 + ** Failers
1.1112 + XABX
1.1113 +
1.1114 +/(?i)a(?s)b|c/BZ
1.1115 +
1.1116 +/(?i)a(?s-i)b|c/BZ
1.1117 +
1.1118 +/^(ab(c\1)d|x){2}$/BZ
1.1119 + xabcxd
1.1120 +
1.1121 +/^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
1.1122 +
1.1123 +/^(?&t)*(?(DEFINE)(?<t>.))$/BZ
1.1124 +
1.1125 +/ -- The first four of these are not in the Perl >= 5.10 test because Perl
1.1126 + documents that the use of \K in assertions is "not well defined". The
1.1127 + last is here because Perl gives the match as "b" rather than "ab". I
1.1128 + believe this to be a Perl bug. --/
1.1129 +
1.1130 +/(?=a\Kb)ab/
1.1131 + ab
1.1132 +
1.1133 +/(?!a\Kb)ac/
1.1134 + ac
1.1135 +
1.1136 +/^abc(?<=b\Kc)d/
1.1137 + abcd
1.1138 +
1.1139 +/^abc(?<!b\Kq)d/
1.1140 + abcd
1.1141 +
1.1142 +/(?>a\Kb)z|(ab)/
1.1143 + ab
1.1144 +
1.1145 +/----------------------/
1.1146 +
1.1147 +/(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
1.1148 +
1.1149 +/abc(*MARK:)pqr/
1.1150 +
1.1151 +/abc(*:)pqr/
1.1152 +
1.1153 +/abc(*FAIL:123)xyz/
1.1154 +
1.1155 +/--- This should, and does, fail. In Perl, it does not, which I think is a
1.1156 + bug because replacing the B in the pattern by (B|D) does make it fail. ---/
1.1157 +
1.1158 +/A(*COMMIT)B/+K
1.1159 + ACABX
1.1160 +
1.1161 +/--- These should be different, but in Perl 5.11 are not, which I think
1.1162 + is a bug in Perl. ---/
1.1163 +
1.1164 +/A(*THEN)B|A(*THEN)C/K
1.1165 + AC
1.1166 +
1.1167 +/A(*PRUNE)B|A(*PRUNE)C/K
1.1168 + AC
1.1169 +
1.1170 +/--- This should fail; the SKIP advances by one, but when we get to AC, the
1.1171 + PRUNE kills it. Perl behaves differently. ---/
1.1172 +
1.1173 +/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
1.1174 + AAAC
1.1175 +
1.1176 +/--- Mark names can be duplicated. Perl doesn't give a mark for this one,
1.1177 +though PCRE does. ---/
1.1178 +
1.1179 +/^A(*:A)B|^X(*:A)Y/K
1.1180 + ** Failers
1.1181 + XAQQ
1.1182 +
1.1183 +/--- COMMIT at the start of a pattern should be the same as an anchor. Perl
1.1184 +optimizations defeat this. So does the PCRE optimization unless we disable it
1.1185 +with \Y. ---/
1.1186 +
1.1187 +/(*COMMIT)ABC/
1.1188 + ABCDEFG
1.1189 + ** Failers
1.1190 + DEFGABC\Y
1.1191 +
1.1192 +/^(ab (c+(*THEN)cd) | xyz)/x
1.1193 + abcccd
1.1194 +
1.1195 +/^(ab (c+(*PRUNE)cd) | xyz)/x
1.1196 + abcccd
1.1197 +
1.1198 +/^(ab (c+(*FAIL)cd) | xyz)/x
1.1199 + abcccd
1.1200 +
1.1201 +/--- Perl 5.11 gets some of these wrong ---/
1.1202 +
1.1203 +/(?>.(*ACCEPT))*?5/
1.1204 + abcde
1.1205 +
1.1206 +/(.(*ACCEPT))*?5/
1.1207 + abcde
1.1208 +
1.1209 +/(.(*ACCEPT))5/
1.1210 + abcde
1.1211 +
1.1212 +/(.(*ACCEPT))*5/
1.1213 + abcde
1.1214 +
1.1215 +/A\NB./BZ
1.1216 + ACBD
1.1217 + *** Failers
1.1218 + A\nB
1.1219 + ACB\n
1.1220 +
1.1221 +/A\NB./sBZ
1.1222 + ACBD
1.1223 + ACB\n
1.1224 + *** Failers
1.1225 + A\nB
1.1226 +
1.1227 +/A\NB/<crlf>
1.1228 + A\nB
1.1229 + A\rB
1.1230 + ** Failers
1.1231 + A\r\nB
1.1232 +
1.1233 +/\R+b/BZ
1.1234 +
1.1235 +/\R+\n/BZ
1.1236 +
1.1237 +/\R+\d/BZ
1.1238 +
1.1239 +/\d*\R/BZ
1.1240 +
1.1241 +/\s*\R/BZ
1.1242 + \x20\x0a
1.1243 + \x20\x0d
1.1244 + \x20\x0d\x0a
1.1245 +
1.1246 +/\S*\R/BZ
1.1247 + a\x0a
1.1248 +
1.1249 +/X\h*\R/BZ
1.1250 + X\x20\x0a
1.1251 +
1.1252 +/X\H*\R/BZ
1.1253 + X\x0d\x0a
1.1254 +
1.1255 +/X\H+\R/BZ
1.1256 + X\x0d\x0a
1.1257 +
1.1258 +/X\H++\R/BZ
1.1259 + X\x0d\x0a
1.1260 +
1.1261 +/-- Perl treats this one differently, not failing the second string. I believe
1.1262 + that is a bug in Perl. --/
1.1263 +
1.1264 +/^((abc|abcx)(*THEN)y|abcd)/
1.1265 + abcd
1.1266 + *** Failers
1.1267 + abcxy
1.1268 +
1.1269 +/(?<=abc)def/
1.1270 + abc\P\P
1.1271 +
1.1272 +/abc$/
1.1273 + abc
1.1274 + abc\P
1.1275 + abc\P\P
1.1276 +
1.1277 +/abc$/m
1.1278 + abc
1.1279 + abc\n
1.1280 + abc\P\P
1.1281 + abc\n\P\P
1.1282 + abc\P
1.1283 + abc\n\P
1.1284 +
1.1285 +/abc\z/
1.1286 + abc
1.1287 + abc\P
1.1288 + abc\P\P
1.1289 +
1.1290 +/abc\Z/
1.1291 + abc
1.1292 + abc\P
1.1293 + abc\P\P
1.1294 +
1.1295 +/abc\b/
1.1296 + abc
1.1297 + abc\P
1.1298 + abc\P\P
1.1299 +
1.1300 +/abc\B/
1.1301 + abc
1.1302 + abc\P
1.1303 + abc\P\P
1.1304 +
1.1305 +/.+/
1.1306 + abc\>0
1.1307 + abc\>1
1.1308 + abc\>2
1.1309 + abc\>3
1.1310 + abc\>4
1.1311 + abc\>-4
1.1312 +
1.1313 +/^\cģ/
1.1314 +
1.1315 +/(?P<abn>(?P=abn)xxx)/BZ
1.1316 +
1.1317 +/(a\1z)/BZ
1.1318 +
1.1319 +/(?P<abn>(?P=abn)(?<badstufxxx)/BZ
1.1320 +
1.1321 +/(?P<abn>(?P=axn)xxx)/BZ
1.1322 +
1.1323 +/(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
1.1324 +
1.1325 +/-- These tests are here because Perl gets the first one wrong. --/
1.1326 +
1.1327 +/(\R*)(.)/s
1.1328 + \r\n
1.1329 + \r\r\n\n\r
1.1330 + \r\r\n\n\r\n
1.1331 +
1.1332 +/(\R)*(.)/s
1.1333 + \r\n
1.1334 + \r\r\n\n\r
1.1335 + \r\r\n\n\r\n
1.1336 +
1.1337 +/((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
1.1338 + \r\n
1.1339 + \r\r\n\n\r
1.1340 + \r\r\n\n\r\n
1.1341 +
1.1342 +/-- --/
1.1343 +
1.1344 +/^abc$/BZ
1.1345 +
1.1346 +/^abc$/BZm
1.1347 +
1.1348 +/^(a)*+(\w)/S
1.1349 + aaaaX
1.1350 + ** Failers
1.1351 + aaaa
1.1352 +
1.1353 +/^(?:a)*+(\w)/S
1.1354 + aaaaX
1.1355 + ** Failers
1.1356 + aaaa
1.1357 +
1.1358 +/(a)++1234/SDZ
1.1359 +
1.1360 +/([abc])++1234/SI
1.1361 +
1.1362 +/(?<=(abc)+)X/
1.1363 +
1.1364 +/(^ab)/I
1.1365 +
1.1366 +/(^ab)++/I
1.1367 +
1.1368 +/(^ab|^)+/I
1.1369 +
1.1370 +/(^ab|^)++/I
1.1371 +
1.1372 +/(?:^ab)/I
1.1373 +
1.1374 +/(?:^ab)++/I
1.1375 +
1.1376 +/(?:^ab|^)+/I
1.1377 +
1.1378 +/(?:^ab|^)++/I
1.1379 +
1.1380 +/(.*ab)/I
1.1381 +
1.1382 +/(.*ab)++/I
1.1383 +
1.1384 +/(.*ab|.*)+/I
1.1385 +
1.1386 +/(.*ab|.*)++/I
1.1387 +
1.1388 +/(?:.*ab)/I
1.1389 +
1.1390 +/(?:.*ab)++/I
1.1391 +
1.1392 +/(?:.*ab|.*)+/I
1.1393 +
1.1394 +/(?:.*ab|.*)++/I
1.1395 +
1.1396 +/(?=a)[bcd]/I
1.1397 +
1.1398 +/((?=a))[bcd]/I
1.1399 +
1.1400 +/((?=a))+[bcd]/I
1.1401 +
1.1402 +/((?=a))++[bcd]/I
1.1403 +
1.1404 +/(?=a+)[bcd]/iI
1.1405 +
1.1406 +/(?=a+?)[bcd]/iI
1.1407 +
1.1408 +/(?=a++)[bcd]/iI
1.1409 +
1.1410 +/(?=a{3})[bcd]/iI
1.1411 +
1.1412 +/(abc)\1+/S
1.1413 +
1.1414 +/-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
1.1415 +
1.1416 +/(?1)(?:(b(*ACCEPT))){0}/
1.1417 + b
1.1418 +
1.1419 +/(?1)(?:(b(*ACCEPT))){0}c/
1.1420 + bc
1.1421 + ** Failers
1.1422 + b
1.1423 +
1.1424 +/(?1)(?:((*ACCEPT))){0}c/
1.1425 + c
1.1426 + c\N
1.1427 +
1.1428 +/^.*?(?(?=a)a|b(*THEN)c)/
1.1429 + ba
1.1430 +
1.1431 +/^.*?(?(?=a)a|bc)/
1.1432 + ba
1.1433 +
1.1434 +/^.*?(?(?=a)a(*THEN)b|c)/
1.1435 + ac
1.1436 +
1.1437 +/^.*?(?(?=a)a(*THEN)b)c/
1.1438 + ac
1.1439 +
1.1440 +/^.*?(a(*THEN)b)c/
1.1441 + aabc
1.1442 +
1.1443 +/^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
1.1444 + aabc
1.1445 +
1.1446 +/^.*?(a(*THEN)b|z)c/
1.1447 + aabc
1.1448 +
1.1449 +/^.*?(z|a(*THEN)b)c/
1.1450 + aabc
1.1451 +
1.1452 +/-- --/
1.1453 +
1.1454 +/-- These studied versions are here because they are not Perl-compatible; the
1.1455 + studying means the mark is not seen. --/
1.1456 +
1.1457 +/(*MARK:A)(*SKIP:B)(C|X)/KS
1.1458 + C
1.1459 + D
1.1460 +
1.1461 +/(*:A)A+(*SKIP:A)(B|Z)/KS
1.1462 + AAAC
1.1463 +
1.1464 +/-- --/
1.1465 +
1.1466 +"(?=a*(*ACCEPT)b)c"
1.1467 + c
1.1468 + c\N
1.1469 +
1.1470 +/(?1)c(?(DEFINE)((*ACCEPT)b))/
1.1471 + c
1.1472 + c\N
1.1473 +
1.1474 +/(?>(*ACCEPT)b)c/
1.1475 + c
1.1476 + c\N
1.1477 +
1.1478 +/(?:(?>(a)))+a%/++
1.1479 + %aa%
1.1480 +
1.1481 +/(a)b|ac/++SS
1.1482 + ac\O3
1.1483 +
1.1484 +/(a)(b)x|abc/++
1.1485 + abc\O6
1.1486 +
1.1487 +/(a)bc|(a)(b)\2/
1.1488 + \O3abc
1.1489 + \O4abc
1.1490 +
1.1491 +/(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
1.1492 +
1.1493 +/(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
1.1494 +
1.1495 +/(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
1.1496 +
1.1497 +/(abc)(?1)/SI
1.1498 +
1.1499 +/^(?>a)++/
1.1500 + aa\M
1.1501 + aaaaaaaaa\M
1.1502 +
1.1503 +/(a)(?1)++/
1.1504 + aa\M
1.1505 + aaaaaaaaa\M
1.1506 +
1.1507 +/(?:(foo)|(bar)|(baz))X/SS=
1.1508 + bazfooX
1.1509 + foobazbarX
1.1510 + barfooX
1.1511 + bazX
1.1512 + foobarbazX
1.1513 + bazfooX\O0
1.1514 + bazfooX\O2
1.1515 + bazfooX\O4
1.1516 + bazfooX\O6
1.1517 + bazfooX\O8
1.1518 + bazfooX\O10
1.1519 +
1.1520 +/(?=abc){3}abc/BZ
1.1521 +
1.1522 +/(?=abc)+abc/BZ
1.1523 +
1.1524 +/(?=abc)++abc/BZ
1.1525 +
1.1526 +/(?=abc){0}xyz/BZ
1.1527 +
1.1528 +/(?=(a))?./BZ
1.1529 +
1.1530 +/(?=(a))??./BZ
1.1531 +
1.1532 +/^(?=(a)){0}b(?1)/BZ
1.1533 +
1.1534 +/(?(DEFINE)(a))?b(?1)/BZ
1.1535 +
1.1536 +/^(?=(?1))?[az]([abc])d/BZ
1.1537 +
1.1538 +/^(?!a){0}\w+/BZ
1.1539 +
1.1540 +/(?<=(abc))?xyz/BZ
1.1541 +
1.1542 +/[:a[:abc]b:]/BZ
1.1543 +
1.1544 +/((?2))((?1))/SS
1.1545 + abc
1.1546 +
1.1547 +/((?(R2)a+|(?1)b))/SS
1.1548 + aaaabcde
1.1549 +
1.1550 +/(?(R)a*(?1)|((?R))b)/SS
1.1551 + aaaabcde
1.1552 +
1.1553 +/(a+|(?R)b)/
1.1554 +
1.1555 +/^(a(*:A)(d|e(*:B))z|aeq)/C
1.1556 + adz
1.1557 + aez
1.1558 + aeqwerty
1.1559 +
1.1560 +/.(*F)/
1.1561 + \P\Pabc
1.1562 +
1.1563 +/\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
1.1564 +
1.1565 +/\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
1.1566 +
1.1567 +/a(*SKIP)c|b(*ACCEPT)|/+SI
1.1568 + a
1.1569 +
1.1570 +/a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
1.1571 + ax
1.1572 +
1.1573 +'a*(*ACCEPT)b'+
1.1574 + \N\N
1.1575 + abc\N\N
1.1576 + bbb\N\N
1.1577 +
1.1578 +/(*ACCEPT)a/+I
1.1579 + bax
1.1580 +
1.1581 +/z(*ACCEPT)a/+I
1.1582 + baxzbx
1.1583 +
1.1584 +/a(?:.)*?a/ims
1.1585 + \Mabbbbbbbbbbbbbbbbbbbbba
1.1586 +
1.1587 +/a(?:.(*THEN))*?a/ims
1.1588 + \Mabbbbbbbbbbbbbbbbbbbbba
1.1589 +
1.1590 +/a(?:.(*THEN:ABC))*?a/ims
1.1591 + \Mabbbbbbbbbbbbbbbbbbbbba
1.1592 +
1.1593 +/-- These tests are in agreement with development Perl 5.015, which has fixed
1.1594 + some things, but they don't all work with 5.012, so they aren't in the
1.1595 + Perl-compatible tests. Those after the first come from Perl's own test
1.1596 + files. --/
1.1597 +
1.1598 +/^((yes|no)(*THEN)(*F))?/
1.1599 + yes
1.1600 +
1.1601 +/(A (.*) C? (*THEN) | A D) (*FAIL)/x
1.1602 +AbcdCBefgBhiBqz
1.1603 +
1.1604 +/(A (.*) C? (*THEN) | A D) z/x
1.1605 +AbcdCBefgBhiBqz
1.1606 +
1.1607 +/(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
1.1608 +AbcdCBefgBhiBqz
1.1609 +
1.1610 +/(A (.*) C? (*THEN) | A D) \s* z/x
1.1611 +AbcdCBefgBhiBqz
1.1612 +
1.1613 +/(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
1.1614 +AbcdCBefgBhiBqz
1.1615 +
1.1616 +/(A (.*) (?:C|) (*THEN) | A D) z/x
1.1617 +AbcdCBefgBhiBqz
1.1618 +
1.1619 +/(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
1.1620 +AbcdCBefgBhiBqz
1.1621 +
1.1622 +/(A (.*) C{0,6} (*THEN) | A D) z/x
1.1623 +AbcdCBefgBhiBqz
1.1624 +
1.1625 +/(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
1.1626 +AbcdCEBefgBhiBqz
1.1627 +
1.1628 +/(A (.*) (CE){0,6} (*THEN) | A D) z/x
1.1629 +AbcdCEBefgBhiBqz
1.1630 +
1.1631 +/(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
1.1632 +AbcdCBefgBhiBqz
1.1633 +
1.1634 +/(A (.*) (CE*){0,6} (*THEN) | A D) z/x
1.1635 +AbcdCBefgBhiBqz
1.1636 +
1.1637 +/-----------------------------------------------/
1.1638 +
1.1639 +/^(?>a+)(?>(z+))\w/BZ
1.1640 + aaaazzzzb
1.1641 + ** Failers
1.1642 + aazz
1.1643 +
1.1644 +/(.)(\1|a(?2))/
1.1645 + bab
1.1646 +
1.1647 +/\1|(.)(?R)\1/
1.1648 + cbbbc
1.1649 +
1.1650 +/(.)((?(1)c|a)|a(?2))/
1.1651 + baa
1.1652 +
1.1653 +/(?P<abn>(?P=abn)xxx)/BZ
1.1654 +
1.1655 +/(a\1z)/BZ
1.1656 +
1.1657 +/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
1.1658 + \Maabbccddee
1.1659 +
1.1660 +/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
1.1661 + \Maabbccddee
1.1662 +
1.1663 +/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
1.1664 + \Maabbccddee
1.1665 +
1.1666 +/^a\x41z/<JS>
1.1667 + aAz
1.1668 + *** Failers
1.1669 + ax41z
1.1670 +
1.1671 +/^a[m\x41]z/<JS>
1.1672 + aAz
1.1673 +
1.1674 +/^a\x1z/<JS>
1.1675 + ax1z
1.1676 +
1.1677 +/^a\u0041z/<JS>
1.1678 + aAz
1.1679 + *** Failers
1.1680 + au0041z
1.1681 +
1.1682 +/^a[m\u0041]z/<JS>
1.1683 + aAz
1.1684 +
1.1685 +/^a\u041z/<JS>
1.1686 + au041z
1.1687 + *** Failers
1.1688 + aAz
1.1689 +
1.1690 +/^a\U0041z/<JS>
1.1691 + aU0041z
1.1692 + *** Failers
1.1693 + aAz
1.1694 +
1.1695 +/(?(?=c)c|d)++Y/BZ
1.1696 +
1.1697 +/(?(?=c)c|d)*+Y/BZ
1.1698 +
1.1699 +/a[\NB]c/
1.1700 + aNc
1.1701 +
1.1702 +/a[B-\Nc]/
1.1703 +
1.1704 +/(a)(?2){0,1999}?(b)/
1.1705 +
1.1706 +/(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
1.1707 +
1.1708 +/--- This test, with something more complicated than individual letters, causes
1.1709 +different behaviour in Perl. Perhaps it disables some optimization; no tag is
1.1710 +passed back for the failures, whereas in PCRE there is a tag. ---/
1.1711 +
1.1712 +/(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
1.1713 + AABC
1.1714 + XXYZ
1.1715 + ** Failers
1.1716 + XAQQ
1.1717 + XAQQXZZ
1.1718 + AXQQQ
1.1719 + AXXQQQ
1.1720 +
1.1721 +/-- Perl doesn't give marks for these, though it does if the alternatives are
1.1722 +replaced by single letters. --/
1.1723 +
1.1724 +/(b|q)(*:m)f|a(*:n)w/K
1.1725 + aw
1.1726 + ** Failers
1.1727 + abc
1.1728 +
1.1729 +/(q|b)(*:m)f|a(*:n)w/K
1.1730 + aw
1.1731 + ** Failers
1.1732 + abc
1.1733 +
1.1734 +/-- After a partial match, the behaviour is as for a failure. --/
1.1735 +
1.1736 +/^a(*:X)bcde/K
1.1737 + abc\P
1.1738 +
1.1739 +/-- These are here because Perl doesn't return a mark, except for the first --/
1.1740 +
1.1741 +/(?=(*:x))(q|)/K+
1.1742 + abc
1.1743 +
1.1744 +/(?=(*:x))((*:y)q|)/K+
1.1745 + abc
1.1746 +
1.1747 +/(?=(*:x))(?:(*:y)q|)/K+
1.1748 + abc
1.1749 +
1.1750 +/(?=(*:x))(?>(*:y)q|)/K+
1.1751 + abc
1.1752 +
1.1753 +/(?=a(*:x))(?!a(*:y)c)/K+
1.1754 + ab
1.1755 +
1.1756 +/(?=a(*:x))(?=a(*:y)c|)/K+
1.1757 + ab
1.1758 +
1.1759 +/(..)\1/
1.1760 + ab\P
1.1761 + aba\P
1.1762 + abab\P
1.1763 +
1.1764 +/(..)\1/i
1.1765 + ab\P
1.1766 + abA\P
1.1767 + aBAb\P
1.1768 +
1.1769 +/(..)\1{2,}/
1.1770 + ab\P
1.1771 + aba\P
1.1772 + abab\P
1.1773 + ababa\P
1.1774 + ababab\P
1.1775 + ababab\P\P
1.1776 + abababa\P
1.1777 + abababa\P\P
1.1778 +
1.1779 +/(..)\1{2,}/i
1.1780 + ab\P
1.1781 + aBa\P
1.1782 + aBAb\P
1.1783 + AbaBA\P
1.1784 + abABAb\P
1.1785 + aBAbaB\P\P
1.1786 + abABabA\P
1.1787 + abaBABa\P\P
1.1788 +
1.1789 +/(..)\1{2,}?x/i
1.1790 + ab\P
1.1791 + abA\P
1.1792 + aBAb\P
1.1793 + abaBA\P
1.1794 + abAbaB\P
1.1795 + abaBabA\P
1.1796 + abAbABaBx\P
1.1797 +
1.1798 +/^(..)\1/
1.1799 + aba\P
1.1800 +
1.1801 +/^(..)\1{2,3}x/
1.1802 + aba\P
1.1803 + ababa\P
1.1804 + ababa\P\P
1.1805 + abababx
1.1806 + ababababx
1.1807 +
1.1808 +/^(..)\1{2,3}?x/
1.1809 + aba\P
1.1810 + ababa\P
1.1811 + ababa\P\P
1.1812 + abababx
1.1813 + ababababx
1.1814 +
1.1815 +/^(..)(\1{2,3})ab/
1.1816 + abababab
1.1817 +
1.1818 +/^\R/
1.1819 + \r\P
1.1820 + \r\P\P
1.1821 +
1.1822 +/^\R{2,3}x/
1.1823 + \r\P
1.1824 + \r\P\P
1.1825 + \r\r\P
1.1826 + \r\r\P\P
1.1827 + \r\r\r\P
1.1828 + \r\r\r\P\P
1.1829 + \r\rx
1.1830 + \r\r\rx
1.1831 +
1.1832 +/^\R{2,3}?x/
1.1833 + \r\P
1.1834 + \r\P\P
1.1835 + \r\r\P
1.1836 + \r\r\P\P
1.1837 + \r\r\r\P
1.1838 + \r\r\r\P\P
1.1839 + \r\rx
1.1840 + \r\r\rx
1.1841 +
1.1842 +/^\R?x/
1.1843 + \r\P
1.1844 + \r\P\P
1.1845 + x
1.1846 + \rx
1.1847 +
1.1848 +/^\R+x/
1.1849 + \r\P
1.1850 + \r\P\P
1.1851 + \r\n\P
1.1852 + \r\n\P\P
1.1853 + \rx
1.1854 +
1.1855 +/^a$/<CRLF>
1.1856 + a\r\P
1.1857 + a\r\P\P
1.1858 +
1.1859 +/^a$/m<CRLF>
1.1860 + a\r\P
1.1861 + a\r\P\P
1.1862 +
1.1863 +/^(a$|a\r)/<CRLF>
1.1864 + a\r\P
1.1865 + a\r\P\P
1.1866 +
1.1867 +/^(a$|a\r)/m<CRLF>
1.1868 + a\r\P
1.1869 + a\r\P\P
1.1870 +
1.1871 +/./<CRLF>
1.1872 + \r\P
1.1873 + \r\P\P
1.1874 +
1.1875 +/.{2,3}/<CRLF>
1.1876 + \r\P
1.1877 + \r\P\P
1.1878 + \r\r\P
1.1879 + \r\r\P\P
1.1880 + \r\r\r\P
1.1881 + \r\r\r\P\P
1.1882 +
1.1883 +/.{2,3}?/<CRLF>
1.1884 + \r\P
1.1885 + \r\P\P
1.1886 + \r\r\P
1.1887 + \r\r\P\P
1.1888 + \r\r\r\P
1.1889 + \r\r\r\P\P
1.1890 +
1.1891 +/-- These two are here because Perl does not match: it seems to allow the
1.1892 +COMMIT to escape from the assertion. --/
1.1893 +
1.1894 +/(?=a(*COMMIT)b|ac)ac|ac/
1.1895 + ac
1.1896 +
1.1897 +/(?=a(*COMMIT)b|(ac)) ac | (a)c/x
1.1898 + ac
1.1899 +
1.1900 +"AB(C(D))(E(F))?(?(?=\2)(?=\4))"
1.1901 + ABCDGHI\O03
1.1902 +
1.1903 +/-- This one is here because Perl does not confine the *COMMIT to the
1.1904 +assertion, and therefore fails the entire subroutine call. --/
1.1905 +
1.1906 +/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
1.1907 + ac
1.1908 +
1.1909 +/-- These are all run as real matches in test 1; here we are just checking the
1.1910 +settings of the anchored and startline bits. --/
1.1911 +
1.1912 +/(?>.*?a)(?<=ba)/I
1.1913 +
1.1914 +/(?:.*?a)(?<=ba)/I
1.1915 +
1.1916 +/.*?a(*PRUNE)b/I
1.1917 +
1.1918 +/.*?a(*PRUNE)b/sI
1.1919 +
1.1920 +/^a(*PRUNE)b/sI
1.1921 +
1.1922 +/.*?a(*SKIP)b/I
1.1923 +
1.1924 +/(?>.*?a)b/sI
1.1925 +
1.1926 +/(?>.*?a)b/I
1.1927 +
1.1928 +/(?>^a)b/sI
1.1929 +
1.1930 +/(?>.*?)(?<=(abcd)|(wxyz))/I
1.1931 +
1.1932 +/(?>.*)(?<=(abcd)|(wxyz))/I
1.1933 +
1.1934 +"(?>.*)foo"I
1.1935 +
1.1936 +"(?>.*?)foo"I
1.1937 +
1.1938 +/(?>^abc)/mI
1.1939 +
1.1940 +/(?>.*abc)/mI
1.1941 +
1.1942 +/(?:.*abc)/mI
1.1943 +
1.1944 +/-- Check PCRE_STUDY_EXTRA_NEEDED --/
1.1945 +
1.1946 +/.?/S-I
1.1947 +
1.1948 +/.?/S!I
1.1949 +
1.1950 +/-- End of testinput2 --/