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

Diff of /code/trunk/testdata/testinput2

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

revision 168 by ph10, Tue May 29 15:18:18 2007 UTC revision 510 by ph10, Sat Mar 27 17:45:29 2010 UTC
# Line 1  Line 1 
1    /-- This set of tests is not Perl-compatible. It checks on special features
2        of PCRE's API, error diagnostics, and the compiled code of some patterns.
3        It also checks the non-Perl syntax the PCRE supports (Python, .NET,
4        Oniguruma). Finally, there are some tests where PCRE and Perl differ,
5        either because PCRE can't be compatible, or there is potential Perl
6        bug. --/
7    
8    /-- Originally, the Perl 5.10 things were in here too, but now I have separated
9        many (most?) of them out into test 11. However, there may still be some
10        that were overlooked. --/
11    
12  /(a)b|/I  /(a)b|/I
13    
14  /abc/I  /abc/I
# Line 28  Line 39 
39      *** Failers      *** Failers
40      def\nabc      def\nabc
41    
42  /ab\hdef/X  /ab\idef/X
43    
44  /(?X)ab\hdef/X  /(?X)ab\idef/X
45    
46  /x{5,4}/  /x{5,4}/
47    
# Line 123  Line 134 
134      defabc      defabc
135      \Zdefabc      \Zdefabc
136    
137  /abc/IP  /abc/P
138      abc      abc
139      *** Failers      *** Failers
140    
141  /^abc|def/IP  /^abc|def/P
142      abcdef      abcdef
143      abcdef\B      abcdef\B
144    
145  /.*((abc)$|(def))/IP  /.*((abc)$|(def))/P
146      defabc      defabc
147      \Zdefabc      \Zdefabc
148    
149  /the quick brown fox/IP  /the quick brown fox/P
150      the quick brown fox      the quick brown fox
151      *** Failers      *** Failers
152      The Quick Brown Fox      The Quick Brown Fox
153    
154  /the quick brown fox/IPi  /the quick brown fox/Pi
155      the quick brown fox      the quick brown fox
156      The Quick Brown Fox      The Quick Brown Fox
157    
158  /abc.def/IP  /abc.def/P
159      *** Failers      *** Failers
160      abc\ndef      abc\ndef
161    
162  /abc$/IP  /abc$/P
163      abc      abc
164      abc\n      abc\n
165    
166  /(abc)\2/IP  /(abc)\2/P
167    
168  /(abc\1)/IP  /(abc\1)/P
169      abc      abc
170    
171  /)/  /)/
# Line 333  Line 344 
344      *** Failers      *** Failers
345      a      a
346    
347  /This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/I  /This one is here because Perl behaves differently; see also the following/I
348    
349  /^(a\1?){4}$/I  /^(a\1?){4}$/I
350        aaaa
351      aaaaaa      aaaaaa
352    
353    /Perl does not fail these two for the final subjects. Neither did PCRE until/
354    /release 8.01. The problem is in backtracking into a subpattern that contains/
355    /a recursive reference to itself. PCRE has now made these into atomic patterns./
356    
357    /^(xa|=?\1a){2}$/
358        xa=xaa
359        ** Failers
360        xa=xaaa
361    
362    /^(xa|=?\1a)+$/
363        xa=xaa
364        ** Failers
365        xa=xaaa
366    
367  /These are syntax tests from Perl 5.005/I  /These are syntax tests from Perl 5.005/I
368    
# Line 398  Line 424 
424    
425  /(?(1?)a|b)/  /(?(1?)a|b)/
426    
 /(?(1)a|b|c)/  
   
