/[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 514 by ph10, Mon May 3 12:54:22 2010 UTC revision 972 by ph10, Fri Jun 1 18:03:18 2012 UTC
# Line 3  Line 3 
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 a possible 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 and 5.11 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 144  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 442  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 491  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 629  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 1061  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 1310  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 1320  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 1330  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 1404  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 1422  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 1447  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 1508  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 1593  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 1976  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 2199  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 2255  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 2295  a random value. /Ix Line 2251  a random value. /Ix
2251    
2252  /\g6666666666/  /\g6666666666/
2253    
2254  /[\g6666666666]/  /[\g6666666666]/BZ
2255    
2256  /(?1)\c[/  /(?1)\c[/
2257    
# Line 2346  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 2444  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 2561  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 2575  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 2751  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 2900  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 3170  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 3216  a random value. /Ix Line 2985  a random value. /Ix
2985    
2986  /^(?&t)*(?(DEFINE)(?<t>.))$/BZ  /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
2987    
2988  / -- The first four of these are not in the Perl 5.10 test because Perl  / -- 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       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       last is here because Perl gives the match as "b" rather than "ab". I
2991       believe this to be a Perl bug. --/       believe this to be a Perl bug. --/
# Line 3261  a random value. /Ix Line 3030  a random value. /Ix
3030  /A(*PRUNE)B|A(*PRUNE)C/K  /A(*PRUNE)B|A(*PRUNE)C/K
3031      AC      AC
3032    
3033  /--- A whole lot of tests of verbs with arguments are here rather than in test  /--- This should fail; the SKIP advances by one, but when we get to AC, the
3034       11 because Perl doesn't seem to follow its specification entirely       PRUNE kills it. Perl behaves differently. ---/
3035       correctly. ---/  
3036    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3037        AAAC
3038    
3039  /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is  /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
3040       not clear how Perl defines "involved in the failure of the match". ---/  though PCRE does. ---/
3041    
3042  /^(A(*THEN:A)B|C(*THEN:B)D)/K  /^A(*:A)B|^X(*:A)Y/K
     AB  
     CD  
3043      ** Failers      ** Failers
3044      AC      XAQQ
     CB  
3045    
3046  /--- Check the use of names for success and failure. PCRE doesn't show these  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3047  names for success, though Perl does, contrary to its spec. ---/  optimizations defeat this. So does the PCRE optimization unless we disable it
3048    with \Y. ---/
3049    
3050  /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K  /(*COMMIT)ABC/
3051      AB      ABCDEFG
     CD  
3052      ** Failers      ** Failers
3053      AC      DEFGABC\Y
     CB  
3054    
3055  /--- An empty name does not pass back an empty string. It is the same as if no  /^(ab (c+(*THEN)cd) | xyz)/x
3056  name were given. ---/      abcccd
3057    
3058  /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K  /^(ab (c+(*PRUNE)cd) | xyz)/x
3059      AB      abcccd
     CD  
3060    
3061  /--- PRUNE goes to next bumpalong; COMMIT does not. ---/  /^(ab (c+(*FAIL)cd) | xyz)/x
3062        abcccd
3063    
3064  /A(*PRUNE:A)B/K  /--- Perl 5.11 gets some of these wrong ---/
     ACAB  
3065    
3066  /(*MARK:A)(*PRUNE:B)(C|X)/K  /(?>.(*ACCEPT))*?5/
3067      C      abcde
     D  
3068    
3069  /(*MARK:A)(*THEN:B)(C|X)/K  /(.(*ACCEPT))*?5/
3070      C      abcde
     D  
3071    
3072  /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/  /(.(*ACCEPT))5/
3073        abcde
3074    
3075  /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK  /(.(*ACCEPT))*5/
3076      AAAC      abcde
3077    
3078  /--- Same --/  /A\NB./BZ
3079        ACBD
3080        *** Failers
3081        A\nB
3082        ACB\n
3083    
3084  /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK  /A\NB./sBZ
3085      AAAC      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  /--- This should fail; the SKIP advances by one, but when we get to AC, the  /\R+b/BZ
3097       PRUNE kills it. ---/  
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  /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK  /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
3307      AAAC      aabc
3308    
3309  /A(*:A)A+(*SKIP)(B|Z) | AC/xK  /^.*?(a(*THEN)b|z)c/
3310      AAAC      aabc
3311    
3312    /^.*?(z|a(*THEN)b)c/
3313        aabc
3314    
3315    /-- --/
3316    
3317  /--- This should fail, as a null name is the same as no name ---/  /-- These studied versions are here because they are not Perl-compatible; the
3318        studying means the mark is not seen. --/
3319    
3320  /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK  /(*MARK:A)(*SKIP:B)(C|X)/KS
3321        C
3322        D
3323    
3324    /(*:A)A+(*SKIP:A)(B|Z)/KS
3325      AAAC      AAAC
3326    
3327  /--- This fails in PCRE, and I think that is in accordance with Perl's  /-- --/
3328       documentation, though in Perl it succeeds. ---/  
3329    "(?=a*(*ACCEPT)b)c"
3330        c
3331        c\N
3332    
3333  /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK  /(?1)c(?(DEFINE)((*ACCEPT)b))/
3334      AAAC      c
3335        c\N
3336    
3337    /(?>(*ACCEPT)b)c/
3338        c
3339        c\N
3340    
3341  /--- Mark names can be duplicated ---/  /(?:(?>(a)))+a%/++
3342        %aa%
3343    
3344  /A(*:A)B|X(*:A)Y/K  /(a)b|ac/++SS
3345      AABC      ac\O3
     XXYZ  
3346    
3347  /^A(*:A)B|^X(*:A)Y/K  /(a)(b)x|abc/++
3348      ** Failers       abc\O6
3349      XAQQ  
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 check on what happens after hitting a mark and them bumping along to  /(a)(?1)++/
3367  something that does not even start. Perl reports tags after the failures here,      aa\M
3368  though it does not when the individual letters are made into something      aaaaaaaaa\M
 more complicated. ---/  
3369    
3370  /A(*:A)B|XX(*:B)Y/K  /(?:(foo)|(bar)|(baz))X/SS=
3371      AABC      bazfooX
3372      XXYZ      foobazbarX
3373      ** Failers      barfooX
3374      XAQQ      bazX
3375      XAQQXZZ      foobarbazX
3376      AXQQQ      bazfooX\O0
3377      AXXQQQ      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)|/+SI
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  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl  /a(?:.(*THEN))*?a/ims
3451  optimizations defeat this. So does the PCRE optimization unless we disable it      \Mabbbbbbbbbbbbbbbbbbbbba
 with \Y. ---/  
3452    
3453  /(*COMMIT)ABC/  /a(?:.(*THEN:ABC))*?a/ims
3454      ABCDEFG      \Mabbbbbbbbbbbbbbbbbbbbba
3455      ** Failers  
3456      DEFGABC\Y  /-- 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  /--- Repeat some tests with added studying. ---/  /^((yes|no)(*THEN)(*F))?/
3462      yes
3463    
3464  /A(*COMMIT)B/+KS  /(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
3465      ACABX  AbcdCBefgBhiBqz
   
 /A(*THEN)B|A(*THEN)C/KS  
     AC  
3466    
3467  /A(*PRUNE)B|A(*PRUNE)C/KS  /(A (.*)   C? (*THEN)  | A D) z/x
3468      AC  AbcdCBefgBhiBqz
3469    
3470  /^(A(*THEN:A)B|C(*THEN:B)D)/KS  /(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
3471      AB  AbcdCBefgBhiBqz
     CD  
     ** Failers  
     AC  
     CB  
3472    
3473  /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS  /(A (.*)   C? (*THEN)  | A D) \s* z/x
3474      AB  AbcdCBefgBhiBqz
     CD  
     ** Failers  
     AC  
     CB  
3475    
3476  /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS  /(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
3477      AB  AbcdCBefgBhiBqz
     CD  
3478    
3479  /A(*PRUNE:A)B/KS  /(A (.*)   (?:C|) (*THEN)  | A D) z/x
3480      ACAB  AbcdCBefgBhiBqz
3481    
3482  /(*MARK:A)(*PRUNE:B)(C|X)/KS  /(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
3483      C  AbcdCBefgBhiBqz
     D  
3484    
3485  /(*MARK:A)(*THEN:B)(C|X)/KS  /(A (.*)   C{0,6} (*THEN)  | A D) z/x
3486      C  AbcdCBefgBhiBqz
     D  
3487    
3488  /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS  /(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
3489      AAAC  AbcdCEBefgBhiBqz
3490    
3491  /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS  /(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
3492      AAAC  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  /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS  /\1|(.)(?R)\1/
3511      AAAC      cbbbc
3512    
3513    /(.)((?(1)c|a)|a(?2))/
3514        baa
3515    
3516  /A(*:A)A+(*SKIP)(B|Z) | AC/xKS  /(?P<abn>(?P=abn)xxx)/BZ
     AAAC  
3517    
3518  /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS  /(a\1z)/BZ
     AAAC  
3519    
3520  /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS  /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
3521      AAAC       \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(*:A)B|XX(*:B)Y/KS  /^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      AABC
3577      XXYZ      XXYZ
3578      ** Failers      ** Failers
# Line 3434  with \Y. ---/ Line 3580  with \Y. ---/
3580      XAQQXZZ      XAQQXZZ
3581      AXQQQ      AXQQQ
3582      AXXQQQ      AXXQQQ
3583    
3584    /-- Perl doesn't give marks for these, though it does if the alternatives are
3585    replaced by single letters. --/
3586    
3587  /(*COMMIT)ABC/  /(b|q)(*:m)f|a(*:n)w/K
3588      ABCDEFG      aw
3589      ** Failers      ** Failers
3590      DEFGABC\Y      abc
3591    
3592  /^(ab (c+(*THEN)cd) | xyz)/x  /(q|b)(*:m)f|a(*:n)w/K
3593      abcccd      aw
3594        ** Failers
3595        abc
3596    
3597  /^(ab (c+(*PRUNE)cd) | xyz)/x  /-- After a partial match, the behaviour is as for a failure. --/
     abcccd  
3598    
3599  /^(ab (c+(*FAIL)cd) | xyz)/x  /^a(*:X)bcde/K
3600      abcccd     abc\P
3601    
3602  /--- Perl 5.11 gets some of these wrong ---/  /-- These are here because Perl doesn't return a mark, except for the first --/
3603    
3604  /(?>.(*ACCEPT))*?5/  /(?=(*:x))(q|)/K+
3605      abcde      abc
3606    
3607  /(.(*ACCEPT))*?5/  /(?=(*:x))((*:y)q|)/K+
3608      abcde      abc
3609    
3610  /(.(*ACCEPT))5/  /(?=(*:x))(?:(*:y)q|)/K+
3611      abcde      abc
3612    
3613  /(.(*ACCEPT))*5/  /(?=(*:x))(?>(*:y)q|)/K+
3614      abcde      abc
3615    
3616  /A\NB./BZ  /(?=a(*:x))(?!a(*:y)c)/K+
3617    ACBD      ab
   ** Failers  
   A\nB  
   ACB\n  
3618    
3619  /A\NB./sBZ  /(?=a(*:x))(?=a(*:y)c|)/K+
3620    ACBD      ab
3621    ACB\n  
3622    ** Failers  /(..)\1/
3623    A\nB      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  /A\NB/<crlf>  /.{2,3}/<CRLF>
3739    A\nB      \r\P
3740    A\rB      \r\P\P
3741    ** Failers      \r\r\P
3742    A\r\nB      \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  /-- End of testinput2 --/  /-- End of testinput2 --/

Legend:
Removed from v.514  
changed lines
  Added in v.972

  ViewVC Help
Powered by ViewVC 1.1.5