Diff for /embedaddon/pcre/testdata/testoutput2 between versions 1.1 and 1.1.1.3

version 1.1, 2012/02/21 23:05:52 version 1.1.1.3, 2012/10/09 09:19:18
Line 5 Line 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 
     bug.      bug.
           
    NOTE: This is a non-UTF-8 set of tests. When UTF-8 is needed, use test    NOTE: This is a non-UTF set of tests. When UTF support is needed, use
    5, and if Unicode Property Support is needed, use test 13. --/      test 5, and if Unicode Property Support is needed, use test 7. --/
       
 /-- 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. --/     
   
 /(a)b|/I  /(a)b|/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
 No options  No options
Line 380  No need char Line 376  No need char
  2: <unset>   2: <unset>
  3: def   3: def
   
 /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  
   
 /)/  /)/
 Failed: unmatched parentheses at offset 0  Failed: unmatched parentheses at offset 0
   
Line 510  Capturing subpattern count = 0 Line 451  Capturing subpattern count = 0
 No options  No options
 First char = 'f'  First char = 'f'
 Need char = 'o'  Need char = 'o'
   Max lookbehind = 6
     foo      foo
  0: foo   0: foo
     catfoo      catfoo
Line 717  Capturing subpattern count = 0 Line 659  Capturing subpattern count = 0
 No options  No options
 No first char  No first char
 No need char  No need char
   Max lookbehind = 3
 Subject length lower bound = 1  Subject length lower bound = 1
 Starting byte set: a b   Starting byte set: a b 
   
Line 725  Capturing subpattern count = 1 Line 668  Capturing subpattern count = 1
 No options  No options
 No first char  No first char
 Need char = 'a'  Need char = 'a'
   Max lookbehind = 3
 Subject length lower bound = 5  Subject length lower bound = 5
 Starting byte set: a o   Starting byte set: a o 
   
Line 742  Contains explicit CR or LF match Line 686  Contains explicit CR or LF match
 Options: multiline  Options: multiline
 No first char  No first char
 Need char = 'r'  Need char = 'r'
   Max lookbehind = 4
     foo\nbarbar      foo\nbarbar
  0: bar   0: bar
     ***Failers      ***Failers
Line 759  Contains explicit CR or LF match Line 704  Contains explicit CR or LF match
 Options: multiline  Options: multiline
 First char at start or follows newline  First char at start or follows newline
 Need char = 'r'  Need char = 'r'
   Max lookbehind = 4
     foo\nbarbar      foo\nbarbar
  0: bar   0: bar
     ***Failers      ***Failers
Line 800  Capturing subpattern count = 0 Line 746  Capturing subpattern count = 0
 No options  No options
 First char = '-'  First char = '-'
 Need char = 't'  Need char = 't'
   Max lookbehind = 7
     the bullock-cart      the bullock-cart
  0: -cart   0: -cart
     a donkey-cart race      a donkey-cart race
Line 816  Capturing subpattern count = 0 Line 763  Capturing subpattern count = 0
 No options  No options
 No first char  No first char
 No need char  No need char
   Max lookbehind = 3
   
 /(?>.*)(?<=(abcd)|(xyz))/I  /(?>.*)(?<=(abcd)|(xyz))/I
 Capturing subpattern count = 2  Capturing subpattern count = 2
 No options  No options
 First char at start or follows newline  First char at start or follows newline
 No need char  No need char
   Max lookbehind = 4
     alphabetabcd      alphabetabcd
  0: alphabetabcd   0: alphabetabcd
  1: abcd   1: abcd
Line 835  Capturing subpattern count = 0 Line 784  Capturing subpattern count = 0
 No options  No options
 First char = 'Z'  First char = 'Z'
 Need char = 'Z'  Need char = 'Z'
   Max lookbehind = 4
     abxyZZ      abxyZZ
  0: ZZ   0: ZZ
     abXyZZ      abXyZZ
Line 863  Capturing subpattern count = 1 Line 813  Capturing subpattern count = 1
 No options  No options
 First char = 'b'  First char = 'b'
 Need char = 'r'  Need char = 'r'
   Max lookbehind = 4
     bar      bar
  0: bar   0: bar
     foobbar      foobbar
