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

Diff of /code/trunk/testdata/testoutput2

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

revision 612 by ph10, Sat Jul 2 15:20:59 2011 UTC revision 888 by ph10, Tue Jan 17 14:43:23 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 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  Capturing subpattern count = 1  Capturing subpattern count = 1
13  No options  No options
# Line 377  No need char Line 376  No need char
376   2: <unset>   2: <unset>
377   3: def   3: def
378    
 /abc/P  
     abc  
  0: abc  
     *** Failers  
 No match: POSIX code 17: match failed  
   
 /^abc|def/P  
     abcdef  
  0: abc  
     abcdef\B  
  0: def  
   
 /.*((abc)$|(def))/P  
     defabc  
  0: defabc  
  1: abc  
  2: abc  
     \Zdefabc  
  0: def  
  1: def  
  3: def  
   
 /the quick brown fox/P  
     the quick brown fox  
  0: the quick brown fox  
     *** Failers  
 No match: POSIX code 17: match failed  
     The Quick Brown Fox  
 No match: POSIX code 17: match failed  
   
 /the quick brown fox/Pi  
     the quick brown fox  
  0: the quick brown fox  
     The Quick Brown Fox  
  0: The Quick Brown Fox  
   
 /abc.def/P  
     *** Failers  
 No match: POSIX code 17: match failed  
     abc\ndef  
 No match: POSIX code 17: match failed  
   
 /abc$/P  
     abc  
  0: abc  
     abc\n  
  0: abc  
   
 /(abc)\2/P  
 Failed: POSIX code 15: bad back reference at offset 7  
   
 /(abc\1)/P  
     abc  
 No match: POSIX code 17: match failed  
   
379  /)/  /)/
380  Failed: unmatched parentheses at offset 0  Failed: unmatched parentheses at offset 0
381    
# Line 1031  Failed: numbers out of order in {} quant Line 975  Failed: numbers out of order in {} quant
975  /abc/\  /abc/\
976  Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
977    
 /abc/\P  
 Failed: POSIX code 9: bad escape sequence at offset 4  
   
