/[pcre]/code/trunk/testdata/testinput2
ViewVC logotype

Diff of /code/trunk/testdata/testinput2

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 488 by ph10, Mon Jan 11 15:29:42 2010 UTC revision 1296 by ph10, Tue Mar 19 16:29:12 2013 UTC
# Line 2  Line 2 
2      of PCRE's API, error diagnostics, and the compiled code of some patterns.      of PCRE's API, error diagnostics, and the compiled code of some patterns.
3      It also checks the non-Perl syntax the PCRE supports (Python, .NET,      It also checks the non-Perl syntax the PCRE supports (Python, .NET,
4      Oniguruma). Finally, there are some tests where PCRE and Perl differ,      Oniguruma). Finally, there are some tests where PCRE and Perl differ,
5      either because PCRE can't be compatible, or there is potential Perl      either because PCRE can't be compatible, or there is a possible Perl
6      bug. --/      bug.
7    
8        NOTE: This is a non-UTF set of tests. When UTF support is needed, use
9        test 5, and if Unicode Property Support is needed, use test 7. --/
10    
 /-- Originally, the Perl 5.10 things were in here too, but now I have separated  
     many (most?) of them out into test 11. However, there may still be some  
     that were overlooked. --/  
   
11  /(a)b|/I  /(a)b|/I
12    
13  /abc/I  /abc/I
# Line 51  Line 50 
50    
51  /(?X)[\B]/  /(?X)[\B]/
52    
53    /(?X)[\R]/
54    
55    /(?X)[\X]/
56    
57    /[\B]/BZ
58    
59    /[\R]/BZ
60    
61    /[\X]/BZ
62    
63  /[z-a]/  /[z-a]/
64    
65  /^*/  /^*/
# Line 134  Line 143 
143      defabc      defabc
144      \Zdefabc      \Zdefabc
145    
 /abc/P  
     abc  
     *** Failers  
   
 /^abc|def/P  
     abcdef  
     abcdef\B  
   
 /.*((abc)$|(def))/P  
     defabc  
     \Zdefabc  
   
 /the quick brown fox/P  
     the quick brown fox  
     *** Failers  
     The Quick Brown Fox  
   
 /the quick brown fox/Pi  
     the quick brown fox  
     The Quick Brown Fox  
   
 /abc.def/P  
     *** Failers  
     abc\ndef  
   
 /abc$/P  
     abc  
     abc\n  
   
 /(abc)\2/P  
   
 /(abc\1)/P  
     abc  
   
146  /)/  /)/
147    
148  /a[]b/  /a[]b/
# Line 432  Line 407 
407    
408  /abc/\  /abc/\
409    
 /abc/\P  
   
410  /abc/\i  /abc/\i
411    
412  /(a)bc(d)/I  /(a)bc(d)/I
# Line 481  Line 454 
454  /\Biss\B/I+  /\Biss\B/I+
455      Mississippi      Mississippi
456    
 /\Biss\B/I+P  
     Mississippi  
   
457  /iss/IG+  /iss/IG+
458      Mississippi      Mississippi
459    
# Line 619  Line 589 
589      *** Failers      *** Failers
590      \Nabc      \Nabc
591    
 /a*(b+)(z)(z)/P  
     aaaabbbbzzzz  
     aaaabbbbzzzz\O0  
     aaaabbbbzzzz\O1  
     aaaabbbbzzzz\O2  
     aaaabbbbzzzz\O3  
     aaaabbbbzzzz\O4  
     aaaabbbbzzzz\O5  
   