427  /[a[:xyz:/  /[a[:xyz:/
428    
429  /(?<=x+)y/  /(?<=x+)y/
# Line 568  Line 592 
592    
593  /ab\d+/I  /ab\d+/I
594    
595  /a(?(1)b)/I  /a(?(1)b)(.)/I
596    
597  /a(?(1)bag|big)/I  /a(?(1)bag|big)(.)/I
598    
599  /a(?(1)bag|big)*/I  /a(?(1)bag|big)*(.)/I
600    
601  /a(?(1)bag|big)+/I  /a(?(1)bag|big)+(.)/I
602    
603  /a(?(1)b..|b..)/I  /a(?(1)b..|b..)(.)/I
604    
605  /ab\d{0}e/I  /ab\d{0}e/I
606    
# Line 595  Line 619 
619      *** Failers      *** Failers
620      \Nabc      \Nabc
621    
622  /a*(b+)(z)(z)/IP  /a*(b+)(z)(z)/P
623      aaaabbbbzzzz      aaaabbbbzzzz
624      aaaabbbbzzzz\O0      aaaabbbbzzzz\O0
625      aaaabbbbzzzz\O1      aaaabbbbzzzz\O1
# Line 977  Line 1001 
1001    
1002  /()a/I  /()a/I
1003    
1004  /(?(1)ab|ac)/I  /(?(1)ab|ac)(.)/I
1005    
1006  /(?(1)abz|acz)/I  /(?(1)abz|acz)(.)/I
1007    
1008  /(?(1)abz)/I  /(?(1)abz)(.)/I
1009    
1010  /(?(1)abz)123/I  /(?(1)abz)(1)23/I
1011    
1012  /(a)+/I  /(a)+/I
1013    
# Line 1124  Line 1148 
1148    
1149  /(a(?1)+b)/DZ  /(a(?1)+b)/DZ
1150    
 /^\W*(?:((.)\W*(?1)\W*\2|)|((.)\W*(?3)\W*\4|\W*.\W*))\W*$/Ii  
     1221  
     Satan, oscillate my metallic sonatas!  
     A man, a plan, a canal: Panama!  
     Able was I ere I saw Elba.  
     *** Failers  
     The quick brown fox  
   
1151  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
1152      12      12
1153      (((2+2)*-3)-7)      (((2+2)*-3)-7)
# Line 1421  Line 1437 
1437      ** Failers      ** Failers
1438      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1439    
1440  /ab.cd/IP  /ab.cd/P
1441      ab-cd      ab-cd
1442      ab=cd      ab=cd
1443      ** Failers      ** Failers
1444      ab\ncd      ab\ncd
1445    
1446  /ab.cd/IPs  /ab.cd/Ps
1447      ab-cd      ab-cd
1448      ab=cd      ab=cd
1449      ab\ncd      ab\ncd
# Line 1482  Line 1498 
1498      (this)      (this)
1499      ((this))      ((this))
1500    
1501  /a(b)c/IPN  /a(b)c/PN
1502      abc      abc
1503    
1504  /a(?P<name>b)c/IPN  /a(?P<name>b)c/PN
1505      abc      abc
1506    
1507  /\x{100}/I  /\x{100}/I
# Line 1917  a random value. /Ix Line 1933  a random value. /Ix
1933  /(?=(?'abc'\w+))\k<abc>:/I  /(?=(?'abc'\w+))\k<abc>:/I
1934      abcd:      abcd:
1935    
 /(?'abc'\w+):\k<abc>{2}/  
     a:aaxyz  
     ab:ababxyz  
     ** Failers  
     a:axyz  
     ab:abxyz  
   
1936  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
1937      adaa      adaa
1938      ** Failers      ** Failers
# Line 1936  a random value. /Ix Line 1945  a random value. /Ix
1945      ** Failers      ** Failers
1946      bddd      bddd
1947    
 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x  
     abd  
     ce  
   
1948  /(?(<bc))/  /(?(<bc))/
1949    
1950  /(?(''))/  /(?(''))/
# Line 1957  a random value. /Ix Line 1962  a random value. /Ix
1962  /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x  /(?<1> (?'B' abc (?(R) (?(R&1)1) (?(R&B)2) X  |  (?1)  (?2)   (?R) ))) /x
1963      abcabc1Xabc2XabcXabcabc      abcabc1Xabc2XabcXabcabc
1964    
 /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x  
     abcd  
   
 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))  
   (?(DEFINE)  
   (?<NAME_PAT>[a-z]+)  
   (?<ADDRESS_PAT>\d+)  
   )/x  
     metcalfe 33  
   
1965  /^(?(DEFINE) abc | xyz ) /x  /^(?(DEFINE) abc | xyz ) /x
1966    
1967  /(?(DEFINE) abc) xyz/xI  /(?(DEFINE) abc) xyz/xI
# Line 1990  a random value. /Ix Line 1985  a random value. /Ix
1985      a\rb\<anycrlf>      a\rb\<anycrlf>
1986    
1987  /^abc./mgx<any>  /^abc./mgx<any>
1988      abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 \x{2028}abc8 \x{2029}abc9 JUNK      abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x85abc7 JUNK
1989    
1990  /abc.$/mgx<any>  /abc.$/mgx<any>
1991      abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9      abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7 abc9
1992    
1993  /a/<cr><any>  /a/<cr><any>
1994    
1995  /a/<any><crlf>  /a/<any><crlf>
1996    
1997  /^a\Rb/  /^a\Rb/<bsr_unicode>
1998      a\nb      a\nb
1999      a\rb      a\rb
2000      a\r\nb      a\r\nb
# Line 2009  a random value. /Ix Line 2004  a random value. /Ix
2004      ** Failers      ** Failers
2005      a\n\rb      a\n\rb
2006    
2007  /^a\R*b/  /^a\R*b/<bsr_unicode>
2008      ab      ab
2009      a\nb      a\nb
2010      a\rb      a\rb
# Line 2020  a random value. /Ix Line 2015  a random value. /Ix
2015      a\n\rb      a\n\rb
2016      a\n\r\x85\x0cb      a\n\r\x85\x0cb
2017    
2018  /^a\R+b/  /^a\R+b/<bsr_unicode>
2019      a\nb      a\nb
2020      a\rb      a\rb
2021      a\r\nb      a\r\nb
# Line 2032  a random value. /Ix Line 2027  a random value. /Ix
2027      ** Failers      ** Failers
2028      ab      ab
2029    
2030  /^a\R{1,3}b/  /^a\R{1,3}b/<bsr_unicode>
2031      a\nb      a\nb
2032      a\n\rb      a\n\rb
2033      a\n\r\x85b      a\n\r\x85b
# Line 2044  a random value. /Ix Line 2039  a random value. /Ix
2039      a\n\n\n\rb      a\n\n\n\rb
2040      a\r      a\r
2041    
2042  /^a[\R]b/  /^a[\R]b/<bsr_unicode>
2043      aRb      aRb
2044      ** Failers      ** Failers
2045      a\nb      a\nb
# Line 2055  a random value. /Ix Line 2050  a random value. /Ix
2050  /(?1)X(?<abc>P)/I  /(?1)X(?<abc>P)/I
2051      abcPXP123      abcPXP123
2052    
 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/  
     1.2.3.4  
     131.111.10.206  
     10.0.0.0  
     ** Failers  
     10.6  
     455.3.4.5  
   
 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/  
     1.2.3.4  
     131.111.10.206  
     10.0.0.0  
     ** Failers  
     10.6  
     455.3.4.5  
   
2053  /(?:a(?&abc)b)*(?<abc>x)/  /(?:a(?&abc)b)*(?<abc>x)/
2054      123axbaxbaxbx456      123axbaxbaxbx456
2055      123axbaxbaxb456      123axbaxbaxb456
# Line 2092  a random value. /Ix Line 2071  a random value. /Ix
2071     defabcabcxyz     defabcabcxyz
2072     DEFabcABCXYZ     DEFabcABCXYZ
2073    
 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/  
     ababababbbabZXXXX  
   
2074  /^(a)\g-2/  /^(a)\g-2/
2075    
2076  /^(a)\g/  /^(a)\g/
# Line 2149  a random value. /Ix Line 2125  a random value. /Ix
2125      abc\r\n\r\n      abc\r\n\r\n
2126    
2127  /abc.$/mgx<anycrlf>  /abc.$/mgx<anycrlf>
2128      abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc7\x{2028} abc8\x{2029} abc9      abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x85 abc9
2129    
2130  /^X/m  /^X/m
2131      XABC      XABC
2132      ** Failers      ** Failers
2133      XABC\B      XABC\B
2134    
2135  /(ab|c)(?-1)/B  /(ab|c)(?-1)/BZ
2136      abc      abc
2137    
2138  /xy(?+1)(abc)/B  /xy(?+1)(abc)/BZ
2139      xyabcabc      xyabcabc
2140      ** Failers      ** Failers
2141      xyabc      xyabc
# Line 2172  a random value. /Ix Line 2148  a random value. /Ix
2148    
2149  /x(?+1)y/  /x(?+1)y/
2150    
2151  /^(abc)?(?(-1)X|Y)/B  /^(abc)?(?(-1)X|Y)/BZ
2152      abcX      abcX
2153      Y      Y
2154      ** Failers      ** Failers
2155      abcY      abcY
2156    
2157  /^((?(+1)X|Y)(abc))+/B  /^((?(+1)X|Y)(abc))+/BZ
2158      YabcXabc      YabcXabc
2159      YabcXabcXabc      YabcXabcXabc
2160      ** Failers      ** Failers
2161      XabcXabc      XabcXabc
2162    
2163  /(?(-1)a)/B  /(?(-1)a)/BZ
2164    
2165  /((?(-1)a))/B  /((?(-1)a))/BZ
2166    
2167  /((?(-2)a))/B  /((?(-2)a))/BZ
2168    
2169  /^(?(+1)X|Y)/B  /^(?(+1)X|Y)(.)/BZ
2170      Y      Y!
2171    
2172    /(?<A>tom|bon)-\k{A}/
2173        tom-tom
2174        bon-bon
2175        ** Failers
2176        tom-bon
2177    
2178    /\g{A/
2179    
2180    /(?|(abc)|(xyz))/BZ
2181       >abc<
2182       >xyz<
2183    
2184    /(x)(?|(abc)|(xyz))(x)/BZ
2185        xabcx
2186        xxyzx
2187    
2188    /(x)(?|(abc)(pqr)|(xyz))(x)/BZ
2189        xabcpqrx
2190        xxyzx
2191    
2192    /[\h]/BZ
2193        >\x09<
2194    
2195    /[\h]+/BZ
2196        >\x09\x20\xa0<
2197    
2198    /[\v]/BZ
2199    
2200    /[\H]/BZ
2201    
2202    /[^\h]/BZ
2203    
2204    /[\V]/BZ
2205    
2206    /[\x0a\V]/BZ
2207    
2208    /\H++X/BZ
2209        ** Failers
2210        XXXX
2211    
2212    /\H+\hY/BZ
2213        XXXX Y
2214    
2215    /\H+ Y/BZ
2216    
2217    /\h+A/BZ
2218    
2219    /\v*B/BZ
2220    
2221  /(foo)\Kbar/  /\V+\x0a/BZ
2222      foobar  
2223    /A+\h/BZ
2224    
2225    / *\H/BZ
2226    
2227    /A*\v/BZ
2228    
2229    /\x0b*\V/BZ
2230    
2231    /\d+\h/BZ
2232    
2233    /\d*\v/BZ
2234    
2235    /S+\h\S+\v/BZ
2236    
2237    /\w{3,}\h\w+\v/BZ
2238    
2239    /\h+\d\h+\w\h+\S\h+\H/BZ
2240    
2241    /\v+\d\v+\w\v+\S\v+\V/BZ
2242    
2243    /\H+\h\H+\d/BZ
2244    
2245    /\V+\v\V+\w/BZ
2246    
2247    /\( (?: [^()]* | (?R) )* \)/x
2248    (0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(0(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)
2249    
2250    /[\E]AAA/
2251    
2252    /[\Q\E]AAA/
2253    
2254    /[^\E]AAA/
2255    
2256    /[^\Q\E]AAA/
2257    
2258    /[\E^]AAA/
2259    
2260    /[\Q\E^]AAA/
2261    
2262    /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
2263    
2264    /^a+(*FAIL)/C
2265        aaaaaa
2266    
2267    /a+b?c+(*FAIL)/C
2268        aaabccc
2269    
2270    /a+b?(*PRUNE)c+(*FAIL)/C
2271        aaabccc
2272    
2273    /a+b?(*COMMIT)c+(*FAIL)/C
2274        aaabccc
2275    
2276    /a+b?(*SKIP)c+(*FAIL)/C
2277        aaabcccaaabccc
2278    
2279    /a+b?(*THEN)c+(*FAIL)/C
2280        aaabccc
2281    
2282    /a(*MARK)b/
2283    
2284    /(?i:A{1,}\6666666666)/
2285    
2286    /\g6666666666/
2287    
2288    /[\g6666666666]/
2289    
2290    /(?1)\c[/
2291    
2292    /.+A/<crlf>
2293        \r\nA
2294    
2295    /\nA/<crlf>
2296        \r\nA
2297    
2298    /[\r\n]A/<crlf>
2299        \r\nA
2300    
2301    /(\r|\n)A/<crlf>
2302        \r\nA
2303    
2304    /a(*CR)b/
2305    
2306    /(*CR)a.b/
2307        a\nb
2308        ** Failers
2309        a\rb
2310    
2311    /(*CR)a.b/<lf>
2312        a\nb
2313        ** Failers
2314        a\rb
2315    
2316    /(*LF)a.b/<CRLF>
2317        a\rb
2318        ** Failers
2319        a\nb
2320    
2321    /(*CRLF)a.b/
2322        a\rb
2323        a\nb
2324        ** Failers
2325        a\r\nb
2326    
2327    /(*ANYCRLF)a.b/<CR>
2328        ** Failers
2329        a\rb
2330        a\nb
2331        a\r\nb
2332    
2333    /(*ANY)a.b/<cr>
2334        ** Failers
2335        a\rb
2336        a\nb
2337        a\r\nb
2338        a\x85b
2339    
2340    /a\Rb/I<bsr_anycrlf>
2341        a\rb
2342        a\nb
2343        a\r\nb
2344        ** Failers
2345        a\x85b
2346        a\x0bb
2347    
2348    /a\Rb/I<bsr_unicode>
2349        a\rb
2350        a\nb
2351        a\r\nb
2352        a\x85b
2353        a\x0bb
2354        ** Failers
2355        a\x85b\<bsr_anycrlf>
2356        a\x0bb\<bsr_anycrlf>
2357    
2358    /a\R?b/I<bsr_anycrlf>
2359        a\rb
2360        a\nb
2361        a\r\nb
2362        ** Failers
2363        a\x85b
2364        a\x0bb
2365    
2366    /a\R?b/I<bsr_unicode>
2367        a\rb
2368        a\nb
2369        a\r\nb
2370        a\x85b
2371        a\x0bb
2372        ** Failers
2373        a\x85b\<bsr_anycrlf>
2374        a\x0bb\<bsr_anycrlf>
2375    
2376    /a\R{2,4}b/I<bsr_anycrlf>
2377        a\r\n\nb
2378        a\n\r\rb
2379        a\r\n\r\n\r\n\r\nb
2380        ** Failers
2381        a\x85\85b
2382        a\x0b\0bb
2383    
2384    /a\R{2,4}b/I<bsr_unicode>
2385        a\r\rb
2386        a\n\n\nb
2387        a\r\n\n\r\rb
2388        a\x85\85b
2389        a\x0b\0bb
2390        ** Failers
2391        a\r\r\r\r\rb
2392        a\x85\85b\<bsr_anycrlf>
2393        a\x0b\0bb\<bsr_anycrlf>
2394    
2395    /(*BSR_ANYCRLF)a\Rb/I
2396        a\nb
2397        a\rb
2398    
2399    /(*BSR_UNICODE)a\Rb/I
2400        a\x85b
2401    
2402    /(*BSR_ANYCRLF)(*CRLF)a\Rb/I
2403        a\nb
2404        a\rb
2405    
2406    /(*CRLF)(*BSR_UNICODE)a\Rb/I
2407        a\x85b
2408    
2409    /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
2410    
2411    /(?<a>)(?&)/
2412    
2413    /(?<abc>)(?&a)/
2414    
2415    /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
2416    
2417    /(?+-a)/
2418    
2419    /(?-+a)/
2420    
2421    /(?(-1))/
2422    
2423    /(?(+10))/
2424    
2425    /(?(10))/
2426    
2427    /(?(+2))()()/
2428    
2429    /(?(2))()()/
2430    
2431    /\k''/
2432    
2433    /\k<>/
2434    
2435    /\k{}/
2436    
2437    /(?P=)/
2438    
2439    /(?P>)/
2440    
2441    /(?!\w)(?R)/
2442    
2443    /(?=\w)(?R)/
2444    
2445    /(?<!\w)(?R)/
2446    
2447    /(?<=\w)(?R)/
2448    
2449    /[[:foo:]]/
2450    
2451    /[[:1234:]]/
2452    
2453    /[[:f\oo:]]/
2454    
2455    /[[: :]]/
2456    
2457    /[[:...:]]/
2458    
2459    /[[:l\ower:]]/
2460    
2461    /[[:abc\:]]/
2462    
2463    /[abc[:x\]pqr:]]/
2464    
2465    /[[:a\dz:]]/
2466    
2467    /(^(a|b\g<-1'c))/
2468    
2469    /^(?+1)(?<a>x|y){0}z/
2470        xzxx
2471        yzyy
2472        ** Failers
2473        xxz
2474    
2475    /(\3)(\1)(a)/
2476        cat
2477    
2478    /(\3)(\1)(a)/<JS>
2479        cat
2480    
2481    /TA]/
2482        The ACTA] comes
2483    
2484    /TA]/<JS>
2485        The ACTA] comes
2486    
2487    /(?2)[]a()b](abc)/
2488        abcbabc
2489    
2490    /(?2)[^]a()b](abc)/
2491        abcbabc
2492    
2493    /(?1)[]a()b](abc)/
2494        abcbabc
2495        ** Failers
2496        abcXabc
2497    
2498    /(?1)[^]a()b](abc)/
2499        abcXabc
2500        ** Failers
2501        abcbabc
2502    
2503    /(?2)[]a()b](abc)(xyz)/
2504        xyzbabcxyz
2505    
2506    /(?&N)[]a(?<N>)](?<M>abc)/
2507       abc<abc
2508    
2509    /(?&N)[]a(?<N>)](abc)/
2510       abc<abc
2511    
2512    /a[]b/
2513    
2514    /a[^]b/
2515    
2516    /a[]b/<JS>
2517        ** Failers
2518        ab
2519    
2520    /a[]+b/<JS>
2521        ** Failers
2522        ab
2523    
2524    /a[]*+b/<JS>
2525        ** Failers
2526        ab
2527    
2528    /a[^]b/<JS>
2529        aXb
2530        a\nb
2531        ** Failers
2532        ab
2533    
2534    /a[^]+b/<JS>
2535        aXb
2536        a\nX\nXb
2537        ** Failers
2538        ab
2539    
2540    /a(?!)+b/
2541    
2542    /a(*FAIL)+b/
2543    
2544    /(abc|pqr|123){0}[xyz]/SI
2545    
2546    /(?(?=.*b)b|^)/CI
2547       adc
2548       abc
2549    
2550  /(foo)(\Kbar|baz)/  /(?(?=b).*b|^d)/I
2551      foobar  
2552      foobaz  /(?(?=.*b).*b|^d)/I
2553    
2554    /a?|b?/P
2555        abc
2556        ** Failers
2557        ddd\N
2558    
2559    /xyz/C
2560      xyz
2561      abcxyz
2562      abcxyz\Y
2563      ** Failers
2564      abc
2565      abc\Y
2566      abcxypqr
2567      abcxypqr\Y
2568    
2569    /^"((?(?=[a])[^"])|b)*"$/C
2570        "ab"
2571    
2572    /^"((?(?=[a])[^"])|b)*"$/
2573        "ab"
2574    
2575    /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2576        XYabcdY
2577    
2578    /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2579        XYabcdY
2580    
2581    /Xa{2,4}b/
2582        X\P
2583        Xa\P
2584        Xaa\P
2585        Xaaa\P
2586        Xaaaa\P
2587    
2588    /Xa{2,4}?b/
2589        X\P
2590        Xa\P
2591        Xaa\P
2592        Xaaa\P
2593        Xaaaa\P
2594    
2595    /Xa{2,4}+b/
2596        X\P
2597        Xa\P
2598        Xaa\P
2599        Xaaa\P
2600        Xaaaa\P
2601    
2602    /X\d{2,4}b/
2603        X\P
2604        X3\P
2605        X33\P
2606        X333\P
2607        X3333\P
2608    
2609    /X\d{2,4}?b/
2610        X\P
2611        X3\P
2612        X33\P
2613        X333\P
2614        X3333\P
2615    
2616    /X\d{2,4}+b/
2617        X\P
2618        X3\P
2619        X33\P
2620        X333\P
2621        X3333\P
2622    
2623    /X\D{2,4}b/
2624        X\P
2625        Xa\P
2626        Xaa\P
2627        Xaaa\P
2628        Xaaaa\P
2629    
2630    /X\D{2,4}?b/
2631        X\P
2632        Xa\P
2633        Xaa\P
2634        Xaaa\P
2635        Xaaaa\P
2636    
2637    /X\D{2,4}+b/
2638        X\P
2639        Xa\P
2640        Xaa\P
2641        Xaaa\P
2642        Xaaaa\P
2643    
2644    /X[abc]{2,4}b/
2645        X\P
2646        Xa\P
2647        Xaa\P
2648        Xaaa\P
2649        Xaaaa\P
2650    
2651    /X[abc]{2,4}?b/
2652        X\P
2653        Xa\P
2654        Xaa\P
2655        Xaaa\P
2656        Xaaaa\P
2657    
2658    /X[abc]{2,4}+b/
2659        X\P
2660        Xa\P
2661        Xaa\P
2662        Xaaa\P
2663        Xaaaa\P
2664    
2665    /X[^a]{2,4}b/
2666        X\P
2667        Xz\P
2668        Xzz\P
2669        Xzzz\P
2670        Xzzzz\P
2671    
2672    /X[^a]{2,4}?b/
2673        X\P
2674        Xz\P
2675        Xzz\P
2676        Xzzz\P
2677        Xzzzz\P
2678    
2679    /X[^a]{2,4}+b/
2680        X\P
2681        Xz\P
2682        Xzz\P
2683        Xzzz\P
2684        Xzzzz\P
2685    
2686    /(Y)X\1{2,4}b/
2687        YX\P
2688        YXY\P
2689        YXYY\P
2690        YXYYY\P
2691        YXYYYY\P
2692    
2693    /(Y)X\1{2,4}?b/
2694        YX\P
2695        YXY\P
2696        YXYY\P
2697        YXYYY\P
2698        YXYYYY\P
2699    
2700    /(Y)X\1{2,4}+b/
2701        YX\P
2702        YXY\P
2703        YXYY\P
2704        YXYYY\P
2705        YXYYYY\P
2706    
2707    /\++\KZ|\d+X|9+Y/
2708        ++++123999\P
2709        ++++123999Y\P
2710        ++++Z1234\P
2711    
2712    /Z(*F)/
2713        Z\P
2714        ZA\P
2715    
2716    /Z(?!)/
2717        Z\P
2718        ZA\P
2719    
2720    /dog(sbody)?/
2721        dogs\P
2722        dogs\P\P
2723    
2724    /dog(sbody)??/
2725        dogs\P
2726        dogs\P\P
2727    
2728    /dog|dogsbody/
2729        dogs\P
2730        dogs\P\P
2731    
2732    /dogsbody|dog/
2733        dogs\P
2734        dogs\P\P
2735    
2736    /\bthe cat\b/
2737        the cat\P
2738        the cat\P\P
2739    
2740    /abc/
2741       abc\P
2742       abc\P\P
2743    
2744    /\w+A/P
2745       CDAAAAB
2746    
2747    /\w+A/PU
2748       CDAAAAB
2749    
2750    /abc\K123/
2751        xyzabc123pqr
2752        xyzabc12\P
2753        xyzabc12\P\P
2754    
2755    /(?<=abc)123/
2756        xyzabc123pqr
2757        xyzabc12\P
2758        xyzabc12\P\P
2759    
2760    /\babc\b/
2761        +++abc+++
2762        +++ab\P
2763        +++ab\P\P
2764    
2765    /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2766    
2767    /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2768    
2769    /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2770    
2771    /abc\K/+
2772        abcdef
2773        abcdef\N\N
2774        xyzabcdef\N\N
2775        ** Failers
2776        abcdef\N
2777        xyzabcdef\N
2778    
2779    /^(?:(?=abc)|abc\K)/+
2780        abcdef
2781        abcdef\N\N
2782        ** Failers
2783        abcdef\N
2784    
2785    /a?b?/+
2786        xyz
2787        xyzabc
2788        xyzabc\N
2789        xyzabc\N\N
2790        xyz\N\N
2791        ** Failers
2792        xyz\N
2793    
2794    /^a?b?/+
2795        xyz
2796        xyzabc
2797        ** Failers
2798        xyzabc\N
2799        xyzabc\N\N
2800        xyz\N\N
2801        xyz\N
2802    
2803    /^(?<name>a|b\g<name>c)/
2804        aaaa
2805        bacxxx
2806        bbaccxxx
2807        bbbacccxx
2808    
2809    /^(?<name>a|b\g'name'c)/
2810        aaaa
2811        bacxxx
2812        bbaccxxx
2813        bbbacccxx
2814    
2815    /^(a|b\g<1>c)/
2816        aaaa
2817        bacxxx
2818        bbaccxxx
2819        bbbacccxx
2820    
2821    /^(a|b\g'1'c)/
2822        aaaa
2823        bacxxx
2824        bbaccxxx
2825        bbbacccxx
2826    
2827    /^(a|b\g'-1'c)/
2828        aaaa
2829        bacxxx
2830        bbaccxxx
2831        bbbacccxx
2832    
2833    /(^(a|b\g<-1>c))/
2834        aaaa
2835        bacxxx
2836        bbaccxxx
2837        bbbacccxx
2838    
2839    /(?-i:\g<name>)(?i:(?<name>a))/
2840        XaaX
2841        XAAX
2842    
2843    /(?i:\g<name>)(?-i:(?<name>a))/
2844        XaaX
2845        ** Failers
2846        XAAX
2847    
2848    /(?-i:\g<+1>)(?i:(a))/
2849        XaaX
2850        XAAX
2851    
2852    /(?=(?<regex>(?#simplesyntax)\$(?<name>[a-zA-Z_\x{7f}-\x{ff}][a-zA-Z0-9_\x{7f}-\x{ff}]*)(?:\[(?<index>[a-zA-Z0-9_\x{7f}-\x{ff}]+|\$\g<name>)\]|->\g<name>(\(.*?\))?)?|(?#simple syntax withbraces)\$\{(?:\g<name>(?<indices>\[(?:\g<index>|'(?:\\.|[^'\\])*'|"(?:\g<regex>|\\.|[^"\\])*")\])?|\g<complex>|\$\{\g<complex>\})\}|(?#complexsyntax)\{(?<complex>\$(?<segment>\g<name>(\g<indices>*|\(.*?\))?)(?:->\g<segment>)*|\$\g<complex>|\$\{\g<complex>\})\}))\{/
2853    
2854    /(?<n>a|b|c)\g<n>*/
2855       abc
2856       accccbbb
2857    
2858    /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2859        XYabcdY
2860    
2861    /(?<=b(?1)|zzz)(a)/
2862        xbaax
2863        xzzzax
2864    
2865    /(a)(?<=b\1)/
2866    
2867    /(a)(?<=b+(?1))/
2868    
2869    /(a+)(?<=b(?1))/
2870    
2871    /(a(?<=b(?1)))/
2872    
2873    /(?<=b(?1))xyz/
2874    
2875    /(?<=b(?1))xyz(b+)pqrstuvew/
2876    
2877    /(a|bc)\1/SI
2878    
2879    /(a|bc)\1{2,3}/SI
2880    
2881    /(a|bc)(?1)/SI
2882    
2883    /(a|b\1)(a|b\1)/SI
2884    
2885    /(a|b\1){2}/SI
2886    
2887    /(a|bbbb\1)(a|bbbb\1)/SI
2888    
2889    /(a|bbbb\1){2}/SI
2890    
2891    /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/SI
2892    
2893    /  (?: [\040\t] |  \(
2894    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2895    \)  )*                          # optional leading comment
2896    (?:    (?:
2897    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2898    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2899    |
2900    " (?:                      # opening quote...
2901    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2902    |                     #    or
2903    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2904    )* "  # closing quote
2905    )                    # initial word
2906    (?:  (?: [\040\t] |  \(
2907    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2908    \)  )*  \.  (?: [\040\t] |  \(
2909    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2910    \)  )*   (?:
2911    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2912    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2913    |
2914    " (?:                      # opening quote...
2915    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2916    |                     #    or
2917    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2918    )* "  # closing quote
2919    )  )* # further okay, if led by a period
2920    (?: [\040\t] |  \(
2921    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2922    \)  )*  @  (?: [\040\t] |  \(
2923    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2924    \)  )*    (?:
2925    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2926    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2927    |   \[                         # [
2928    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2929    \]                        #           ]
2930    )                           # initial subdomain
2931    (?:                                  #
2932    (?: [\040\t] |  \(
2933    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2934    \)  )*  \.                        # if led by a period...
2935    (?: [\040\t] |  \(
2936    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2937    \)  )*   (?:
2938    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2939    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2940    |   \[                         # [
2941    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2942    \]                        #           ]
2943    )                     #   ...further okay
2944    )*
2945    # address
2946    |                     #  or
2947    (?:
2948    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2949    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2950    |
2951    " (?:                      # opening quote...
2952    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2953    |                     #    or
2954    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2955    )* "  # closing quote
2956    )             # one word, optionally followed by....
2957    (?:
2958    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
2959    \(
2960    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2961    \)       |  # comments, or...
2962    
2963    " (?:                      # opening quote...
2964    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2965    |                     #    or
2966    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2967    )* "  # closing quote
2968    # quoted strings
2969    )*
2970    <  (?: [\040\t] |  \(
2971    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2972    \)  )*                     # leading <
2973    (?:  @  (?: [\040\t] |  \(
2974    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2975    \)  )*    (?:
2976    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2977    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2978    |   \[                         # [
2979    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2980    \]                        #           ]
2981    )                           # initial subdomain
2982    (?:                                  #
2983    (?: [\040\t] |  \(
2984    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2985    \)  )*  \.                        # if led by a period...
2986    (?: [\040\t] |  \(
2987    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2988    \)  )*   (?:
2989    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2990    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2991    |   \[                         # [
2992    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2993    \]                        #           ]
2994    )                     #   ...further okay
2995    )*
2996    
2997    (?:  (?: [\040\t] |  \(
2998    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2999    \)  )*  ,  (?: [\040\t] |  \(
3000    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3001    \)  )*  @  (?: [\040\t] |  \(
3002    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3003    \)  )*    (?:
3004    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3005    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3006    |   \[                         # [
3007    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3008    \]                        #           ]
3009    )                           # initial subdomain
3010    (?:                                  #
3011    (?: [\040\t] |  \(
3012    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3013    \)  )*  \.                        # if led by a period...
3014    (?: [\040\t] |  \(
3015    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3016    \)  )*   (?:
3017    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3018    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3019    |   \[                         # [
3020    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3021    \]                        #           ]
3022    )                     #   ...further okay
3023    )*
3024    )* # further okay, if led by comma
3025    :                                # closing colon
3026    (?: [\040\t] |  \(
3027    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3028    \)  )*  )? #       optional route
3029    (?:
3030    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3031    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3032    |
3033    " (?:                      # opening quote...
3034    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3035    |                     #    or
3036    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3037    )* "  # closing quote
3038    )                    # initial word
3039    (?:  (?: [\040\t] |  \(
3040    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3041    \)  )*  \.  (?: [\040\t] |  \(
3042    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3043    \)  )*   (?:
3044    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3045    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3046    |
3047    " (?:                      # opening quote...
3048    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3049    |                     #    or
3050    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3051    )* "  # closing quote
3052    )  )* # further okay, if led by a period
3053    (?: [\040\t] |  \(
3054    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3055    \)  )*  @  (?: [\040\t] |  \(
3056    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3057    \)  )*    (?:
3058    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3059    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3060    |   \[                         # [
3061    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3062    \]                        #           ]
3063    )                           # initial subdomain
3064    (?:                                  #
3065    (?: [\040\t] |  \(
3066    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3067    \)  )*  \.                        # if led by a period...
3068    (?: [\040\t] |  \(
3069    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3070    \)  )*   (?:
3071    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3072    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3073    |   \[                         # [
3074    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3075    \]                        #           ]
3076    )                     #   ...further okay
3077    )*
3078    #       address spec
3079    (?: [\040\t] |  \(
3080    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3081    \)  )*  > #                  trailing >
3082    # name and address
3083    )  (?: [\040\t] |  \(
3084    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3085    \)  )*                       # optional trailing comment
3086    /xSI
3087    
3088    /<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
3089    
3090    "(?>.*/)foo"SI
3091    
3092    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
3093    
3094    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3095    
3096    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3097    
3098    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3099     ([\"\'])?                       # find single or double quote
3100     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3101                                     # quote, otherwise match up to next space
3102    /isxSI
3103    
3104    /^(?!:)                       # colon disallowed at start
3105      (?:                         # start of item
3106        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3107        (?(1)0 | () ) )           # if null previously matched, fail; else null
3108        :                         # followed by colon
3109      ){1,7}                      # end item; 1-7 of them required
3110      [0-9a-f]{1,4} $             # final hex number at end of string
3111      (?(1)|.)                    # check that there was an empty component
3112      /xiIS
3113    
3114    /(?|(?<a>A)|(?<a>B))/I
3115        AB\Ca
3116        BA\Ca
3117    
3118    /(?|(?<a>A)|(?<b>B))/
3119    
3120    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3121        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3122        (?('quote')[a-z]+|[0-9]+)/JIx
3123        a"aaaaa
3124        b"aaaaa
3125        ** Failers
3126        b"11111
3127        a"11111
3128    
3129    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3130        abcdX
3131        eX
3132        ** Failers
3133        abcdY
3134        ey
3135    
3136    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
3137        abcdd
3138        ** Failers
3139        abcdde
3140    
3141    /abcd*/
3142        xxxxabcd\P
3143        xxxxabcd\P\P
3144    
3145    /abcd*/i
3146        xxxxabcd\P
3147        xxxxabcd\P\P
3148        XXXXABCD\P
3149        XXXXABCD\P\P
3150    
3151    /abc\d*/
3152        xxxxabc1\P
3153        xxxxabc1\P\P
3154    
3155    /(a)bc\1*/
3156        xxxxabca\P
3157        xxxxabca\P\P
3158    
3159    /abc[de]*/
3160        xxxxabcde\P
3161        xxxxabcde\P\P
3162    
3163    /-- This is not in the Perl 5.10 test because Perl seems currently to be broken
3164        and not behaving as specified in that it *does* bumpalong after hitting
3165        (*COMMIT). --/
3166    
3167    /(?1)(A(*COMMIT)|B)D/
3168        ABD
3169        XABD
3170        BAD
3171        ABXABD
3172        ** Failers
3173        ABX
3174        BAXBAD
3175    
3176    /(\3)(\1)(a)/<JS>
3177        cat
3178    
3179    /(\3)(\1)(a)/SI<JS>
3180        cat
3181    
3182    /(\3)(\1)(a)/SI
3183        cat
3184    
3185    /i(?(DEFINE)(?<s>a))/SI
3186        i
3187    
3188    /()i(?(1)a)/SI
3189        ia
3190    
3191    /(?i)a(?-i)b|c/BZ
3192        XabX
3193        XAbX
3194        CcC
3195        ** Failers
3196        XABX
3197    
3198    /(?i)a(?s)b|c/BZ
3199    
3200    /(?i)a(?s-i)b|c/BZ
3201    
3202    /^(ab(c\1)d|x){2}$/BZ
3203        xabcxd
3204    
3205    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
3206    
3207    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
3208    
3209    / -- The first four of these are not in the Perl 5.10 test because Perl
3210         documents that the use of \K in assertions is "not well defined". The
3211         last is here because Perl gives the match as "b" rather than "ab". I
3212         believe this to be a Perl bug. --/
3213    
3214    /(?=a\Kb)ab/
3215        ab
3216    
3217    /(?!a\Kb)ac/
3218        ac
3219    
3220    /^abc(?<=b\Kc)d/
3221        abcd
3222    
3223    /^abc(?<!b\Kq)d/
3224        abcd
3225    
3226    /(?>a\Kb)z|(ab)/
3227        ab
3228    
3229    /----------------------/
3230    
3231    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3232    
3233    /abc(*MARK:)pqr/
3234    
3235    /abc(*:)pqr/
3236    
3237    /abc(*FAIL:123)xyz/
3238    
3239    /--- This should, and does, fail. In Perl, it does not, which I think is a
3240         bug because replacing the B in the pattern by (B|D) does make it fail. ---/
3241    
3242    /A(*COMMIT)B/+K
3243        ACABX
3244    
3245    /--- These should be different, but in Perl 5.11 are not, which I think
3246         is a bug in Perl. ---/
3247    
3248    /A(*THEN)B|A(*THEN)C/K
3249        AC
3250    
3251    /A(*PRUNE)B|A(*PRUNE)C/K
3252        AC
3253    
3254    /--- A whole lot of tests of verbs with arguments are here rather than in test
3255         11 because Perl doesn't seem to follow its specification entirely
3256         correctly. ---/
3257    
3258    /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is
3259         not clear how Perl defines "involved in the failure of the match". ---/
3260    
3261    /^(A(*THEN:A)B|C(*THEN:B)D)/K
3262        AB
3263        CD
3264        ** Failers
3265        AC
3266        CB
3267    
3268    /--- Check the use of names for success and failure. PCRE doesn't show these
3269    names for success, though Perl does, contrary to its spec. ---/
3270    
3271    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
3272        AB
3273        CD
3274        ** Failers
3275        AC
3276        CB
3277    
3278    /--- An empty name does not pass back an empty string. It is the same as if no
3279    name were given. ---/
3280    
3281    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
3282        AB
3283        CD
3284    
3285    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
3286    
3287    /A(*PRUNE:A)B/K
3288        ACAB
3289    
3290    /(*MARK:A)(*PRUNE:B)(C|X)/K
3291        C
3292        D
3293    
3294    /(*MARK:A)(*THEN:B)(C|X)/K
3295        C
3296        D
3297    
3298    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
3299    
3300    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
3301        AAAC
3302    
3303    /--- Same --/
3304    
3305    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
3306        AAAC
3307    
3308    /--- This should fail; the SKIP advances by one, but when we get to AC, the
3309         PRUNE kills it. ---/
3310    
3311    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3312        AAAC
3313    
3314    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
3315        AAAC
3316    
3317    /--- This should fail, as a null name is the same as no name ---/
3318    
3319    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
3320        AAAC
3321    
3322    /--- This fails in PCRE, and I think that is in accordance with Perl's
3323         documentation, though in Perl it succeeds. ---/
3324    
3325    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
3326        AAAC
3327    
3328    /--- Mark names can be duplicated ---/
3329    
3330    /A(*:A)B|X(*:A)Y/K
3331        AABC
3332        XXYZ
3333    
3334    /^A(*:A)B|^X(*:A)Y/K
3335        ** Failers
3336        XAQQ
3337    
3338    /--- A check on what happens after hitting a mark and them bumping along to
3339    something that does not even start. Perl reports tags after the failures here,
3340    though it does not when the individual letters are made into something
3341    more complicated. ---/
3342    
3343    /A(*:A)B|XX(*:B)Y/K
3344        AABC
3345        XXYZ
3346        ** Failers
3347        XAQQ
3348        XAQQXZZ
3349        AXQQQ
3350        AXXQQQ
3351    
3352    /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3353    optimizations defeat this. So does the PCRE optimization unless we disable it
3354    with \Y. ---/
3355    
3356    /(*COMMIT)ABC/
3357        ABCDEFG
3358        ** Failers
3359        DEFGABC\Y
3360    
3361    /--- Repeat some tests with added studying. ---/
3362    
3363    /A(*COMMIT)B/+KS
3364        ACABX
3365    
3366    /A(*THEN)B|A(*THEN)C/KS
3367        AC
3368    
3369    /A(*PRUNE)B|A(*PRUNE)C/KS
3370        AC
3371    
3372    /^(A(*THEN:A)B|C(*THEN:B)D)/KS
3373        AB
3374        CD
3375        ** Failers
3376        AC
3377        CB
3378    
3379    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS
3380        AB
3381        CD
3382        ** Failers
3383        AC
3384        CB
3385    
3386    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS
3387        AB
3388        CD
3389    
3390    /A(*PRUNE:A)B/KS
3391        ACAB
3392    
3393    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3394        C
3395        D
3396    
3397    /(*MARK:A)(*THEN:B)(C|X)/KS
3398        C
3399        D
3400    
3401    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
3402        AAAC
3403    
3404    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
3405        AAAC
3406    
3407    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
3408        AAAC
3409    
3410    /A(*:A)A+(*SKIP)(B|Z) | AC/xKS
3411        AAAC
3412    
3413    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
3414        AAAC
3415    
3416    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
3417        AAAC
3418    
3419    /A(*:A)B|XX(*:B)Y/KS
3420        AABC
3421        XXYZ
3422        ** Failers
3423        XAQQ
3424        XAQQXZZ
3425        AXQQQ
3426        AXXQQQ
3427    
3428    /(*COMMIT)ABC/
3429        ABCDEFG
3430        ** Failers
3431        DEFGABC\Y
3432    
3433    /^(ab (c+(*THEN)cd) | xyz)/x
3434        abcccd
3435    
3436    /^(ab (c+(*PRUNE)cd) | xyz)/x
3437        abcccd
3438    
3439  /(foo\Kbar)baz/  /^(ab (c+(*FAIL)cd) | xyz)/x
3440      foobarbaz      abcccd
3441    
3442  / End of testinput2 /  /-- End of testinput2 --/

Legend:
Removed from v.168  
changed lines
  Added in v.510

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12