978  /abc/\i  /abc/\i
979  Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
980    
# Line 1149  No first char Line 1090  No first char
1090  No need char  No need char
1091      abc\00def\L\C0      abc\00def\L\C0
1092   0: abc\x00def   0: abc\x00def
1093   0C abc (7)   0C abc\x00def (7)
1094   0L abc   0L abc
1095    
1096  /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+  /word ((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+ )((?:[a-zA-Z0-9]+
# Line 1268  Need char = 's' Line 1209  Need char = 's'
1209   0: iss   0: iss
1210   0+ issippi   0+ issippi
1211    
 /\Biss\B/I+P  
     Mississippi  
  0: iss  
  0+ issippi  
   
1212  /iss/IG+  /iss/IG+
1213  Capturing subpattern count = 0  Capturing subpattern count = 0
1214  No options  No options
# Line 1402  Capturing subpattern count = 0 Line 1338  Capturing subpattern count = 0
1338  Contains explicit CR or LF match  Contains explicit CR or LF match
1339  Options: multiline  Options: multiline
1340  First char at start or follows newline  First char at start or follows newline
1341  Need char = 10  Need char = \x0a
1342      ab\nab\ncd      ab\nab\ncd
1343   0: ab\x0a   0: ab\x0a
1344   0+ ab\x0acd   0+ ab\x0acd
# Line 1689  No need char Line 1625  No need char
1625      \Nabc      \Nabc
1626  No match  No match
1627    
 /a*(b+)(z)(z)/P  
     aaaabbbbzzzz  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
  3: z  
     aaaabbbbzzzz\O0  
     aaaabbbbzzzz\O1  
  0: aaaabbbbzz  
     aaaabbbbzzzz\O2  
  0: aaaabbbbzz  
  1: bbbb  
     aaaabbbbzzzz\O3  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
     aaaabbbbzzzz\O4  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
  3: z  
     aaaabbbbzzzz\O5  
  0: aaaabbbbzz  
  1: bbbb  
  2: z  
  3: z  
   
1628  /^.?abcd/IS  /^.?abcd/IS
1629  Capturing subpattern count = 0  Capturing subpattern count = 0
1630  Options: anchored  Options: anchored
# Line 4004  Need char = '<' Line 3913  Need char = '<'
3913          Bra          Bra
3914          CBra 1          CBra 1
3915          a          a
         Once  
3916          Recurse          Recurse
         Ket  
3917          b          b
3918          Ket          Ket
3919          Ket          Ket
# Line 4227  Need char = 'a' Line 4134  Need char = 'a'
4134          Any          Any
4135          \1          \1
4136          bbb          bbb
         Once  
4137          Recurse          Recurse
         Ket  
4138          d          d
4139          Ket          Ket
4140          End          End
# Line 4434  No first char Line 4339  No first char
4339  Need char = 'z'  Need char = 'z'
4340    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\M
4341  Minimum match() limit = 8  Minimum match() limit = 8
4342  Minimum match() recursion limit = 7  Minimum match() recursion limit = 6
4343   0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz   0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
4344   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4345    aaaaaaaaaaaaaz\M    aaaaaaaaaaaaaz\M
4346  Minimum match() limit = 32768  Minimum match() limit = 32768
4347  Minimum match() recursion limit = 43  Minimum match() recursion limit = 42
4348  No match  No match
4349    
4350  /(aaa(?C1)bbb|ab)/I  /(aaa(?C1)bbb|ab)/I
# Line 4601  Need char = ']' Line 4506  Need char = ']'
4506          a          a
4507          CBra 2          CBra 2
4508          b          b
         Once  
4509          Recurse          Recurse
         Ket  
4510          c          c
4511          Ket          Ket
4512          Ket          Ket
# Line 4623  No need char Line 4526  No need char
4526          a          a
4527          CBra 2          CBra 2
4528          b          b
         Once  
4529          Recurse          Recurse
         Ket  
4530          c          c
4531          Ket          Ket
4532          KetRmax          KetRmax
# Line 4646  No need char Line 4547  No need char
4547          a          a
4548          CBra 2          CBra 2
4549          b          b
         Once  
4550          Recurse          Recurse
         Ket  
4551          c          c
4552          Ket          Ket
4553          Ket          Ket
# Line 4657  No need char Line 4556  No need char
4556          a          a
4557          CBra 2          CBra 2
4558          b          b
         Once  
4559          Recurse          Recurse
         Ket  
4560          c          c
4561          Ket          Ket
4562          Ket          Ket
# Line 5814  Max back reference = 1 Line 5711  Max back reference = 1
5711  Options: multiline dotall  Options: multiline dotall
5712  First char = '<'  First char = '<'
5713  Need char = '>'  Need char = '>'
5714      <!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>
5715   0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite>   0: <seite>\x0a<dokumenteninformation>\x0a<seitentitel>Partner der LCO</seitentitel>\x0a<sprache>de</sprache>\x0a<seitenbeschreibung>Partner der LINEAS Consulting\x0aGmbH</seitenbeschreibung>\x0a<schluesselworte>LINEAS Consulting GmbH Hamburg\x0aPartnerfirmen</schluesselworte>\x0a<revisit>30 days</revisit>\x0a<robots>index,follow</robots>\x0a<menueinformation>\x0a<aktiv>ja</aktiv>\x0a<menueposition>3</menueposition>\x0a<menuetext>Partner</menuetext>\x0a</menueinformation>\x0a<lastedited>\x0a<autor>LCO</autor>\x0a<firma>LINEAS Consulting</firma>\x0a<datum>15.10.2003</datum>\x0a</lastedited>\x0a</dokumenteninformation>\x0a<inhalt>\x0a\x0a<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\x0aGmbH</absatzueberschrift>\x0a\x0a<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\x0a<bild name="logo_ca.gif" rahmen="no"/></link> <link\x0aziel="http://www.ey.com/" zielfenster="_blank"><bild\x0aname="logo_euy.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\x0a<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.atelion.de/"\x0azielfenster="_blank"><bild\x0aname="logo_atelion.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><link ziel="http://www.line-information.de/"\x0azielfenster="_blank">\x0a<bild name="logo_line_information.gif" rahmen="no"/></link>\x0a</absatz>\x0a\x0a<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\x0a\x0a<absatz><link ziel="http://www.incognis.de/"\x0azielfenster="_blank"><bild\x0aname="logo_incognis.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.addcraft.com/"\x0azielfenster="_blank"><bild\x0aname="logo_addcraft.gif" rahmen="no"/></link></absatz>\x0a\x0a<absatz><link ziel="http://www.comendo.com/"\x0azielfenster="_blank"><bild\x0aname="logo_comendo.gif" rahmen="no"/></link></absatz>\x0a\x0a</inhalt>\x0a</seite>
5716   1: seite   1: seite
5717   2: \x0a   2: \x0a
# Line 5863  No match Line 5760  No match
5760      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
5761  No match  No match
5762    
 /ab.cd/P  
     ab-cd  
  0: ab-cd  
     ab=cd  
  0: ab=cd  
     ** Failers  
 No match: POSIX code 17: match failed  
     ab\ncd  
 No match: POSIX code 17: match failed  
   
 /ab.cd/Ps  
     ab-cd  
  0: ab-cd  
     ab=cd  
  0: ab=cd  
     ab\ncd  
  0: ab\x0acd  
   
5763  /(?i)(?-i)AbCd/I  /(?i)(?-i)AbCd/I
5764  Capturing subpattern count = 0  Capturing subpattern count = 0
5765  No options  No options
# Line 6173  No need char Line 6052  No need char
6052      ((this))      ((this))
6053   0: ((this))   0: ((this))
6054    
 /a(b)c/PN  
     abc  
 Matched with REG_NOSUB  
   
 /a(?P<name>b)c/PN  
     abc  
 Matched with REG_NOSUB  
   
 /\x{100}/I  
 Failed: character value in \x{...} sequence is too large at offset 6  
   
6055  /\x{0000ff}/I  /\x{0000ff}/I
6056  Capturing subpattern count = 0  Capturing subpattern count = 0
6057  No options  No options
6058  First char = 255  First char = \xff
6059  No need char  No need char
6060    
6061  /^((?P<A>a1)|(?P<A>a2)b)/I  /^((?P<A>a1)|(?P<A>a2)b)/I
# Line 6297  no parentheses with name "Z" Line 6165  no parentheses with name "Z"
6165   0: a1   0: a1
6166   1: a1   1: a1
6167   2: a1   2: a1
6168  copy substring Z failed -7  get substring Z failed -7
6169    G a1 (2) A    G a1 (2) A
6170    
6171  /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
# Line 6329  No need char Line 6197  No need char
6197    G a (1) A    G a (1) A
6198      cd\GA      cd\GA
6199   0: cd   0: cd
6200  copy substring A failed -7  get substring A failed -7
6201    
6202  /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ  /^(?P<A>a)(?P<A>b)|cd(?P<A>ef)(?P<A>gh)/IJ
6203  Capturing subpattern count = 4  Capturing subpattern count = 4
# Line 6497  No need char Line 6365  No need char
6365   9:   9:
6366  10: Y  10: Y
6367    
 /\777/I  
 Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3  
   
6368  /\s*,\s*/IS  /\s*,\s*/IS
6369  Capturing subpattern count = 0  Capturing subpattern count = 0
6370  No options  No options
# Line 6678  No first char Line 6543  No first char
6543  No need char  No need char
6544     /* this is a C style comment */\M     /* this is a C style comment */\M
6545  Minimum match() limit = 120  Minimum match() limit = 120
6546  Minimum match() recursion limit = 35  Minimum match() recursion limit = 6
6547   0: /* this is a C style comment */   0: /* this is a C style comment */
6548   1: /* this is a C style comment */   1: /* this is a C style comment */
6549    
# Line 7560  Matched, but too many substrings Line 7425  Matched, but too many substrings
7425  /[^a]+a/BZi  /[^a]+a/BZi
7426  ------------------------------------------------------------------  ------------------------------------------------------------------
7427          Bra          Bra
7428       /i [^A]++       /i [^a]++
7429       /i a       /i a
7430          Ket          Ket
7431          End          End
# Line 7569  Matched, but too many substrings Line 7434  Matched, but too many substrings
7434  /[^a]+A/BZi  /[^a]+A/BZi
7435  ------------------------------------------------------------------  ------------------------------------------------------------------
7436          Bra          Bra
7437       /i [^A]++       /i [^a]++
7438       /i A       /i A
7439          Ket          Ket
7440          End          End
# Line 7765  No match Line 7630  No match
7630  ------------------------------------------------------------------  ------------------------------------------------------------------
7631          Bra          Bra
7632          ^          ^
         Once  
7633          Recurse          Recurse
         Ket  
7634          [()]          [()]
7635          CBra 1          CBra 1
7636          Ket          Ket
# Line 7801  No match Line 7664  No match
7664  ------------------------------------------------------------------  ------------------------------------------------------------------
7665          Bra          Bra
7666          ^          ^
         Once  
7667          Recurse          Recurse
         Ket  
7668          ()          ()
7669          CBra 1          CBra 1
7670          Ket          Ket
# Line 7815  No match Line 7676  No match
7676  ------------------------------------------------------------------  ------------------------------------------------------------------
7677          Bra          Bra
7678          ^          ^
         Once  
7679          Recurse          Recurse
         Ket  
7680          [(\]a]          [(\]a]
7681          CBra 1          CBra 1
7682          Ket          Ket
# Line 7830  No match Line 7689  No match
7689  ------------------------------------------------------------------  ------------------------------------------------------------------
7690          Bra          Bra
7691          ^          ^
         Once  
7692          Recurse          Recurse
         Ket  
7693          CBra 1          CBra 1
7694          Ket          Ket
7695          Ket          Ket
# Line 7964  Options: extended Line 7821  Options: extended
7821  First char = 'x'  First char = 'x'
7822  Need char = 'z'  Need char = 'z'
7823    
 /(?(DEFINE) abc){3} xyz/x  
 Failed: repeating a DEFINE group is not allowed at offset 17  
   
7824  /(a|)*\d/  /(a|)*\d/
7825    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa    \O0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7826  No match  No match
# Line 8284  No match Line 8138  No match
8138          Alt          Alt
8139          c          c
8140          Ket          Ket
         Once  
8141          Recurse          Recurse
8142          Ket          Ket
         Ket  
8143          End          End
8144  ------------------------------------------------------------------  ------------------------------------------------------------------
8145      abc      abc
# Line 8298  No match Line 8150  No match
8150  ------------------------------------------------------------------  ------------------------------------------------------------------
8151          Bra          Bra
8152          xy          xy
         Once  
8153          Recurse          Recurse
         Ket  
8154          CBra 1          CBra 1
8155          abc          abc
8156          Ket          Ket
# Line 8530  Failed: syntax error in subpattern name Line 8380  Failed: syntax error in subpattern name
8380   3: <unset>   3: <unset>
8381   4: x   4: x
8382    
 /[\h]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x09 \xa0]  
         Ket  
         End  
 ------------------------------------------------------------------  
     >\x09<  
  0: \x09  
   
 /[\h]+/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x09 \xa0]+  
         Ket  
         End  
 ------------------------------------------------------------------  
     >\x09\x20\xa0<  
  0: \x09 \xa0  
   
 /[\v]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x0a-\x0d\x85]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[\H]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[^\h]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x08\x0a-\x1f!-\x9f\xa1-\xff] (neg)  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[\V]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x09\x0e-\x84\x86-\xff]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
 /[\x0a\V]/BZ  
 ------------------------------------------------------------------  
         Bra  
         [\x00-\x0a\x0e-\x84\x86-\xff]  
         Ket  
         End  
 ------------------------------------------------------------------  
   