Line 1034  Failed: numbers out of order in {} quantifier at offse Line 985  Failed: numbers out of order in {} quantifier at offse
 /abc/\  /abc/\
 Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
   
 /abc/\P  
 Failed: POSIX code 9: bad escape sequence at offset 4       
   
 /abc/\i  /abc/\i
 Failed: \ at end of pattern at offset 4  Failed: \ at end of pattern at offset 4
   
Line 1152  No first char Line 1100  No first char
 No need char  No need char
     abc\00def\L\C0      abc\00def\L\C0
  0: abc\x00def   0: abc\x00def
 0C abc (7) 0C abc\x00def (7)
  0L abc   0L abc
   
 /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 1267  Capturing subpattern count = 0 Line 1215  Capturing subpattern count = 0
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
   Max lookbehind = 1
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
   
 /\Biss\B/I+P  
     Mississippi  
  0: iss  
  0+ issippi  
   
 /iss/IG+  /iss/IG+
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
Line 1292  Capturing subpattern count = 0 Line 1236  Capturing subpattern count = 0
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
   Max lookbehind = 1
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1301  Capturing subpattern count = 0 Line 1246  Capturing subpattern count = 0
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
   Max lookbehind = 1
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1316  Capturing subpattern count = 0 Line 1262  Capturing subpattern count = 0
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
   Max lookbehind = 1
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1327  Capturing subpattern count = 0 Line 1274  Capturing subpattern count = 0
 No options  No options
 First char = 'i'  First char = 'i'
 Need char = 's'  Need char = 's'
   Max lookbehind = 1
     Mississippi      Mississippi
  0: iss   0: iss
  0+ issippi   0+ issippi
Line 1405  Capturing subpattern count = 0 Line 1353  Capturing subpattern count = 0
 Contains explicit CR or LF match  Contains explicit CR or LF match
 Options: multiline  Options: multiline
 First char at start or follows newline  First char at start or follows newline
Need char = 10Need char = \x0a
     ab\nab\ncd      ab\nab\ncd
  0: ab\x0a   0: ab\x0a
  0+ ab\x0acd   0+ ab\x0acd
Line 1507  Capturing subpattern count = 0 Line 1455  Capturing subpattern count = 0
 No options  No options
 No first char  No first char
 No need char  No need char
   Max lookbehind = 3
   
 /abc(?!pqr)/I  /abc(?!pqr)/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
Line 1692  No need char Line 1641  No need char
     \Nabc      \Nabc
 No match  No match
   
 /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  
   
 /^.?abcd/IS  /^.?abcd/IS
 Capturing subpattern count = 0  Capturing subpattern count = 0
 Options: anchored  Options: anchored
Line 3314  Capturing subpattern count = 0 Line 3236  Capturing subpattern count = 0
 No options  No options
 First char = '8'  First char = '8'
 Need char = 'X'  Need char = 'X'
   Max lookbehind = 1
   
 |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ  |\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b|IDZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
Line 3327  Capturing subpattern count = 0 Line 3250  Capturing subpattern count = 0
 No options  No options
 First char = '$'  First char = '$'
 Need char = 'X'  Need char = 'X'
   Max lookbehind = 1
   
 /(.*)\d+\1/I  /(.*)\d+\1/I
 Capturing subpattern count = 1  Capturing subpattern count = 1
Line 3842  Capturing subpattern count = 1 Line 3766  Capturing subpattern count = 1
 No options  No options
 First char = 'x'  First char = 'x'
 Need char = 'z'  Need char = 'z'
   Max lookbehind = 3
    abcxyz\C+     abcxyz\C+
 Callout 0: last capture = 1  Callout 0: last capture = 1
  0: <unset>   0: <unset>
Line 5489  Capturing subpattern count = 0 Line 5414  Capturing subpattern count = 0
 No options  No options
 No first char  No first char
 No need char  No need char
   Max lookbehind = 1
   ab cd\>1    ab cd\>1
  0:  cd   0:  cd
   
Line 5497  Capturing subpattern count = 0 Line 5423  Capturing subpattern count = 0
 Options: dotall  Options: dotall
 No first char  No first char
 No need char  No need char
   Max lookbehind = 1
   ab cd\>1    ab cd\>1
  0:  cd   0:  cd
   