592  /^.?abcd/IS  /^.?abcd/IS
593    
594  /\(             # ( at start  /\(             # ( at start
# Line 1051  Line 1012 
1012  /abc(?C)de(?C1)f/I  /abc(?C)de(?C1)f/I
1013      123abcdef      123abcdef
1014    
1015  /(?C1)\dabc(?C2)def/I  /(?C1)\dabc(?C2)def/IS
1016        1234abcdef
1017        *** Failers
1018        abcdef
1019    
1020    /(?C1)\dabc(?C2)def/ISS
1021      1234abcdef      1234abcdef
1022      *** Failers      *** Failers
1023      abcdef      abcdef
# Line 1300  Line 1266 
1266    abcde    abcde
1267    abcdfe    abcdfe
1268    
1269  /a*b/ICDZ  /a*b/ICDZS
1270      ab
1271      aaaab
1272      aaaacb
1273    
1274    /a*b/ICDZSS
1275    ab    ab
1276    aaaab    aaaab
1277    aaaacb    aaaacb
# Line 1310  Line 1281 
1281    aaaab    aaaab
1282    aaaacb    aaaacb
1283    
1284  /(abc|def)x/ICDZ  /(abc|def)x/ICDZS
1285    abcx    abcx
1286    defx    defx
1287      ** Failers
1288      abcdefzx
1289    
1290    /(abc|def)x/ICDZSS
1291      abcx
1292      defx
1293      ** Failers
1294    abcdefzx    abcdefzx
1295    
1296  /(ab|cd){3,4}/IC  /(ab|cd){3,4}/IC
# Line 1320  Line 1298 
1298    abcdabcd    abcdabcd
1299    abcdcdcdcdcd    abcdcdcdcdcd
1300    
1301  /([ab]{,4}c|xy)/ICDZ  /([ab]{,4}c|xy)/ICDZS
1302        Note: that { does NOT introduce a quantifier
1303    
1304    /([ab]{,4}c|xy)/ICDZSS
1305      Note: that { does NOT introduce a quantifier      Note: that { does NOT introduce a quantifier
1306    
1307  /([ab]{1,4}c|xy){4,5}?123/ICDZ  /([ab]{1,4}c|xy){4,5}?123/ICDZ
# Line 1394  Line 1375 
1375      1X      1X
1376      123456\P      123456\P
1377    
1378  /abc/I>testsavedregex  /abc/IS>testsavedregex
1379    <testsavedregex
1380        abc
1381        ** Failers
1382        bca
1383    
1384    /abc/ISS>testsavedregex
1385  <testsavedregex  <testsavedregex
1386      abc      abc
1387      ** Failers      ** Failers
1388      bca      bca
1389    
1390  /abc/IF>testsavedregex  /abc/IFS>testsavedregex
1391    <testsavedregex
1392        abc
1393        ** Failers
1394        bca
1395    
1396    /abc/IFSS>testsavedregex
1397  <testsavedregex  <testsavedregex
1398      abc      abc
1399      ** Failers      ** Failers
# Line 1412  Line 1405 
1405      ** Failers      ** Failers
1406      def      def
1407    
1408    /(a|b)/ISS>testsavedregex
1409    <testsavedregex
1410        abc
1411        ** Failers
1412        def
1413    
1414  /(a|b)/ISF>testsavedregex  /(a|b)/ISF>testsavedregex
1415  <testsavedregex  <testsavedregex
1416      abc      abc
1417      ** Failers      ** Failers
1418      def      def
1419    
1420    /(a|b)/ISSF>testsavedregex
1421    <testsavedregex
1422        abc
1423        ** Failers
1424        def
1425    
1426  ~<(\w+)/?>(.)*</(\1)>~smgI  ~<(\w+)/?>(.)*</(\1)>~smgI
1427      <!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>      \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>
1428    
1429  /^a/IF  /^a/IF
1430    
# Line 1437  Line 1442 
1442      ** Failers      ** Failers
1443      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1444    
 /ab.cd/P  
     ab-cd  
     ab=cd  
     ** Failers  
     ab\ncd  
   
 /ab.cd/Ps  
     ab-cd  
     ab=cd  
     ab\ncd  
   
1445  /(?i)(?-i)AbCd/I  /(?i)(?-i)AbCd/I
1446      AbCd      AbCd
1447      ** Failers      ** Failers
# Line 1498  Line 1492 
1492      (this)      (this)
1493      ((this))      ((this))
1494    
 /a(b)c/PN  
     abc  
   
 /a(?P<name>b)c/PN  
     abc  
   
 /\x{100}/I  
   
1495  /\x{0000ff}/I  /\x{0000ff}/I
1496    
1497  /^((?P<A>a1)|(?P<A>a2)b)/I  /^((?P<A>a1)|(?P<A>a2)b)/I
# Line 1583  a random value. /Ix Line 1569  a random value. /Ix
1569  /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I  /()()()()()()()()()(?:(?(A)(?P=A)a|b)(?P<A>X|Y))+/I
1570      bXXaYYaY      bXXaYYaY
1571    
 /\777/I  
   
1572  /\s*,\s*/IS  /\s*,\s*/IS
1573      \x0b,\x0b      \x0b,\x0b
1574      \x0c,\x0d      \x0c,\x0d
# Line 1966  a random value. /Ix Line 1950  a random value. /Ix
1950    
1951  /(?(DEFINE) abc) xyz/xI  /(?(DEFINE) abc) xyz/xI
1952    
 /(?(DEFINE) abc){3} xyz/x  
   
1953  /(a|)*\d/  /(a|)*\d/
1954    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1955    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
# Line 2189  a random value. /Ix Line 2171  a random value. /Ix
2171      xabcpqrx      xabcpqrx
2172      xxyzx      xxyzx
2173    
 /[\h]/BZ  
     >\x09<  
   
 /[\h]+/BZ  
     >\x09\x20\xa0<  
   
 /[\v]/BZ  
   
 /[\H]/BZ  
   
 /[^\h]/BZ  
   
 /[\V]/BZ  
   
 /[\x0a\V]/BZ  
   
2174  /\H++X/BZ  /\H++X/BZ
2175      ** Failers      ** Failers
2176      XXXX      XXXX
# Line 2245  a random value. /Ix Line 2211  a random value. /Ix
2211  /\V+\v\V+\w/BZ  /\V+\v\V+\w/BZ
2212    
2213  /\( (?: [^()]* | (?R) )* \)/x  /\( (?: [^()]* | (?R) )* \)/x
2214  (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)  \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)
2215    
2216  /[\E]AAA/  /[\E]AAA/
2217    
# Line 2279  a random value. /Ix Line 2245  a random value. /Ix
2245  /a+b?(*THEN)c+(*FAIL)/C  /a+b?(*THEN)c+(*FAIL)/C
2246      aaabccc      aaabccc
2247    
 /a(*PRUNE:XXX)b/  
   
2248  /a(*MARK)b/  /a(*MARK)b/
2249    
2250  /(?i:A{1,}\6666666666)/  /(?i:A{1,}\6666666666)/
2251    
2252  /\g6666666666/  /\g6666666666/
2253    
2254  /[\g6666666666]/  /[\g6666666666]/BZ
2255    
2256  /(?1)\c[/  /(?1)\c[/
2257    
# Line 2338  a random value. /Ix Line 2302  a random value. /Ix
2302      a\nb      a\nb
2303      a\r\nb      a\r\nb
2304      a\x85b      a\x85b
2305    
2306    /(*ANY).*/g
2307        abc\r\ndef
2308    
2309    /(*ANYCRLF).*/g
2310        abc\r\ndef
2311    
2312    /(*CRLF).*/g
2313        abc\r\ndef
2314    
2315  /a\Rb/I<bsr_anycrlf>  /a\Rb/I<bsr_anycrlf>
2316      a\rb      a\rb
# Line 2436  a random value. /Ix Line 2409  a random value. /Ix
2409    
2410  /\k{}/  /\k{}/
2411    
2412    /\k/
2413    
2414    /\kabc/
2415    
2416  /(?P=)/  /(?P=)/
2417    
2418  /(?P>)/  /(?P>)/
# Line 2553  a random value. /Ix Line 2530  a random value. /Ix
2530    
2531  /(?(?=.*b).*b|^d)/I  /(?(?=.*b).*b|^d)/I
2532    
 /a?|b?/P  
     abc  
     ** Failers  
     ddd\N  
   
2533  /xyz/C  /xyz/C
2534    xyz    xyz
2535    abcxyz    abcxyz
# Line 2567  a random value. /Ix Line 2539  a random value. /Ix
2539    abc\Y    abc\Y
2540    abcxypqr    abcxypqr
2541    abcxypqr\Y    abcxypqr\Y
2542    
2543    /(*NO_START_OPT)xyz/C
2544      abcxyz
2545    
2546    /xyz/CY
2547      abcxyz
2548    
2549  /^"((?(?=[a])[^"])|b)*"$/C  /^"((?(?=[a])[^"])|b)*"$/C
2550      "ab"      "ab"
# Line 2743  a random value. /Ix Line 2721  a random value. /Ix
2721     abc\P     abc\P
2722     abc\P\P     abc\P\P
2723    
 /\w+A/P  
    CDAAAAB  
   
 /\w+A/PU  
    CDAAAAB  
   
2724  /abc\K123/  /abc\K123/
2725      xyzabc123pqr      xyzabc123pqr
2726      xyzabc12\P      xyzabc12\P
# Line 2892  a random value. /Ix Line 2864  a random value. /Ix
2864    
2865  /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI  /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI
2866    
 /  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*                          # optional leading comment  
 (?:    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )                    # initial word  
 (?:  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )  )* # further okay, if led by a period  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
 # address  
 |                     #  or  
 (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )             # one word, optionally followed by....  
 (?:  
 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...  
 \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)       |  # comments, or...  
   
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 # quoted strings  
 )*  
 <  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*                     # leading <  
 (?:  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
   
 (?:  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  ,  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
 )* # further okay, if led by comma  
 :                                # closing colon  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  )? #       optional route  
 (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )                    # initial word  
 (?:  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |  
 " (?:                      # opening quote...  
 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote  
 |                     #    or  
 \\ [^\x80-\xff]           #   Escaped something (something != CR)  
 )* "  # closing quote  
 )  )* # further okay, if led by a period  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  @  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*    (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                           # initial subdomain  
 (?:                                  #  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  \.                        # if led by a period...  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*   (?:  
 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...  
 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom  
 |   \[                         # [  
 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff  
 \]                        #           ]  
 )                     #   ...further okay  
 )*  
 #       address spec  
 (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*  > #                  trailing >  
 # name and address  
 )  (?: [\040\t] |  \(  
 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*  
 \)  )*                       # optional trailing comment  
 /xSI  
   
2867  /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS  /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/isIS
2868    
2869  "(?>.*/)foo"SI  "(?>.*/)foo"SI
# Line 3162  a random value. /Ix Line 2939  a random value. /Ix
2939      xxxxabcde\P      xxxxabcde\P
2940      xxxxabcde\P\P      xxxxabcde\P\P
2941    
2942  /-- This is not in the Perl 5.10 test because Perl seems currently to be broken  /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
2943      and not behaving as specified in that it *does* bumpalong after hitting      broken and not behaving as specified in that it *does* bumpalong after
2944      (*COMMIT). --/      hitting (*COMMIT). --/
2945    
2946  /(?1)(A(*COMMIT)|B)D/  /(?1)(A(*COMMIT)|B)D/
2947      ABD      ABD
# Line 3203  a random value. /Ix Line 2980  a random value. /Ix
2980    
2981  /^(ab(c\1)d|x){2}$/BZ  /^(ab(c\1)d|x){2}$/BZ
2982      xabcxd      xabcxd
2983    
2984    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
2985    
2986    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
2987    
2988    / -- The first four of these are not in the Perl >= 5.10 test because Perl
2989         documents that the use of \K in assertions is "not well defined". The
2990         last is here because Perl gives the match as "b" rather than "ab". I
2991         believe this to be a Perl bug. --/
2992    
2993    /(?=a\Kb)ab/
2994        ab
2995    
2996    /(?!a\Kb)ac/
2997        ac
2998    
2999    /^abc(?<=b\Kc)d/
3000        abcd
3001    
3002    /^abc(?<!b\Kq)d/
3003        abcd
3004    
3005    /(?>a\Kb)z|(ab)/
3006        ab
3007    
3008    /----------------------/
3009    
3010    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3011    
3012    /abc(*MARK:)pqr/
3013    
3014    /abc(*:)pqr/
3015    
3016    /abc(*FAIL:123)xyz/
3017    
3018    /--- This should, and does, fail. In Perl, it does not, which I think is a
3019         bug because replacing the B in the pattern by (B|D) does make it fail. ---/
3020    
3021    /A(*COMMIT)B/+K
3022        ACABX
3023    
3024    /--- These should be different, but in Perl 5.11 are not, which I think
3025         is a bug in Perl. ---/
3026    
3027    /A(*THEN)B|A(*THEN)C/K
3028        AC
3029    
3030    /A(*PRUNE)B|A(*PRUNE)C/K
3031        AC
3032    
3033    /--- This should fail; the SKIP advances by one, but when we get to AC, the
3034         PRUNE kills it. Perl behaves differently. ---/
3035    
3036    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3037        AAAC
3038    
3039    /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
3040    though PCRE does. ---/
3041    
3042    /^A(*:A)B|^X(*:A)Y/K
3043        ** Failers
3044        XAQQ
3045    
3046    /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3047    optimizations defeat this. So does the PCRE optimization unless we disable it
3048    with \Y. ---/
3049    
3050    /(*COMMIT)ABC/
3051        ABCDEFG
3052        ** Failers
3053        DEFGABC\Y
3054    
3055    /^(ab (c+(*THEN)cd) | xyz)/x
3056        abcccd
3057    
3058    /^(ab (c+(*PRUNE)cd) | xyz)/x
3059        abcccd
3060    
3061    /^(ab (c+(*FAIL)cd) | xyz)/x
3062        abcccd
3063    
3064    /--- Perl 5.11 gets some of these wrong ---/
3065    
3066    /(?>.(*ACCEPT))*?5/
3067        abcde
3068    
3069    /(.(*ACCEPT))*?5/
3070        abcde
3071    
3072    /(.(*ACCEPT))5/
3073        abcde
3074    
3075    /(.(*ACCEPT))*5/
3076        abcde
3077    
3078    /A\NB./BZ
3079        ACBD
3080        *** Failers
3081        A\nB
3082        ACB\n
3083    
3084    /A\NB./sBZ
3085        ACBD
3086        ACB\n
3087        *** Failers
3088        A\nB
3089    
3090    /A\NB/<crlf>
3091        A\nB
3092        A\rB
3093        ** Failers
3094        A\r\nB
3095    
3096    /\R+b/BZ
3097    
3098    /\R+\n/BZ
3099    
3100    /\R+\d/BZ
3101    
3102    /\d*\R/BZ
3103    
3104    /\s*\R/BZ
3105        \x20\x0a
3106        \x20\x0d
3107        \x20\x0d\x0a
3108    
3109    /\S*\R/BZ
3110        a\x0a
3111    
3112    /X\h*\R/BZ
3113        X\x20\x0a
3114    
3115    /X\H*\R/BZ
3116        X\x0d\x0a
3117    
3118    /X\H+\R/BZ
3119        X\x0d\x0a
3120    
3121    /X\H++\R/BZ
3122        X\x0d\x0a
3123    
3124    /-- Perl treats this one differently, not failing the second string. I believe
3125        that is a bug in Perl. --/
3126    
3127    /^((abc|abcx)(*THEN)y|abcd)/
3128        abcd
3129        *** Failers
3130        abcxy
3131    
3132    /(?<=abc)def/
3133        abc\P\P
3134    
3135    /abc$/
3136        abc
3137        abc\P
3138        abc\P\P
3139    
3140    /abc$/m
3141        abc
3142        abc\n
3143        abc\P\P
3144        abc\n\P\P
3145        abc\P
3146        abc\n\P
3147    
3148    /abc\z/
3149        abc
3150        abc\P
3151        abc\P\P
3152    
3153    /abc\Z/
3154        abc
3155        abc\P
3156        abc\P\P
3157    
3158    /abc\b/
3159        abc
3160        abc\P
3161        abc\P\P
3162    
3163    /abc\B/
3164        abc
3165        abc\P
3166        abc\P\P
3167    
3168    /.+/
3169        abc\>0
3170        abc\>1
3171        abc\>2
3172        abc\>3
3173        abc\>4
3174        abc\>-4
3175    
3176    /^\cģ/
3177    
3178    /(?P<abn>(?P=abn)xxx)/BZ
3179    
3180    /(a\1z)/BZ
3181    
3182    /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
3183    
3184    /(?P<abn>(?P=axn)xxx)/BZ
3185    
3186    /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
3187    
3188    /-- These tests are here because Perl gets the first one wrong. --/
3189    
3190    /(\R*)(.)/s
3191        \r\n
3192        \r\r\n\n\r
3193        \r\r\n\n\r\n
3194    
3195    /(\R)*(.)/s
3196        \r\n
3197        \r\r\n\n\r
3198        \r\r\n\n\r\n
3199    
3200    /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
3201        \r\n
3202        \r\r\n\n\r
3203        \r\r\n\n\r\n
3204    
3205    /-- --/
3206    
3207    /^abc$/BZ
3208    
3209    /^abc$/BZm
3210    
3211    /^(a)*+(\w)/S
3212        aaaaX
3213        ** Failers
3214        aaaa
3215    
3216    /^(?:a)*+(\w)/S
3217        aaaaX
3218        ** Failers
3219        aaaa
3220    
3221    /(a)++1234/SDZ
3222    
3223    /([abc])++1234/SI
3224    
3225    /(?<=(abc)+)X/
3226    
3227    /(^ab)/I
3228    
3229    /(^ab)++/I
3230    
3231    /(^ab|^)+/I
3232    
3233    /(^ab|^)++/I
3234    
3235    /(?:^ab)/I
3236    
3237    /(?:^ab)++/I
3238    
3239    /(?:^ab|^)+/I
3240    
3241    /(?:^ab|^)++/I
3242    
3243    /(.*ab)/I
3244    
3245    /(.*ab)++/I
3246    
3247    /(.*ab|.*)+/I
3248    
3249    /(.*ab|.*)++/I
3250    
3251    /(?:.*ab)/I
3252    
3253    /(?:.*ab)++/I
3254    
3255    /(?:.*ab|.*)+/I
3256    
3257    /(?:.*ab|.*)++/I
3258    
3259    /(?=a)[bcd]/I
3260    
3261    /((?=a))[bcd]/I
3262    
3263    /((?=a))+[bcd]/I
3264    
3265    /((?=a))++[bcd]/I
3266    
3267    /(?=a+)[bcd]/iI
3268    
3269    /(?=a+?)[bcd]/iI
3270    
3271    /(?=a++)[bcd]/iI
3272    
3273    /(?=a{3})[bcd]/iI
3274    
3275    /(abc)\1+/S
3276    
3277    /-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
3278    
3279    /(?1)(?:(b(*ACCEPT))){0}/
3280        b
3281    
3282    /(?1)(?:(b(*ACCEPT))){0}c/
3283        bc
3284        ** Failers
3285        b
3286    
3287    /(?1)(?:((*ACCEPT))){0}c/
3288        c
3289        c\N
3290    
3291    /^.*?(?(?=a)a|b(*THEN)c)/
3292        ba
3293    
3294    /^.*?(?(?=a)a|bc)/
3295        ba
3296    
3297    /^.*?(?(?=a)a(*THEN)b|c)/
3298        ac
3299    
3300    /^.*?(?(?=a)a(*THEN)b)c/
3301        ac
3302    
3303    /^.*?(a(*THEN)b)c/
3304        aabc
3305    
3306    /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
3307        aabc
3308    
3309    /^.*?(a(*THEN)b|z)c/
3310        aabc
3311    
3312    /^.*?(z|a(*THEN)b)c/
3313        aabc
3314    
3315    /-- --/
3316    
3317    /-- These studied versions are here because they are not Perl-compatible; the
3318        studying means the mark is not seen. --/
3319    
3320    /(*MARK:A)(*SKIP:B)(C|X)/KS
3321        C
3322        D
3323    
3324    /(*:A)A+(*SKIP:A)(B|Z)/KS
3325        AAAC
3326    
3327    /-- --/
3328    
3329    "(?=a*(*ACCEPT)b)c"
3330        c
3331        c\N
3332    
3333    /(?1)c(?(DEFINE)((*ACCEPT)b))/
3334        c
3335        c\N
3336    
3337    /(?>(*ACCEPT)b)c/
3338        c
3339        c\N
3340    
3341    /(?:(?>(a)))+a%/++
3342        %aa%
3343    
3344    /(a)b|ac/++SS
3345        ac\O3
3346    
3347    /(a)(b)x|abc/++
3348         abc\O6
3349    
3350    /(a)bc|(a)(b)\2/
3351        \O3abc
3352        \O4abc
3353    
3354    /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
3355    
3356    /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
3357    
3358    /(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
3359    
3360    /(abc)(?1)/SI
3361    
3362    /^(?>a)++/
3363        aa\M
3364        aaaaaaaaa\M
3365    
3366    /(a)(?1)++/
3367        aa\M
3368        aaaaaaaaa\M
3369    
3370    /(?:(foo)|(bar)|(baz))X/SS=
3371        bazfooX
3372        foobazbarX
3373        barfooX
3374        bazX
3375        foobarbazX
3376        bazfooX\O0
3377        bazfooX\O2
3378        bazfooX\O4
3379        bazfooX\O6
3380        bazfooX\O8
3381        bazfooX\O10
3382    
3383    /(?=abc){3}abc/BZ
3384    
3385    /(?=abc)+abc/BZ
3386    
3387    /(?=abc)++abc/BZ
3388    
3389    /(?=abc){0}xyz/BZ
3390    
3391    /(?=(a))?./BZ
3392    
3393    /(?=(a))??./BZ
3394    
3395    /^(?=(a)){0}b(?1)/BZ
3396    
3397    /(?(DEFINE)(a))?b(?1)/BZ
3398    
3399    /^(?=(?1))?[az]([abc])d/BZ
3400    
3401    /^(?!a){0}\w+/BZ
3402    
3403    /(?<=(abc))?xyz/BZ
3404    
3405    /[:a[:abc]b:]/BZ
3406    
3407    /((?2))((?1))/SS
3408        abc
3409    
3410    /((?(R2)a+|(?1)b))/SS
3411        aaaabcde
3412    
3413    /(?(R)a*(?1)|((?R))b)/SS
3414        aaaabcde
3415    
3416    /(a+|(?R)b)/
3417    
3418    /^(a(*:A)(d|e(*:B))z|aeq)/C
3419        adz
3420        aez
3421        aeqwerty
3422    
3423    /.(*F)/
3424        \P\Pabc
3425    
3426    /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
3427    
3428    /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
3429    
3430    /a(*SKIP)c|b(*ACCEPT)|/+S!I
3431        a
3432    
3433    /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
3434        ax
3435    
3436    'a*(*ACCEPT)b'+
3437        \N\N
3438        abc\N\N
3439        bbb\N\N
3440    
3441    /(*ACCEPT)a/+I
3442        bax
3443    
3444    /z(*ACCEPT)a/+I
3445        baxzbx
3446    
3447    /a(?:.)*?a/ims
3448        \Mabbbbbbbbbbbbbbbbbbbbba
3449    
3450    /a(?:.(*THEN))*?a/ims
3451        \Mabbbbbbbbbbbbbbbbbbbbba
3452    
3453    /a(?:.(*THEN:ABC))*?a/ims
3454        \Mabbbbbbbbbbbbbbbbbbbbba
3455    
3456    /-- These tests are in agreement with development Perl 5.015, which has fixed
3457        some things, but they don't all work with 5.012, so they aren't in the
3458        Perl-compatible tests. Those after the first come from Perl's own test
3459        files. --/
3460    
3461    /^((yes|no)(*THEN)(*F))?/
3462      yes
3463    
3464    /(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
3465    AbcdCBefgBhiBqz
3466    
3467    /(A (.*)   C? (*THEN)  | A D) z/x
3468    AbcdCBefgBhiBqz
3469    
3470    /(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
3471    AbcdCBefgBhiBqz
3472    
3473    /(A (.*)   C? (*THEN)  | A D) \s* z/x
3474    AbcdCBefgBhiBqz
3475    
3476    /(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
3477    AbcdCBefgBhiBqz
3478    
3479    /(A (.*)   (?:C|) (*THEN)  | A D) z/x
3480    AbcdCBefgBhiBqz
3481    
3482    /(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
3483    AbcdCBefgBhiBqz
3484    
3485    /(A (.*)   C{0,6} (*THEN)  | A D) z/x
3486    AbcdCBefgBhiBqz
3487    
3488    /(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
3489    AbcdCEBefgBhiBqz
3490    
3491    /(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
3492    AbcdCEBefgBhiBqz
3493    
3494    /(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
3495    AbcdCBefgBhiBqz
3496    
3497    /(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
3498    AbcdCBefgBhiBqz
3499    
3500    /-----------------------------------------------/
3501    
3502    /^(?>a+)(?>(z+))\w/BZ
3503        aaaazzzzb
3504        ** Failers
3505        aazz
3506    
3507    /(.)(\1|a(?2))/
3508        bab
3509    
3510    /\1|(.)(?R)\1/
3511        cbbbc
3512    
3513    /(.)((?(1)c|a)|a(?2))/
3514        baa
3515    
3516    /(?P<abn>(?P=abn)xxx)/BZ
3517    
3518    /(a\1z)/BZ
3519    
3520    /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
3521         \Maabbccddee
3522    
3523    /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
3524         \Maabbccddee
3525    
3526    /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
3527         \Maabbccddee
3528    
3529    /^a\x41z/<JS>
3530        aAz
3531        *** Failers
3532        ax41z
3533    
3534    /^a[m\x41]z/<JS>
3535        aAz
3536    
3537    /^a\x1z/<JS>
3538        ax1z
3539    
3540    /^a\u0041z/<JS>
3541        aAz
3542        *** Failers
3543        au0041z
3544    
3545    /^a[m\u0041]z/<JS>
3546        aAz
3547    
3548    /^a\u041z/<JS>
3549        au041z
3550        *** Failers
3551        aAz
3552    
3553    /^a\U0041z/<JS>
3554        aU0041z
3555        *** Failers
3556        aAz
3557    
3558    /(?(?=c)c|d)++Y/BZ
3559    
3560    /(?(?=c)c|d)*+Y/BZ
3561    
3562    /a[\NB]c/
3563        aNc
3564    
3565    /a[B-\Nc]/
3566    
3567    /(a)(?2){0,1999}?(b)/
3568    
3569    /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
3570    
3571    /--- This test, with something more complicated than individual letters, causes
3572    different behaviour in Perl. Perhaps it disables some optimization; no tag is
3573    passed back for the failures, whereas in PCRE there is a tag. ---/
3574    
3575    /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
3576        AABC
3577        XXYZ
3578        ** Failers
3579        XAQQ
3580        XAQQXZZ
3581        AXQQQ
3582        AXXQQQ
3583    
3584    /-- Perl doesn't give marks for these, though it does if the alternatives are
3585    replaced by single letters. --/
3586    
3587    /(b|q)(*:m)f|a(*:n)w/K
3588        aw
3589        ** Failers
3590        abc
3591    
3592    /(q|b)(*:m)f|a(*:n)w/K
3593        aw
3594        ** Failers
3595        abc
3596    
3597    /-- After a partial match, the behaviour is as for a failure. --/
3598    
3599    /^a(*:X)bcde/K
3600       abc\P
3601    
3602    /-- These are here because Perl doesn't return a mark, except for the first --/
3603    
3604    /(?=(*:x))(q|)/K+
3605        abc
3606    
3607    /(?=(*:x))((*:y)q|)/K+
3608        abc
3609    
3610    /(?=(*:x))(?:(*:y)q|)/K+
3611        abc
3612    
3613    /(?=(*:x))(?>(*:y)q|)/K+
3614        abc
3615    
3616    /(?=a(*:x))(?!a(*:y)c)/K+
3617        ab
3618    
3619    /(?=a(*:x))(?=a(*:y)c|)/K+
3620        ab
3621    
3622    /(..)\1/
3623        ab\P
3624        aba\P
3625        abab\P
3626    
3627    /(..)\1/i
3628        ab\P
3629        abA\P
3630        aBAb\P
3631    
3632    /(..)\1{2,}/
3633        ab\P
3634        aba\P
3635        abab\P
3636        ababa\P
3637        ababab\P
3638        ababab\P\P
3639        abababa\P
3640        abababa\P\P
3641    
3642    /(..)\1{2,}/i
3643        ab\P
3644        aBa\P
3645        aBAb\P
3646        AbaBA\P
3647        abABAb\P
3648        aBAbaB\P\P
3649        abABabA\P
3650        abaBABa\P\P
3651    
3652    /(..)\1{2,}?x/i
3653        ab\P
3654        abA\P
3655        aBAb\P
3656        abaBA\P
3657        abAbaB\P
3658        abaBabA\P
3659        abAbABaBx\P
3660    
3661    /^(..)\1/
3662        aba\P
3663    
3664    /^(..)\1{2,3}x/
3665        aba\P
3666        ababa\P
3667        ababa\P\P
3668        abababx
3669        ababababx
3670    
3671    /^(..)\1{2,3}?x/
3672        aba\P
3673        ababa\P
3674        ababa\P\P
3675        abababx
3676        ababababx
3677    
3678    /^(..)(\1{2,3})ab/
3679        abababab
3680    
3681    /^\R/
3682        \r\P
3683        \r\P\P
3684    
3685    /^\R{2,3}x/
3686        \r\P
3687        \r\P\P
3688        \r\r\P
3689        \r\r\P\P
3690        \r\r\r\P
3691        \r\r\r\P\P
3692        \r\rx
3693        \r\r\rx
3694    
3695    /^\R{2,3}?x/
3696        \r\P
3697        \r\P\P
3698        \r\r\P
3699        \r\r\P\P
3700        \r\r\r\P
3701        \r\r\r\P\P
3702        \r\rx
3703        \r\r\rx
3704    
3705    /^\R?x/
3706        \r\P
3707        \r\P\P
3708        x
3709        \rx
3710    
3711    /^\R+x/
3712        \r\P
3713        \r\P\P
3714        \r\n\P
3715        \r\n\P\P
3716        \rx
3717    
3718    /^a$/<CRLF>
3719        a\r\P
3720        a\r\P\P
3721    
3722    /^a$/m<CRLF>
3723        a\r\P
3724        a\r\P\P
3725    
3726    /^(a$|a\r)/<CRLF>
3727        a\r\P
3728        a\r\P\P
3729    
3730    /^(a$|a\r)/m<CRLF>
3731        a\r\P
3732        a\r\P\P
3733    
3734    /./<CRLF>
3735        \r\P
3736        \r\P\P
3737    
3738    /.{2,3}/<CRLF>
3739        \r\P
3740        \r\P\P
3741        \r\r\P
3742        \r\r\P\P
3743        \r\r\r\P
3744        \r\r\r\P\P
3745    
3746    /.{2,3}?/<CRLF>
3747        \r\P
3748        \r\P\P
3749        \r\r\P
3750        \r\r\P\P
3751        \r\r\r\P
3752        \r\r\r\P\P
3753    
3754    /-- These two are here because Perl does not match: it seems to allow the
3755    COMMIT to escape from the assertion. --/
3756    
3757    /(?=a(*COMMIT)b|ac)ac|ac/
3758        ac
3759    
3760    /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
3761        ac
3762    
3763    "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
3764        ABCDGHI\O03
3765    
3766    /-- This one is here because Perl does not confine the *COMMIT to the
3767    assertion, and therefore fails the entire subroutine call. --/
3768    
3769    /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
3770        ac
3771    
3772    /-- These are all run as real matches in test 1; here we are just checking the
3773    settings of the anchored and startline bits. --/
3774    
3775    /(?>.*?a)(?<=ba)/I
3776    
3777    /(?:.*?a)(?<=ba)/I
3778    
3779    /.*?a(*PRUNE)b/I
3780    
3781    /.*?a(*PRUNE)b/sI
3782    
3783    /^a(*PRUNE)b/sI
3784    
3785    /.*?a(*SKIP)b/I
3786    
3787    /(?>.*?a)b/sI
3788    
3789    /(?>.*?a)b/I
3790    
3791    /(?>^a)b/sI
3792    
3793    /(?>.*?)(?<=(abcd)|(wxyz))/I
3794    
3795    /(?>.*)(?<=(abcd)|(wxyz))/I
3796    
3797    "(?>.*)foo"I
3798    
3799    "(?>.*?)foo"I
3800    
3801    /(?>^abc)/mI
3802    
3803    /(?>.*abc)/mI
3804    
3805    /(?:.*abc)/mI
3806    
3807    /-- Check PCRE_STUDY_EXTRA_NEEDED --/
3808    
3809    /.?/S-I
3810    
3811    /.?/S!I
3812    
3813    /(?:(a)+(?C1)bb|aa(?C2)b)/
3814        aab\C+
3815    
3816    /(?:(a)++(?C1)bb|aa(?C2)b)/
3817        aab\C+
3818    
3819    /(?:(?>(a))(?C1)bb|aa(?C2)b)/
3820        aab\C+
3821    
3822    /(?:(?1)(?C1)x|ab(?C2))((a)){0}/
3823        aab\C+
3824    
3825    /(?1)(?C1)((a)(?C2)){0}/
3826        aab\C+
3827    
3828    /(?:(a)+(?C1)bb|aa(?C2)b)++/
3829        aab\C+
3830        aab\C+\O2
3831    
3832    /(ab)x|ab/
3833        ab\O3
3834        ab\O2
3835    
3836    /(ab)/
3837        ab\O3
3838        ab\O2
3839    
3840    /(?<=123)(*MARK:xx)abc/K
3841        xxxx123a\P\P
3842        xxxx123a\P
3843    
3844    /123\Kabc/
3845        xxxx123a\P\P
3846        xxxx123a\P
3847    
3848    /^(?(?=a)aa|bb)/C
3849        bb
3850    
3851    /(?C1)^(?C2)(?(?C99)(?=(?C3)a(?C4))(?C5)a(?C6)a(?C7)|(?C8)b(?C9)b(?C10))(?C11)/
3852        bb
3853    
3854    /-- Perl seems to have a bug with this one --/
3855    
3856    /aaaaa(*COMMIT)(*PRUNE)b|a+c/
3857        aaaaaac
3858    
3859    /-- Here are some that Perl treats differently because of the way it handles
3860    backtracking verbs. --/
3861    
3862     /^(?!a(*SKIP)b)/
3863         ac
3864    
3865     /^(?!a(*SKIP)b)../
3866         acd
3867    
3868    /(?!a(*SKIP)b)../
3869         acd
3870    
3871    /^(?(?!a(*SKIP)b))/
3872         ac
3873    
3874    /^(?!a(*PRUNE)b)../
3875         acd
3876    
3877    /(?!a(*PRUNE)b)../
3878         acd
3879    
3880     /(?!a(*COMMIT)b)ac|cd/
3881         ac
3882    
3883     /(?!a(*COMMIT)b)ac|ad/
3884         ac
3885         ad
3886    
3887    /^(?!a(*THEN)b|ac)../
3888         ac
3889         ad
3890    
3891    /^(?=a(*THEN)b|ac)/
3892        ac
3893    
3894    /\A.*?(?:a|b(*THEN)c)/
3895        ba
3896    
3897    /\A.*?(?:a|bc)/
3898        ba
3899    
3900    /\A.*?(?:a|b(*THEN)c)++/
3901        ba
3902    
3903    /\A.*?(?:a|b(*THEN)c|d)/
3904        ba
3905    
3906    /(?:(a(*MARK:X)a+(*SKIP:X)b)){0}(?:(?1)|aac)/
3907        aac
3908    
3909    /\A.*?(a|b(*THEN)c)/
3910        ba
3911    
3912    /^(A(*THEN)B|C(*THEN)D)/
3913        CD
3914    
3915    /^(A(*THEN)B|A(*THEN)D)/
3916        AD
3917    
3918    /-- End of Perl diffences --/
3919    
3920  /-- End of testinput2 --/  /-- End of testinput2 --/

Legend:
Removed from v.488  
changed lines
  Added in v.1296

  ViewVC Help
Powered by ViewVC 1.1.5