8383  /\H++X/BZ  /\H++X/BZ
8384  ------------------------------------------------------------------  ------------------------------------------------------------------
8385          Bra          Bra
# Line 8781  No match Line 8571  No match
8571  ------------------------------------------------------------------  ------------------------------------------------------------------
8572    
8573  /\( (?: [^()]* | (?R) )* \)/x  /\( (?: [^()]* | (?R) )* \)/x
8574  (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
8575   0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)   0: (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
8576    
8577  /[\E]AAA/  /[\E]AAA/
# Line 8963  Failed: number is too big at offset 19 Line 8753  Failed: number is too big at offset 19
8753  /\g6666666666/  /\g6666666666/
8754  Failed: number is too big at offset 11  Failed: number is too big at offset 11
8755    
8756  /[\g6666666666]/  /[\g6666666666]/BZ
8757  Failed: number is too big at offset 12  ------------------------------------------------------------------
8758            Bra
8759            [6g]
8760            Ket
8761            End
8762    ------------------------------------------------------------------
8763    
8764  /(?1)\c[/  /(?1)\c[/
8765  Failed: reference to non-existent subpattern at offset 3  Failed: reference to non-existent subpattern at offset 3
# Line 9270  Failed: subpattern name expected at offs Line 9065  Failed: subpattern name expected at offs
9065  /\k{}/  /\k{}/
9066  Failed: subpattern name expected at offset 3  Failed: subpattern name expected at offset 3
9067    
9068    /\k/
9069    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 2
9070    
9071    /\kabc/
9072    Failed: \k is not followed by a braced, angle-bracketed, or quoted name at offset 5
9073    
9074  /(?P=)/  /(?P=)/
9075  Failed: subpattern name expected at offset 4  Failed: subpattern name expected at offset 4
9076    
# Line 9491  No options Line 9292  No options
9292  First char at start or follows newline  First char at start or follows newline
9293  No need char  No need char
9294    
 /a?|b?/P  
     abc  
  0: a  
     ** Failers  
  0:  
     ddd\N  
 No match: POSIX code 17: match failed  
   
9295  /xyz/C  /xyz/C
9296    xyz    xyz
9297  --->xyz  --->xyz
# Line 9893  Partial match: the cat Line 9686  Partial match: the cat
9686     abc\P\P     abc\P\P
9687   0: abc   0: abc
9688    
 /\w+A/P  
    CDAAAAB  
  0: CDAAAA  
   
 /\w+A/PU  
    CDAAAAB  
  0: CDA  
   
9689  /abc\K123/  /abc\K123/
9690      xyzabc123pqr      xyzabc123pqr
9691   0: 123   0: 123
# Line 9928  Partial match: +ab Line 9713  Partial match: +ab
9713  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
9714  ------------------------------------------------------------------  ------------------------------------------------------------------
9715          Bra          Bra
         Once  
9716          Recurse          Recurse
         Ket  
         Once  
9717          Recurse          Recurse
         Ket  
9718          Cond          Cond
9719          Cond def          Cond def
9720          CBra 1          CBra 1
# Line 9954  Partial match: +ab Line 9735  Partial match: +ab
9735  /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
9736  ------------------------------------------------------------------  ------------------------------------------------------------------
9737          Bra          Bra
         Once  
9738          Recurse          Recurse
         Ket  
         Once  
9739          Recurse          Recurse
         Ket  
9740          Cond          Cond
9741          Cond def          Cond def
9742          CBra 1          CBra 1
# Line 10301  Need char = ':' Line 10078  Need char = ':'
10078  Subject length lower bound = 22  Subject length lower bound = 22
10079  No set of starting bytes  No set of starting bytes
10080    
 /  (?: [\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  
 Capturing subpattern count = 0  
 Contains explicit CR or LF match  
 Options: extended  
 No first char  
 No need char  
 Subject length lower bound = 3  
 Starting byte set: \x09 \x20 ! " # $ % & ' ( * + - / 0 1 2 3 4 5 6 7 8  
   9 = ? A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ^ _ ` a b c d e  
   f g h i j k l m n o p q r s t u v w x y z { | } ~ \x7f  
   
10081  /<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
10082  Capturing subpattern count = 11  Capturing subpattern count = 11
10083  Options: caseless dotall  Options: caseless dotall
# Line 10700  No match Line 10273  No match
10273          Cond nrecurse 1          Cond nrecurse 1
10274          $          $
10275          Alt          Alt
         Once  
10276          Recurse          Recurse
10277          Ket          Ket
10278          Ket          Ket
10279          Ket          Ket
         Ket  
10280          End          End
10281  ------------------------------------------------------------------  ------------------------------------------------------------------
10282  Capturing subpattern count = 4  Capturing subpattern count = 4
# Line 10923  No match Line 10494  No match
10494  ------------------------------------------------------------------  ------------------------------------------------------------------
10495          Bra          Bra
10496          ^          ^
10497          Once          Braposzero
10498          Brazero          SBraPos
         Once  
10499          Recurse          Recurse
10500          KetRmax          KetRpos
         Ket  
10501          Cond          Cond
10502          Cond def          Cond def
10503          CBra 1          CBra 1
# Line 11017  No match Line 10586  No match
10586      AC      AC
10587  No match  No match
10588    
 /--- A whole lot of tests of verbs with arguments are here rather than in test  
      11 because Perl doesn't seem to follow its specification entirely  
      correctly. ---/  
   
 /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is  
      not clear how Perl defines "involved in the failure of the match". ---/  
   
 /^(A(*THEN:A)B|C(*THEN:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match  
     CB  
 No match, mark = B  
   
 /--- Check the use of names for success and failure. PCRE doesn't show these  
 names for success, though Perl does, contrary to its spec. ---/  
   
 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match, mark = A  
     CB  
 No match, mark = B  
   
 /--- An empty name does not pass back an empty string. It is the same as if no  
 name were given. ---/  
   
 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
   
 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/  
   
 /A(*PRUNE:A)B/K  
     ACAB  
  0: AB  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KSS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match, mark = B  
   
 /(*MARK:A)(*THEN:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /(*MARK:A)(*THEN:B)(C|X)/KSS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match, mark = B  
   
 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/  
   
 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- Same --/  
   
 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK  
     AAAC  
 No match  
   
10589  /--- This should fail; the SKIP advances by one, but when we get to AC, the  /--- This should fail; the SKIP advances by one, but when we get to AC, the
10590       PRUNE kills it. ---/       PRUNE kills it. Perl behaves differently. ---/
10591    
10592  /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK  /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
10593      AAAC      AAAC
10594  No match  No match, mark = A
   
 /A(*:A)A+(*SKIP)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This should fail, as a null name is the same as no name ---/  
   
 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK  
     AAAC  
 No match  
   
 /--- This fails in PCRE, and I think that is in accordance with Perl's  
      documentation, though in Perl it succeeds. ---/  
   
 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK  
     AAAC  
 No match  
10595    
10596  /--- Mark names can be duplicated ---/  /--- Mark names can be duplicated. Perl doesn't give a mark for this one,
10597    though PCRE does. ---/
10598    
 /A(*:A)B|X(*:A)Y/K  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XY  
 MK: A  
   
10599  /^A(*:A)B|^X(*:A)Y/K  /^A(*:A)B|^X(*:A)Y/K
10600      ** Failers      ** Failers
10601  No match  No match
10602      XAQQ      XAQQ
10603  No match, mark = A  No match, mark = A
10604    
 /--- A check on what happens after hitting a mark and them bumping along to  
 something that does not even start. Perl reports tags after the failures here,  
 though it does not when the individual letters are made into something  
 more complicated. ---/  
   
 /A(*:A)B|XX(*:B)Y/K  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XXY  
 MK: B  
     ** Failers  
 No match  
     XAQQ  
 No match  
     XAQQXZZ  
 No match  
     AXQQQ  
 No match  
     AXXQQQ  
 No match  
   
10605  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl  /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
10606  optimizations defeat this. So does the PCRE optimization unless we disable it  optimizations defeat this. So does the PCRE optimization unless we disable it
10607  with \Y. ---/  with \Y. ---/
# Line 11191  No match Line 10614  No match
10614      DEFGABC\Y      DEFGABC\Y
10615  No match  No match
10616    
10617  /--- Repeat some tests with added studying. ---/  /^(ab (c+(*THEN)cd) | xyz)/x
10618        abcccd
10619  /A(*COMMIT)B/+KS  No match
     ACABX  
 No match  
   
 /A(*THEN)B|A(*THEN)C/KS  
     AC  
  0: AC  
   
 /A(*PRUNE)B|A(*PRUNE)C/KS  
     AC  
 No match  
   
 /^(A(*THEN:A)B|C(*THEN:B)D)/KS  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match  
     CB  
 No match, mark = B  
   
 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
     ** Failers  
 No match  
     AC  
 No match, mark = A  
     CB  
 No match, mark = B  
   
 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS  
     AB  
  0: AB  
  1: AB  
     CD  
  0: CD  
  1: CD  
   
 /A(*PRUNE:A)B/KS  
     ACAB  
  0: AB  
   
 /(*MARK:A)(*PRUNE:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /(*MARK:A)(*THEN:B)(C|X)/KS  
     C  
  0: C  
  1: C  
 MK: A  
     D  
 No match  
   
 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*:A)A+(*SKIP)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS  
     AAAC  
 No match  
   
 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS  
     AAAC  
 No match  
   
 /A(*:A)B|XX(*:B)Y/KS  
     AABC  
  0: AB  
 MK: A  
     XXYZ  
  0: XXY  
 MK: B  
     ** Failers  
 No match  
     XAQQ  
 No match  
     XAQQXZZ  
 No match  
     AXQQQ  
 No match  
     AXXQQQ  
 No match  
   
 /(*COMMIT)ABC/  
     ABCDEFG  
  0: ABC  
     ** Failers  
 No match  
     DEFGABC\Y  
 No match  
   
 /^(ab (c+(*THEN)cd) | xyz)/x  
     abcccd  
 No match  
10620    
10621  /^(ab (c+(*PRUNE)cd) | xyz)/x  /^(ab (c+(*PRUNE)cd) | xyz)/x
10622      abcccd      abcccd
# Line 11852  No match Line 11155  No match
11155    
11156  /^.*?(?(?=a)a|b(*THEN)c)/  /^.*?(?(?=a)a|b(*THEN)c)/
11157      ba      ba
11158   0: ba  No match
11159    
11160  /^.*?(?(?=a)a|bc)/  /^.*?(?(?=a)a|bc)/
11161      ba      ba
11162   0: ba   0: ba
11163    
11164    /^.*?(?(?=a)a(*THEN)b|c)/
11165        ac
11166    No match
11167    
11168    /^.*?(?(?=a)a(*THEN)b)c/
11169        ac
11170    No match
11171    
11172    /^.*?(a(*THEN)b)c/
11173        aabc
11174    No match
11175    
11176    /^.*? (?1) c (?(DEFINE)(a(*THEN)b))/x
11177        aabc
11178     0: aabc
11179    
11180    /^.*?(a(*THEN)b|z)c/
11181        aabc
11182     0: aabc
11183     1: ab
11184    
11185    /^.*?(z|a(*THEN)b)c/
11186        aabc
11187     0: aabc
11188     1: ab
11189    
11190  /-- --/  /-- --/
11191    
11192  /-- These studied versions are here because they are not Perl-compatible; the  /-- These studied versions are here because they are not Perl-compatible; the
# Line 11869  No match Line 11198  No match
11198   1: C   1: C
11199  MK: A  MK: A
11200      D      D
11201  No match  No match, mark = A
11202    
11203  /(*:A)A+(*SKIP:A)(B|Z)/KS  /(*:A)A+(*SKIP:A)(B|Z)/KS
11204      AAAC      AAAC
11205  No match  No match, mark = A
11206    
11207  /-- --/  /-- --/
11208    
11209    "(?=a*(*ACCEPT)b)c"
11210        c
11211     0: c
11212        c\N
11213     0: c
11214    
11215    /(?1)c(?(DEFINE)((*ACCEPT)b))/
11216        c
11217     0: c
11218        c\N
11219     0: c
11220    
11221    /(?>(*ACCEPT)b)c/
11222        c
11223     0:
11224        c\N
11225    No match
11226    
11227    /(?:(?>(a)))+a%/++
11228        %aa%
11229     0: aa%
11230     0+
11231     1: a
11232     1+ a%
11233    
11234    /(a)b|ac/++SS
11235        ac\O3
11236    Matched, but too many substrings
11237     0: ac
11238     0+
11239    
11240    /(a)(b)x|abc/++
11241         abc\O6
11242     0: abc
11243     0+
11244    
11245    /(a)bc|(a)(b)\2/
11246        \O3abc
11247    Matched, but too many substrings
11248     0: abc
11249        \O4abc
11250    Matched, but too many substrings
11251     0: abc
11252    
11253    /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
11254    Capturing subpattern count = 2
11255    No options
11256    No first char
11257    No need char
11258    Subject length lower bound = 1
11259    No set of starting bytes
11260    
11261    /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
11262    Capturing subpattern count = 2
11263    No options
11264    No first char
11265    No need char
11266    Subject length lower bound = 3
11267    Starting byte set: a b
11268    
11269    /(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
11270    Capturing subpattern count = 2
11271    No options
11272    No first char
11273    No need char
11274    Subject length lower bound = 4
11275    Starting byte set: a b
11276    
11277    /(abc)(?1)/SI
11278    Capturing subpattern count = 1
11279    No options
11280    First char = 'a'
11281    Need char = 'c'
11282    Subject length lower bound = 6
11283    No set of starting bytes
11284    
11285    /^(?>a)++/
11286        aa\M
11287    Minimum match() limit = 5
11288    Minimum match() recursion limit = 2
11289     0: aa
11290        aaaaaaaaa\M
11291    Minimum match() limit = 12
11292    Minimum match() recursion limit = 2
11293     0: aaaaaaaaa
11294    
11295    /(a)(?1)++/
11296        aa\M
11297    Minimum match() limit = 7
11298    Minimum match() recursion limit = 4
11299     0: aa
11300     1: a
11301        aaaaaaaaa\M
11302    Minimum match() limit = 21
11303    Minimum match() recursion limit = 4
11304     0: aaaaaaaaa
11305     1: a
11306    
11307    /(?:(foo)|(bar)|(baz))X/SS=
11308        bazfooX
11309     0: fooX
11310     1: foo
11311     2: <unset>
11312     3: <unset>
11313        foobazbarX
11314     0: barX
11315     1: <unset>
11316     2: bar
11317     3: <unset>
11318        barfooX
11319     0: fooX
11320     1: foo
11321     2: <unset>
11322     3: <unset>
11323        bazX
11324     0: bazX
11325     1: <unset>
11326     2: <unset>
11327     3: baz
11328        foobarbazX
11329     0: bazX
11330     1: <unset>
11331     2: <unset>
11332     3: baz
11333        bazfooX\O0
11334    Matched, but too many substrings
11335        bazfooX\O2
11336    Matched, but too many substrings
11337     0: fooX
11338        bazfooX\O4
11339    Matched, but too many substrings
11340     0: fooX
11341     1: <unset>
11342        bazfooX\O6
11343    Matched, but too many substrings
11344     0: fooX
11345     1: foo
11346     2: <unset>
11347        bazfooX\O8
11348    Matched, but too many substrings
11349     0: fooX
11350     1: foo
11351     2: <unset>
11352     3: <unset>
11353        bazfooX\O10
11354     0: fooX
11355     1: foo
11356     2: <unset>
11357     3: <unset>
11358    
11359    /(?=abc){3}abc/BZ
11360    ------------------------------------------------------------------
11361            Bra
11362            Assert
11363            abc
11364            Ket
11365            abc
11366            Ket
11367            End
11368    ------------------------------------------------------------------
11369    
11370    /(?=abc)+abc/BZ
11371    ------------------------------------------------------------------
11372            Bra
11373            Assert
11374            abc
11375            Ket
11376            abc
11377            Ket
11378            End
11379    ------------------------------------------------------------------
11380    
11381    /(?=abc)++abc/BZ
11382    ------------------------------------------------------------------
11383            Bra
11384            Assert
11385            abc
11386            Ket
11387            abc
11388            Ket
11389            End
11390    ------------------------------------------------------------------
11391    
11392    /(?=abc){0}xyz/BZ
11393    ------------------------------------------------------------------
11394            Bra
11395            Skip zero
11396            Assert
11397            abc
11398            Ket
11399            xyz
11400            Ket
11401            End
11402    ------------------------------------------------------------------
11403    
11404    /(?=(a))?./BZ
11405    ------------------------------------------------------------------
11406            Bra
11407            Brazero
11408            Assert
11409            CBra 1
11410            a
11411            Ket
11412            Ket
11413            Any
11414            Ket
11415            End
11416    ------------------------------------------------------------------
11417    
11418    /(?=(a))??./BZ
11419    ------------------------------------------------------------------
11420            Bra
11421            Braminzero
11422            Assert
11423            CBra 1
11424            a
11425            Ket
11426            Ket
11427            Any
11428            Ket
11429            End
11430    ------------------------------------------------------------------
11431    
11432    /^(?=(a)){0}b(?1)/BZ
11433    ------------------------------------------------------------------
11434            Bra
11435            ^
11436            Skip zero
11437            Assert
11438            CBra 1
11439            a
11440            Ket
11441            Ket
11442            b
11443            Recurse
11444            Ket
11445            End
11446    ------------------------------------------------------------------
11447    
11448    /(?(DEFINE)(a))?b(?1)/BZ
11449    ------------------------------------------------------------------
11450            Bra
11451            Cond
11452            Cond def
11453            CBra 1
11454            a
11455            Ket
11456            Ket
11457            b
11458            Recurse
11459            Ket
11460            End
11461    ------------------------------------------------------------------
11462    
11463    /^(?=(?1))?[az]([abc])d/BZ
11464    ------------------------------------------------------------------
11465            Bra
11466            ^
11467            Brazero
11468            Assert
11469            Recurse
11470            Ket
11471            [az]
11472            CBra 1
11473            [a-c]
11474            Ket
11475            d
11476            Ket
11477            End
11478    ------------------------------------------------------------------
11479    
11480    /^(?!a){0}\w+/BZ
11481    ------------------------------------------------------------------
11482            Bra
11483            ^
11484            Skip zero
11485            Assert not
11486            a
11487            Ket
11488            \w+
11489            Ket
11490            End
11491    ------------------------------------------------------------------
11492    
11493    /(?<=(abc))?xyz/BZ
11494    ------------------------------------------------------------------
11495            Bra
11496            Brazero
11497            AssertB
11498            Reverse
11499            CBra 1
11500            abc
11501            Ket
11502            Ket
11503            xyz
11504            Ket
11505            End
11506    ------------------------------------------------------------------
11507    
11508    /[:a[:abc]b:]/BZ
11509    ------------------------------------------------------------------
11510            Bra
11511            [:[a-c]
11512            b:]
11513            Ket
11514            End
11515    ------------------------------------------------------------------
11516    
11517    /((?2))((?1))/SS
11518        abc
11519    Error -26 (nested recursion at the same subject position)
11520    
11521    /((?(R2)a+|(?1)b))/SS
11522        aaaabcde
11523    Error -26 (nested recursion at the same subject position)
11524    
11525    /(?(R)a*(?1)|((?R))b)/SS
11526        aaaabcde
11527    Error -26 (nested recursion at the same subject position)
11528    
11529    /(a+|(?R)b)/
11530    Failed: recursive call could loop indefinitely at offset 7
11531    
11532    /^(a(*:A)(d|e(*:B))z|aeq)/C
11533        adz
11534    --->adz
11535     +0 ^       ^
11536     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11537     +2 ^       a
11538     +3 ^^      (*:A)
11539     +8 ^^      (d|e(*:B))
11540    Latest Mark: A
11541     +9 ^^      d
11542    +10 ^ ^     |
11543    +18 ^ ^     z
11544    +19 ^  ^    |
11545    +24 ^  ^
11546     0: adz
11547     1: adz
11548     2: d
11549        aez
11550    --->aez
11551     +0 ^       ^
11552     +1 ^       (a(*:A)(d|e(*:B))z|aeq)
11553     +2 ^       a
11554     +3 ^^      (*:A)
11555     +8 ^^      (d|e(*:B))
11556    Latest Mark: A
11557     +9 ^^      d
11558    +11 ^^      e
11559    +12 ^ ^     (*:B)
11560    +17 ^ ^     )
11561    Latest Mark: B
11562    +18 ^ ^     z
11563    +19 ^  ^    |
11564    +24 ^  ^
11565     0: aez
11566     1: aez
11567     2: e
11568        aeqwerty
11569    --->aeqwerty
11570     +0 ^            ^
11571     +1 ^            (a(*:A)(d|e(*:B))z|aeq)
11572     +2 ^            a
11573     +3 ^^           (*:A)
11574     +8 ^^           (d|e(*:B))
11575    Latest Mark: A
11576     +9 ^^           d
11577    +11 ^^           e
11578    +12 ^ ^          (*:B)
11579    +17 ^ ^          )
11580    Latest Mark: B
11581    +18 ^ ^          z
11582    +20 ^            a
11583    +21 ^^           e
11584    +22 ^ ^          q
11585    +23 ^  ^         )
11586    +24 ^  ^
11587     0: aeq
11588     1: aeq
11589    
11590    /.(*F)/
11591        \P\Pabc
11592    No match
11593    
11594    /\btype\b\W*?\btext\b\W*?\bjavascript\b/IS
11595    Capturing subpattern count = 0
11596    No options
11597    First char = 't'
11598    Need char = 't'
11599    Subject length lower bound = 18
11600    No set of starting bytes
11601    
11602    /\btype\b\W*?\btext\b\W*?\bjavascript\b|\burl\b\W*?\bshell:|<input\b.*?\btype\b\W*?\bimage\b|\bonkeyup\b\W*?\=/IS
11603    Capturing subpattern count = 0
11604    No options
11605    No first char
11606    No need char
11607    Subject length lower bound = 8
11608    Starting byte set: < o t u
11609    
11610    /a(*SKIP)c|b(*ACCEPT)|/+SI
11611    Capturing subpattern count = 0
11612    No options
11613    No first char
11614    No need char
11615    Study returned NULL
11616        a
11617     0:
11618     0+
11619    
11620    /a(*SKIP)c|b(*ACCEPT)cd(*ACCEPT)|x/SI
11621    Capturing subpattern count = 0
11622    No options
11623    No first char
11624    No need char
11625    Subject length lower bound = -1
11626    Starting byte set: a b x
11627        ax
11628     0: x
11629    
11630    'a*(*ACCEPT)b'+
11631        \N\N
11632    No match
11633        abc\N\N
11634     0: a
11635     0+ bc
11636        bbb\N\N
11637     0:
11638     0+ bb
11639    
11640    /(*ACCEPT)a/+I
11641    Capturing subpattern count = 0
11642    No options
11643    No first char
11644    No need char
11645        bax
11646     0:
11647     0+ bax
11648    
11649    /z(*ACCEPT)a/+I
11650    Capturing subpattern count = 0
11651    No options
11652    First char = 'z'
11653    No need char
11654        baxzbx
11655     0: z
11656     0+ bx
11657    
11658    /a(?:.)*?a/ims
11659        \Mabbbbbbbbbbbbbbbbbbbbba
11660    Minimum match() limit = 65
11661    Minimum match() recursion limit = 2
11662     0: abbbbbbbbbbbbbbbbbbbbba
11663    
11664    /a(?:.(*THEN))*?a/ims
11665        \Mabbbbbbbbbbbbbbbbbbbbba
11666    Minimum match() limit = 86
11667    Minimum match() recursion limit = 45
11668     0: abbbbbbbbbbbbbbbbbbbbba
11669    
11670    /a(?:.(*THEN:ABC))*?a/ims
11671        \Mabbbbbbbbbbbbbbbbbbbbba
11672    Minimum match() limit = 86
11673    Minimum match() recursion limit = 45
11674     0: abbbbbbbbbbbbbbbbbbbbba
11675    
11676    /-- These tests are in agreement with development Perl 5.015, which has fixed
11677        some things, but they don't all work with 5.012, so they aren't in the
11678        Perl-compatible tests. Those after the first come from Perl's own test
11679        files. --/
11680    
11681    /^((yes|no)(*THEN)(*F))?/
11682      yes
11683    No match
11684    
11685    /(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
11686    AbcdCBefgBhiBqz
11687    No match
11688    
11689    /(A (.*)   C? (*THEN)  | A D) z/x
11690    AbcdCBefgBhiBqz
11691    No match
11692    
11693    /(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
11694    AbcdCBefgBhiBqz
11695    No match
11696    
11697    /(A (.*)   C? (*THEN)  | A D) \s* z/x
11698    AbcdCBefgBhiBqz
11699    No match
11700    
11701    /(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
11702    AbcdCBefgBhiBqz
11703    No match
11704    
11705    /(A (.*)   (?:C|) (*THEN)  | A D) z/x
11706    AbcdCBefgBhiBqz
11707    No match
11708    
11709    /(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
11710    AbcdCBefgBhiBqz
11711    No match
11712    
11713    /(A (.*)   C{0,6} (*THEN)  | A D) z/x
11714    AbcdCBefgBhiBqz
11715    No match
11716    
11717    /(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
11718    AbcdCEBefgBhiBqz
11719    No match
11720    
11721    /(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
11722    AbcdCEBefgBhiBqz
11723    No match
11724    
11725    /(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
11726    AbcdCBefgBhiBqz
11727    No match
11728    
11729    /(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
11730    AbcdCBefgBhiBqz
11731    No match
11732    
11733    /-----------------------------------------------/
11734    
11735    /^(?>a+)(?>(z+))\w/BZ
11736    ------------------------------------------------------------------
11737            Bra
11738            ^
11739            Once_NC
11740            a+
11741            Ket
11742            Once
11743            CBra 1
11744            z+
11745            Ket
11746            Ket
11747            \w
11748            Ket
11749            End
11750    ------------------------------------------------------------------
11751        aaaazzzzb
11752     0: aaaazzzzb
11753     1: zzzz
11754        ** Failers
11755    No match
11756        aazz
11757    No match
11758    
11759    /(.)(\1|a(?2))/
11760        bab
11761     0: bab
11762     1: b
11763     2: ab
11764    
11765    /\1|(.)(?R)\1/
11766        cbbbc
11767     0: cbbbc
11768     1: c
11769    
11770    /(.)((?(1)c|a)|a(?2))/
11771        baa
11772    No match
11773    
11774    /(?P<abn>(?P=abn)xxx)/BZ
11775    ------------------------------------------------------------------
11776            Bra
11777            Once
11778            CBra 1
11779            \1
11780            xxx
11781            Ket
11782            Ket
11783            Ket
11784            End
11785    ------------------------------------------------------------------
11786    
11787    /(a\1z)/BZ
11788    ------------------------------------------------------------------
11789            Bra
11790            Once
11791            CBra 1
11792            a
11793            \1
11794            z
11795            Ket
11796            Ket
11797            Ket
11798            End
11799    ------------------------------------------------------------------
11800    
11801    /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
11802         \Maabbccddee
11803    Minimum match() limit = 12
11804    Minimum match() recursion limit = 3
11805     0: aabbccddee
11806    
11807    /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
11808         \Maabbccddee
11809    Minimum match() limit = 22
11810    Minimum match() recursion limit = 21
11811     0: aabbccddee
11812     1: aa
11813     2: bb
11814     3: cc
11815     4: dd
11816     5: ee
11817    
11818    /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
11819         \Maabbccddee
11820    Minimum match() limit = 18
11821    Minimum match() recursion limit = 13
11822     0: aabbccddee
11823     1: aa
11824     2: cc
11825     3: ee
11826    
11827    /^a\x41z/<JS>
11828        aAz
11829     0: aAz
11830        *** Failers
11831    No match
11832        ax41z
11833    No match
11834    
11835    /^a[m\x41]z/<JS>
11836        aAz
11837     0: aAz
11838    
11839    /^a\x1z/<JS>
11840        ax1z
11841     0: ax1z
11842    
11843    /^a\u0041z/<JS>
11844        aAz
11845     0: aAz
11846        *** Failers
11847    No match
11848        au0041z
11849    No match
11850    
11851    /^a[m\u0041]z/<JS>
11852        aAz
11853     0: aAz
11854    
11855    /^a\u041z/<JS>
11856        au041z
11857     0: au041z
11858        *** Failers
11859    No match
11860        aAz
11861    No match
11862    
11863    /^a\U0041z/<JS>
11864        aU0041z
11865     0: aU0041z
11866        *** Failers
11867    No match
11868        aAz
11869    No match
11870    
11871    /(?(?=c)c|d)++Y/BZ
11872    ------------------------------------------------------------------
11873            Bra
11874            BraPos
11875            Cond
11876            Assert
11877            c
11878            Ket
11879            c
11880            Alt
11881            d
11882            Ket
11883            KetRpos
11884            Y
11885            Ket
11886            End
11887    ------------------------------------------------------------------
11888    
11889    /(?(?=c)c|d)*+Y/BZ
11890    ------------------------------------------------------------------
11891            Bra
11892            Braposzero
11893            BraPos
11894            Cond
11895            Assert
11896            c
11897            Ket
11898            c
11899            Alt
11900            d
11901            Ket
11902            KetRpos
11903            Y
11904            Ket
11905            End
11906    ------------------------------------------------------------------
11907    
11908    /a[\NB]c/
11909    Failed: \N is not supported in a class at offset 3
11910    
11911    /a[B-\Nc]/
11912    Failed: \N is not supported in a class at offset 5
11913    
11914    /(a)(?2){0,1999}?(b)/
11915    
11916    /(a)(?(DEFINE)(b))(?2){0,1999}?(?2)/
11917    
11918    /--- This test, with something more complicated than individual letters, causes
11919    different behaviour in Perl. Perhaps it disables some optimization; no tag is
11920    passed back for the failures, whereas in PCRE there is a tag. ---/
11921    
11922    /(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK
11923        AABC
11924     0: AB
11925     1: A
11926     2: B
11927    MK: A
11928        XXYZ
11929     0: XXY
11930     1: <unset>
11931     2: <unset>
11932     3: X
11933     4: X
11934     5: Y
11935    MK: B
11936        ** Failers
11937    No match
11938        XAQQ
11939    No match, mark = A
11940        XAQQXZZ
11941    No match, mark = A
11942        AXQQQ
11943    No match, mark = A
11944        AXXQQQ
11945    No match, mark = B
11946    
11947    /-- Perl doesn't give marks for these, though it does if the alternatives are
11948    replaced by single letters. --/
11949    
11950    /(b|q)(*:m)f|a(*:n)w/K
11951        aw
11952     0: aw
11953    MK: n
11954        ** Failers
11955    No match, mark = n
11956        abc
11957    No match, mark = m
11958    
11959    /(q|b)(*:m)f|a(*:n)w/K
11960        aw
11961     0: aw
11962    MK: n
11963        ** Failers
11964    No match, mark = n
11965        abc
11966    No match, mark = m
11967    
11968    /-- After a partial match, the behaviour is as for a failure. --/
11969    
11970    /^a(*:X)bcde/K
11971       abc\P
11972    Partial match, mark=X: abc
11973    
11974    /-- These are here because Perl doesn't return a mark, except for the first --/
11975    
11976    /(?=(*:x))(q|)/K+
11977        abc
11978     0:
11979     0+ abc
11980     1:
11981    MK: x
11982    
11983    /(?=(*:x))((*:y)q|)/K+
11984        abc
11985     0:
11986     0+ abc
11987     1:
11988    MK: x
11989    
11990    /(?=(*:x))(?:(*:y)q|)/K+
11991        abc
11992     0:
11993     0+ abc
11994    MK: x
11995    
11996    /(?=(*:x))(?>(*:y)q|)/K+
11997        abc
11998     0:
11999     0+ abc
12000    MK: x
12001    
12002    /(?=a(*:x))(?!a(*:y)c)/K+
12003        ab
12004     0:
12005     0+ ab
12006    MK: x
12007    
12008    /(?=a(*:x))(?=a(*:y)c|)/K+
12009        ab
12010     0:
12011     0+ ab
12012    MK: x
12013    
12014  /-- End of testinput2 --/  /-- End of testinput2 --/

Legend:
Removed from v.612  
changed lines
  Added in v.888

  ViewVC Help
Powered by ViewVC 1.1.5