Line 5854  No match Line 5781  No match
     line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
 No match  No match
   
 /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  
   
 /(?i)(?-i)AbCd/I  /(?i)(?-i)AbCd/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
Line 6164  No need char Line 6073  No need char
     ((this))      ((this))
  0: ((this))   0: ((this))
   
 /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  
   
 /\x{0000ff}/I  /\x{0000ff}/I
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
First char = 255First char = \xff
 No need char  No need char
   
 /^((?P<A>a1)|(?P<A>a2)b)/I  /^((?P<A>a1)|(?P<A>a2)b)/I
Line 6288  no parentheses with name "Z" Line 6186  no parentheses with name "Z"
  0: a1   0: a1
  1: a1   1: a1
  2: a1   2: a1
copy substring Z failed -7get substring Z failed -7
   G a1 (2) A    G a1 (2) A
   
 /^(?P<A>a)(?P<A>b)/IJ  /^(?P<A>a)(?P<A>b)/IJ
Line 6320  No need char Line 6218  No need char
   G a (1) A    G a (1) A
     cd\GA      cd\GA
  0: cd   0: cd
copy substring A failed -7get substring A failed -7
   
 /^(?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
 Capturing subpattern count = 4  Capturing subpattern count = 4
Line 6488  No need char Line 6386  No need char
  9:    9: 
 10: Y  10: Y
   
 /\777/I  
 Failed: octal value is greater than \377 (not in UTF-8 mode) at offset 3  
   
 /\s*,\s*/IS  /\s*,\s*/IS
 Capturing subpattern count = 0  Capturing subpattern count = 0
 No options  No options
Line 7551  Matched, but too many substrings Line 7446  Matched, but too many substrings
 /[^a]+a/BZi  /[^a]+a/BZi
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
     /i [^A]++     /i [^a]++
      /i a       /i a
         Ket          Ket
         End          End
Line 7560  Matched, but too many substrings Line 7455  Matched, but too many substrings
 /[^a]+A/BZi  /[^a]+A/BZi
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
     /i [^A]++     /i [^a]++
      /i A       /i A
         Ket          Ket
         End          End
Line 8506  Failed: syntax error in subpattern name (missing termi Line 8401  Failed: syntax error in subpattern name (missing termi
  3: <unset>   3: <unset>
  4: x   4: x
   
 /[\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  
 ------------------------------------------------------------------  
   
 /\H++X/BZ  /\H++X/BZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
Line 9478  No options Line 9313  No options
 First char at start or follows newline  First char at start or follows newline
 No need char  No need char
   
 /a?|b?/P  
     abc  
  0: a  
     ** Failers  
  0:   
     ddd\N     
 No match: POSIX code 17: match failed  
   
 /xyz/C  /xyz/C
   xyz     xyz 
 --->xyz  --->xyz
Line 9880  Partial match: the cat Line 9707  Partial match: the cat
    abc\P\P     abc\P\P
  0: abc   0: abc
         
 /\w+A/P  
    CDAAAAB   
  0: CDAAAA  
   
 /\w+A/PU  
    CDAAAAB   
  0: CDA  
   
 /abc\K123/  /abc\K123/
     xyzabc123pqr      xyzabc123pqr
  0: 123   0: 123
Line 10280  Need char = ':' Line 10099  Need char = ':'
 Subject length lower bound = 22  Subject length lower bound = 22
 No set of starting bytes  No set of starting bytes
   
 /  (?: [\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   
   
 /<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
 Capturing subpattern count = 11  Capturing subpattern count = 11
 Options: caseless dotall  Options: caseless dotall
Line 11140  No match Line 10755  No match
 /\s*\R/BZ  /\s*\R/BZ
 ------------------------------------------------------------------  ------------------------------------------------------------------
         Bra          Bra
        \s*+        \s*
         \R          \R
         Ket          Ket
         End          End
 ------------------------------------------------------------------  ------------------------------------------------------------------
       \x20\x0a
    0:  \x0a
       \x20\x0d
    0:  \x0d
       \x20\x0d\x0a
    0:  \x0d\x0a
   
   /\S*\R/BZ
   ------------------------------------------------------------------
           Bra
           \S*+
           \R
           Ket
           End
   ------------------------------------------------------------------
       a\x0a
    0: a\x0a
   
   /X\h*\R/BZ
   ------------------------------------------------------------------
           Bra
           X
           \h*+
           \R
           Ket
           End
   ------------------------------------------------------------------
       X\x20\x0a
    0: X \x0a
   
   /X\H*\R/BZ
   ------------------------------------------------------------------
           Bra
           X
           \H*
           \R
           Ket
           End
   ------------------------------------------------------------------
       X\x0d\x0a
    0: X\x0d\x0a
   
   /X\H+\R/BZ
   ------------------------------------------------------------------
           Bra
           X
           \H+
           \R
           Ket
           End
   ------------------------------------------------------------------
       X\x0d\x0a
    0: X\x0d\x0a
   
   /X\H++\R/BZ
   ------------------------------------------------------------------
           Bra
           X
           \H++
           \R
           Ket
           End
   ------------------------------------------------------------------
       X\x0d\x0a
   No match
   
 /-- Perl treats this one differently, not failing the second string. I believe  /-- Perl treats this one differently, not failing the second string. I believe
     that is a bug in Perl. --/      that is a bug in Perl. --/
   
Line 12002  Capturing subpattern count = 0 Line 11682  Capturing subpattern count = 0
 No options  No options
 First char = 't'  First char = 't'
 Need char = 't'  Need char = 't'
   Max lookbehind = 1
 Subject length lower bound = 18  Subject length lower bound = 18
 No set of starting bytes  No set of starting bytes
   
Line 12010  Capturing subpattern count = 0 Line 11691  Capturing subpattern count = 0
 No options  No options
 No first char  No first char
 No need char  No need char
   Max lookbehind = 1
 Subject length lower bound = 8  Subject length lower bound = 8
 Starting byte set: < o t u   Starting byte set: < o t u 
   
Line 12376  No match, mark = m Line 12058  No match, mark = m
 /^a(*:X)bcde/K  /^a(*:X)bcde/K
    abc\P     abc\P
 Partial match, mark=X: abc  Partial match, mark=X: abc
      
   /-- These are here because Perl doesn't return a mark, except for the first --/
   
   /(?=(*:x))(q|)/K+
       abc
    0: 
    0+ abc
    1: 
   MK: x
   
   /(?=(*:x))((*:y)q|)/K+
       abc
    0: 
    0+ abc
    1: 
   MK: x
   
   /(?=(*:x))(?:(*:y)q|)/K+
       abc
    0: 
    0+ abc
   MK: x
   
   /(?=(*:x))(?>(*:y)q|)/K+
       abc
    0: 
    0+ abc
   MK: x
   
   /(?=a(*:x))(?!a(*:y)c)/K+
       ab
    0: 
    0+ ab
   MK: x
   
   /(?=a(*:x))(?=a(*:y)c|)/K+
       ab
    0: 
    0+ ab
   MK: x
   
   /(..)\1/
       ab\P
   Partial match: ab
       aba\P
   Partial match: aba
       abab\P
    0: abab
    1: ab
   
   /(..)\1/i
       ab\P
   Partial match: ab
       abA\P
   Partial match: abA
       aBAb\P
    0: aBAb
    1: aB
   
   /(..)\1{2,}/
       ab\P
   Partial match: ab
       aba\P
   Partial match: aba
       abab\P
   Partial match: abab
       ababa\P
   Partial match: ababa
       ababab\P
    0: ababab
    1: ab
       ababab\P\P
   Partial match: ababab
       abababa\P
    0: ababab
    1: ab
       abababa\P\P
   Partial match: abababa
   
   /(..)\1{2,}/i
       ab\P
   Partial match: ab
       aBa\P
   Partial match: aBa
       aBAb\P
   Partial match: aBAb
       AbaBA\P
   Partial match: AbaBA
       abABAb\P
    0: abABAb
    1: ab
       aBAbaB\P\P
   Partial match: aBAbaB
       abABabA\P
    0: abABab
    1: ab
       abaBABa\P\P
   Partial match: abaBABa
   
   /(..)\1{2,}?x/i
       ab\P
   Partial match: ab
       abA\P
   Partial match: abA
       aBAb\P
   Partial match: aBAb
       abaBA\P
   Partial match: abaBA
       abAbaB\P
   Partial match: abAbaB
       abaBabA\P
   Partial match: abaBabA
       abAbABaBx\P
    0: abAbABaBx
    1: ab
   
   /^(..)\1/
       aba\P
   Partial match: aba
   
   /^(..)\1{2,3}x/
       aba\P
   Partial match: aba
       ababa\P
   Partial match: ababa
       ababa\P\P
   Partial match: ababa
       abababx
    0: abababx
    1: ab
       ababababx  
    0: ababababx
    1: ab
   
   /^(..)\1{2,3}?x/
       aba\P
   Partial match: aba
       ababa\P
   Partial match: ababa
       ababa\P\P
   Partial match: ababa
       abababx
    0: abababx
    1: ab
       ababababx  
    0: ababababx
    1: ab
       
   /^(..)(\1{2,3})ab/
       abababab
    0: abababab
    1: ab
    2: abab
   
   /^\R/
       \r\P
    0: \x0d
       \r\P\P
   Partial match: \x0d
       
   /^\R{2,3}x/
       \r\P
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P 
   Partial match: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P  
   Partial match: \x0d\x0d\x0d
       \r\r\r\P\P
   Partial match: \x0d\x0d\x0d
       \r\rx
    0: \x0d\x0dx
       \r\r\rx    
    0: \x0d\x0d\x0dx
   
   /^\R{2,3}?x/
       \r\P
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P 
   Partial match: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P  
   Partial match: \x0d\x0d\x0d
       \r\r\r\P\P
   Partial match: \x0d\x0d\x0d
       \r\rx
    0: \x0d\x0dx
       \r\r\rx    
    0: \x0d\x0d\x0dx
       
   /^\R?x/
       \r\P
   Partial match: \x0d
       \r\P\P 
   Partial match: \x0d
       x
    0: x
       \rx  
    0: \x0dx
   
   /^\R+x/
       \r\P
   Partial match: \x0d
       \r\P\P 
   Partial match: \x0d
       \r\n\P
   Partial match: \x0d\x0a
       \r\n\P\P  
   Partial match: \x0d\x0a
       \rx  
    0: \x0dx
   
   /^a$/<CRLF>
       a\r\P
   Partial match: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /^a$/m<CRLF>
       a\r\P
   Partial match: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /^(a$|a\r)/<CRLF>
       a\r\P
    0: a\x0d
    1: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /^(a$|a\r)/m<CRLF>
       a\r\P
    0: a\x0d
    1: a\x0d
       a\r\P\P 
   Partial match: a\x0d
   
   /./<CRLF>
       \r\P
    0: \x0d
       \r\P\P 
   Partial match: \x0d
     
   /.{2,3}/<CRLF>
       \r\P 
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P
    0: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P
    0: \x0d\x0d\x0d
       \r\r\r\P\P     
   Partial match: \x0d\x0d\x0d
   
   /.{2,3}?/<CRLF>
       \r\P 
   Partial match: \x0d
       \r\P\P
   Partial match: \x0d
       \r\r\P
    0: \x0d\x0d
       \r\r\P\P
   Partial match: \x0d\x0d
       \r\r\r\P
    0: \x0d\x0d
       \r\r\r\P\P     
    0: \x0d\x0d
   
   /-- These two are here because Perl does not match: it seems to allow the
   COMMIT to escape from the assertion. --/
   
   /(?=a(*COMMIT)b|ac)ac|ac/
       ac
    0: ac
   
   /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
       ac
    0: ac
    1: <unset>
    2: a
   
   "AB(C(D))(E(F))?(?(?=\2)(?=\4))"
       ABCDGHI\O03
   Matched, but too many substrings
    0: ABCD
       
   /-- This one is here because Perl does not confine the *COMMIT to the 
   assertion, and therefore fails the entire subroutine call. --/ 
       
   /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
       ac 
    0: ac
   
 /-- End of testinput2 --/  /-- End of testinput2 --/

Removed from v.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>