/[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 353 by ph10, Mon Jul 7 15:44:24 2008 UTC revision 504 by ph10, Mon Mar 8 08:57:04 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 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 593  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 1122  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 1419  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 1480  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 1915  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 1934  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 1955  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 1988  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    
# Line 2053  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 2090  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 2147  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
# Line 2191  a random value. /Ix Line 2169  a random value. /Ix
2169  /^(?(+1)X|Y)(.)/BZ  /^(?(+1)X|Y)(.)/BZ
2170      Y!      Y!
2171    
 /(foo)\Kbar/  
     foobar  
   
 /(foo)(\Kbar|baz)/  
     foobar  
     foobaz  
   
 /(foo\Kbar)baz/  
     foobarbaz  
   
2172  /(?<A>tom|bon)-\k{A}/  /(?<A>tom|bon)-\k{A}/
2173      tom-tom      tom-tom
2174      bon-bon      bon-bon
2175      ** Failers      ** Failers
2176      tom-bon      tom-bon
2177    
 /(?<A>tom|bon)-\g{A}/  
     tom-tom  
     bon-bon  
   
2178  /\g{A/  /\g{A/
2179    
2180  /(?|(abc)|(xyz))/BZ  /(?|(abc)|(xyz))/BZ
# Line 2225  a random value. /Ix Line 2189  a random value. /Ix
2189      xabcpqrx      xabcpqrx
2190      xxyzx      xxyzx
2191    
 /(?|(abc)|(xyz))\1/  
     abcabc  
     xyzxyz  
     ** Failers  
     abcxyz  
     xyzabc  
   
 /(?|(abc)|(xyz))(?1)/  
     abcabc  
     xyzabc  
     ** Failers  
     xyzxyz  
   
 /\H\h\V\v/  
     X X\x0a  
     X\x09X\x0b  
     ** Failers  
     \xa0 X\x0a  
   
 /\H*\h+\V?\v{3,4}/  
     \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a  
     \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a  
     \x09\x20\xa0\x0a\x0b\x0c  
     ** Failers  
     \x09\x20\xa0\x0a\x0b  
   
 /\H{3,4}/  
     XY  ABCDE  
     XY  PQR ST  
   
 /.\h{3,4}./  
     XY  AB    PQRS  
   
 /\h*X\h?\H+Y\H?Z/  
     >XNNNYZ  
     >  X NYQZ  
     ** Failers  
     >XYZ  
     >  X NY Z  
   
 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/  
     >XY\x0aZ\x0aA\x0bNN\x0c  
     >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c  
   
2192  /[\h]/BZ  /[\h]/BZ
2193      >\x09<      >\x09<
2194    
# Line 2341  a random value. /Ix Line 2261  a random value. /Ix
2261    
2262  /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ  /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/BZ
2263    
 /^a+(*FAIL)/  
     aaaaaa  
   
 /a+b?c+(*FAIL)/  
     aaabccc  
   
 /a+b?(*PRUNE)c+(*FAIL)/  
     aaabccc  
   
 /a+b?(*COMMIT)c+(*FAIL)/  
     aaabccc  
   
 /a+b?(*SKIP)c+(*FAIL)/  
     aaabcccaaabccc  
   
 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/  
     aaaxxxxxx  
     aaa++++++  
     bbbxxxxx  
     bbb+++++  
     cccxxxx  
     ccc++++  
     dddddddd  
   
 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/  
     aaaxxxxxx  
     aaa++++++  
     bbbxxxxx  
     bbb+++++  
     cccxxxx  
     ccc++++  
     dddddddd  
   
 /a+b?(*THEN)c+(*FAIL)/  
     aaabccc  
   
 /(A (A|B(*ACCEPT)|C) D)(E)/x  
     ABX  
     AADE  
     ACDE  
     ** Failers  
     AD  
   
2264  /^a+(*FAIL)/C  /^a+(*FAIL)/C
2265      aaaaaa      aaaaaa
2266    
# Line 2589  a random value. /Ix Line 2466  a random value. /Ix
2466    
2467  /[[:a\dz:]]/  /[[:a\dz:]]/
2468    
 /^(?<name>a|b\g<name>c)/  
     aaaa  
     bacxxx  
     bbaccxxx  
     bbbacccxx  
   
 /^(?<name>a|b\g'name'c)/  
     aaaa  
     bacxxx  
     bbaccxxx  
     bbbacccxx  
   
 /^(a|b\g<1>c)/  
     aaaa  
     bacxxx  
     bbaccxxx  
     bbbacccxx  
   
 /^(a|b\g'1'c)/  
     aaaa  
     bacxxx  
     bbaccxxx  
     bbbacccxx  
   
 /^(a|b\g'-1'c)/  
     aaaa  
     bacxxx  
     bbaccxxx  
     bbbacccxx  
   
 /(^(a|b\g<-1>c))/  
     aaaa  
     bacxxx  
     bbaccxxx  
     bbbacccxx  
   
2469  /(^(a|b\g<-1'c))/  /(^(a|b\g<-1'c))/
2470    
 /(^(a|b\g{-1}))/  
     bacxxx  
   
 /(?-i:\g<name>)(?i:(?<name>a))/  
     XaaX  
     XAAX  
   
 /(?i:\g<name>)(?-i:(?<name>a))/  
     XaaX  
     ** Failers  
     XAAX  
   
 /(?-i:\g<+1>)(?i:(a))/  
     XaaX  
     XAAX  
   
 /(?=(?<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>\})\}))\{/  
   
 /(?<n>a|b|c)\g<n>*/  
    abc  
    accccbbb  
   
2471  /^(?+1)(?<a>x|y){0}z/  /^(?+1)(?<a>x|y){0}z/
2472      xzxx      xzxx
2473      yzyy      yzyy
# Line 2726  a random value. /Ix Line 2545  a random value. /Ix
2545    
2546  /(abc|pqr|123){0}[xyz]/SI  /(abc|pqr|123){0}[xyz]/SI
2547    
2548  / End of testinput2 /  /(?(?=.*b)b|^)/CI
2549       adc
2550       abc
2551    
2552    /(?(?=b).*b|^d)/I
2553    
2554    /(?(?=.*b).*b|^d)/I
2555    
2556    /a?|b?/P
2557        abc
2558        ** Failers
2559        ddd\N
2560    
2561    /xyz/C
2562      xyz
2563      abcxyz
2564      abcxyz\Y
2565      ** Failers
2566      abc
2567      abc\Y
2568      abcxypqr
2569      abcxypqr\Y
2570    
2571    /^"((?(?=[a])[^"])|b)*"$/C
2572        "ab"
2573    
2574    /^"((?(?=[a])[^"])|b)*"$/
2575        "ab"
2576    
2577    /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2578        XYabcdY
2579    
2580    /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2581        XYabcdY
2582    
2583    /Xa{2,4}b/
2584        X\P
2585        Xa\P
2586        Xaa\P
2587        Xaaa\P
2588        Xaaaa\P
2589    
2590    /Xa{2,4}?b/
2591        X\P
2592        Xa\P
2593        Xaa\P
2594        Xaaa\P
2595        Xaaaa\P
2596    
2597    /Xa{2,4}+b/
2598        X\P
2599        Xa\P
2600        Xaa\P
2601        Xaaa\P
2602        Xaaaa\P
2603    
2604    /X\d{2,4}b/
2605        X\P
2606        X3\P
2607        X33\P
2608        X333\P
2609        X3333\P
2610    
2611    /X\d{2,4}?b/
2612        X\P
2613        X3\P
2614        X33\P
2615        X333\P
2616        X3333\P
2617    
2618    /X\d{2,4}+b/
2619        X\P
2620        X3\P
2621        X33\P
2622        X333\P
2623        X3333\P
2624    
2625    /X\D{2,4}b/
2626        X\P
2627        Xa\P
2628        Xaa\P
2629        Xaaa\P
2630        Xaaaa\P
2631    
2632    /X\D{2,4}?b/
2633        X\P
2634        Xa\P
2635        Xaa\P
2636        Xaaa\P
2637        Xaaaa\P
2638    
2639    /X\D{2,4}+b/
2640        X\P
2641        Xa\P
2642        Xaa\P
2643        Xaaa\P
2644        Xaaaa\P
2645    
2646    /X[abc]{2,4}b/
2647        X\P
2648        Xa\P
2649        Xaa\P
2650        Xaaa\P
2651        Xaaaa\P
2652    
2653    /X[abc]{2,4}?b/
2654        X\P
2655        Xa\P
2656        Xaa\P
2657        Xaaa\P
2658        Xaaaa\P
2659    
2660    /X[abc]{2,4}+b/
2661        X\P
2662        Xa\P
2663        Xaa\P
2664        Xaaa\P
2665        Xaaaa\P
2666    
2667    /X[^a]{2,4}b/
2668        X\P
2669        Xz\P
2670        Xzz\P
2671        Xzzz\P
2672        Xzzzz\P
2673    
2674    /X[^a]{2,4}?b/
2675        X\P
2676        Xz\P
2677        Xzz\P
2678        Xzzz\P
2679        Xzzzz\P
2680    
2681    /X[^a]{2,4}+b/
2682        X\P
2683        Xz\P
2684        Xzz\P
2685        Xzzz\P
2686        Xzzzz\P
2687    
2688    /(Y)X\1{2,4}b/
2689        YX\P
2690        YXY\P
2691        YXYY\P
2692        YXYYY\P
2693        YXYYYY\P
2694    
2695    /(Y)X\1{2,4}?b/
2696        YX\P
2697        YXY\P
2698        YXYY\P
2699        YXYYY\P
2700        YXYYYY\P
2701    
2702    /(Y)X\1{2,4}+b/
2703        YX\P
2704        YXY\P
2705        YXYY\P
2706        YXYYY\P
2707        YXYYYY\P
2708    
2709    /\++\KZ|\d+X|9+Y/
2710        ++++123999\P
2711        ++++123999Y\P
2712        ++++Z1234\P
2713    
2714    /Z(*F)/
2715        Z\P
2716        ZA\P
2717    
2718    /Z(?!)/
2719        Z\P
2720        ZA\P
2721    
2722    /dog(sbody)?/
2723        dogs\P
2724        dogs\P\P
2725    
2726    /dog(sbody)??/
2727        dogs\P
2728        dogs\P\P
2729    
2730    /dog|dogsbody/
2731        dogs\P
2732        dogs\P\P
2733    
2734    /dogsbody|dog/
2735        dogs\P
2736        dogs\P\P
2737    
2738    /\bthe cat\b/
2739        the cat\P
2740        the cat\P\P
2741    
2742    /abc/
2743       abc\P
2744       abc\P\P
2745    
2746    /\w+A/P
2747       CDAAAAB
2748    
2749    /\w+A/PU
2750       CDAAAAB
2751    
2752    /abc\K123/
2753        xyzabc123pqr
2754        xyzabc12\P
2755        xyzabc12\P\P
2756    
2757    /(?<=abc)123/
2758        xyzabc123pqr
2759        xyzabc12\P
2760        xyzabc12\P\P
2761    
2762    /\babc\b/
2763        +++abc+++
2764        +++ab\P
2765        +++ab\P\P
2766    
2767    /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2768    
2769    /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2770    
2771    /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2772    
2773    /abc\K/+
2774        abcdef
2775        abcdef\N\N
2776        xyzabcdef\N\N
2777        ** Failers
2778        abcdef\N
2779        xyzabcdef\N
2780    
2781    /^(?:(?=abc)|abc\K)/+
2782        abcdef
2783        abcdef\N\N
2784        ** Failers
2785        abcdef\N
2786    
2787    /a?b?/+
2788        xyz
2789        xyzabc
2790        xyzabc\N
2791        xyzabc\N\N
2792        xyz\N\N
2793        ** Failers
2794        xyz\N
2795    
2796    /^a?b?/+
2797        xyz
2798        xyzabc
2799        ** Failers
2800        xyzabc\N
2801        xyzabc\N\N
2802        xyz\N\N
2803        xyz\N
2804    
2805    /^(?<name>a|b\g<name>c)/
2806        aaaa
2807        bacxxx
2808        bbaccxxx
2809        bbbacccxx
2810    
2811    /^(?<name>a|b\g'name'c)/
2812        aaaa
2813        bacxxx
2814        bbaccxxx
2815        bbbacccxx
2816    
2817    /^(a|b\g<1>c)/
2818        aaaa
2819        bacxxx
2820        bbaccxxx
2821        bbbacccxx
2822    
2823    /^(a|b\g'1'c)/
2824        aaaa
2825        bacxxx
2826        bbaccxxx
2827        bbbacccxx
2828    
2829    /^(a|b\g'-1'c)/
2830        aaaa
2831        bacxxx
2832        bbaccxxx
2833        bbbacccxx
2834    
2835    /(^(a|b\g<-1>c))/
2836        aaaa
2837        bacxxx
2838        bbaccxxx
2839        bbbacccxx
2840    
2841    /(?-i:\g<name>)(?i:(?<name>a))/
2842        XaaX
2843        XAAX
2844    
2845    /(?i:\g<name>)(?-i:(?<name>a))/
2846        XaaX
2847        ** Failers
2848        XAAX
2849    
2850    /(?-i:\g<+1>)(?i:(a))/
2851        XaaX
2852        XAAX
2853    
2854    /(?=(?<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>\})\}))\{/
2855    
2856    /(?<n>a|b|c)\g<n>*/
2857       abc
2858       accccbbb
2859    
2860    /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2861        XYabcdY
2862    
2863    /(?<=b(?1)|zzz)(a)/
2864        xbaax
2865        xzzzax
2866    
2867    /(a)(?<=b\1)/
2868    
2869    /(a)(?<=b+(?1))/
2870    
2871    /(a+)(?<=b(?1))/
2872    
2873    /(a(?<=b(?1)))/
2874    
2875    /(?<=b(?1))xyz/
2876    
2877    /(?<=b(?1))xyz(b+)pqrstuvew/
2878    
2879    /(a|bc)\1/SI
2880    
2881    /(a|bc)\1{2,3}/SI
2882    
2883    /(a|bc)(?1)/SI
2884    
2885    /(a|b\1)(a|b\1)/SI
2886    
2887    /(a|b\1){2}/SI
2888    
2889    /(a|bbbb\1)(a|bbbb\1)/SI
2890    
2891    /(a|bbbb\1){2}/SI
2892    
2893    /^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
2894    
2895    /  (?: [\040\t] |  \(
2896    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2897    \)  )*                          # optional leading comment
2898    (?:    (?:
2899    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2900    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2901    |
2902    " (?:                      # opening quote...
2903    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2904    |                     #    or
2905    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2906    )* "  # closing quote
2907    )                    # initial word
2908    (?:  (?: [\040\t] |  \(
2909    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2910    \)  )*  \.  (?: [\040\t] |  \(
2911    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2912    \)  )*   (?:
2913    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2914    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2915    |
2916    " (?:                      # opening quote...
2917    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2918    |                     #    or
2919    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2920    )* "  # closing quote
2921    )  )* # further okay, if led by a period
2922    (?: [\040\t] |  \(
2923    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2924    \)  )*  @  (?: [\040\t] |  \(
2925    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2926    \)  )*    (?:
2927    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2928    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2929    |   \[                         # [
2930    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2931    \]                        #           ]
2932    )                           # initial subdomain
2933    (?:                                  #
2934    (?: [\040\t] |  \(
2935    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2936    \)  )*  \.                        # if led by a period...
2937    (?: [\040\t] |  \(
2938    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2939    \)  )*   (?:
2940    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2941    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2942    |   \[                         # [
2943    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2944    \]                        #           ]
2945    )                     #   ...further okay
2946    )*
2947    # address
2948    |                     #  or
2949    (?:
2950    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2951    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2952    |
2953    " (?:                      # opening quote...
2954    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2955    |                     #    or
2956    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2957    )* "  # closing quote
2958    )             # one word, optionally followed by....
2959    (?:
2960    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
2961    \(
2962    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2963    \)       |  # comments, or...
2964    
2965    " (?:                      # opening quote...
2966    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2967    |                     #    or
2968    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2969    )* "  # closing quote
2970    # quoted strings
2971    )*
2972    <  (?: [\040\t] |  \(
2973    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2974    \)  )*                     # leading <
2975    (?:  @  (?: [\040\t] |  \(
2976    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2977    \)  )*    (?:
2978    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2979    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2980    |   \[                         # [
2981    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2982    \]                        #           ]
2983    )                           # initial subdomain
2984    (?:                                  #
2985    (?: [\040\t] |  \(
2986    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2987    \)  )*  \.                        # if led by a period...
2988    (?: [\040\t] |  \(
2989    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2990    \)  )*   (?:
2991    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2992    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2993    |   \[                         # [
2994    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2995    \]                        #           ]
2996    )                     #   ...further okay
2997    )*
2998    
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    \)  )*  @  (?: [\040\t] |  \(
3004    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3005    \)  )*    (?:
3006    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3007    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3008    |   \[                         # [
3009    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3010    \]                        #           ]
3011    )                           # initial subdomain
3012    (?:                                  #
3013    (?: [\040\t] |  \(
3014    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3015    \)  )*  \.                        # if led by a period...
3016    (?: [\040\t] |  \(
3017    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3018    \)  )*   (?:
3019    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3020    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3021    |   \[                         # [
3022    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3023    \]                        #           ]
3024    )                     #   ...further okay
3025    )*
3026    )* # further okay, if led by comma
3027    :                                # closing colon
3028    (?: [\040\t] |  \(
3029    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3030    \)  )*  )? #       optional route
3031    (?:
3032    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3033    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3034    |
3035    " (?:                      # opening quote...
3036    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3037    |                     #    or
3038    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3039    )* "  # closing quote
3040    )                    # initial word
3041    (?:  (?: [\040\t] |  \(
3042    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3043    \)  )*  \.  (?: [\040\t] |  \(
3044    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3045    \)  )*   (?:
3046    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3047    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3048    |
3049    " (?:                      # opening quote...
3050    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3051    |                     #    or
3052    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3053    )* "  # closing quote
3054    )  )* # further okay, if led by a period
3055    (?: [\040\t] |  \(
3056    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3057    \)  )*  @  (?: [\040\t] |  \(
3058    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3059    \)  )*    (?:
3060    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3061    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3062    |   \[                         # [
3063    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3064    \]                        #           ]
3065    )                           # initial subdomain
3066    (?:                                  #
3067    (?: [\040\t] |  \(
3068    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3069    \)  )*  \.                        # if led by a period...
3070    (?: [\040\t] |  \(
3071    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3072    \)  )*   (?:
3073    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3074    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3075    |   \[                         # [
3076    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3077    \]                        #           ]
3078    )                     #   ...further okay
3079    )*
3080    #       address spec
3081    (?: [\040\t] |  \(
3082    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3083    \)  )*  > #                  trailing >
3084    # name and address
3085    )  (?: [\040\t] |  \(
3086    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3087    \)  )*                       # optional trailing comment
3088    /xSI
3089    
3090    /<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
3091    
3092    "(?>.*/)foo"SI
3093    
3094    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
3095    
3096    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3097    
3098    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3099    
3100    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3101     ([\"\'])?                       # find single or double quote
3102     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3103                                     # quote, otherwise match up to next space
3104    /isxSI
3105    
3106    /^(?!:)                       # colon disallowed at start
3107      (?:                         # start of item
3108        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3109        (?(1)0 | () ) )           # if null previously matched, fail; else null
3110        :                         # followed by colon
3111      ){1,7}                      # end item; 1-7 of them required
3112      [0-9a-f]{1,4} $             # final hex number at end of string
3113      (?(1)|.)                    # check that there was an empty component
3114      /xiIS
3115    
3116    /(?|(?<a>A)|(?<a>B))/I
3117        AB\Ca
3118        BA\Ca
3119    
3120    /(?|(?<a>A)|(?<b>B))/
3121    
3122    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3123        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3124        (?('quote')[a-z]+|[0-9]+)/JIx
3125        a"aaaaa
3126        b"aaaaa
3127        ** Failers
3128        b"11111
3129        a"11111
3130    
3131    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3132        abcdX
3133        eX
3134        ** Failers
3135        abcdY
3136        ey
3137    
3138    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
3139        abcdd
3140        ** Failers
3141        abcdde
3142    
3143    /abcd*/
3144        xxxxabcd\P
3145        xxxxabcd\P\P
3146    
3147    /abcd*/i
3148        xxxxabcd\P
3149        xxxxabcd\P\P
3150        XXXXABCD\P
3151        XXXXABCD\P\P
3152    
3153    /abc\d*/
3154        xxxxabc1\P
3155        xxxxabc1\P\P
3156    
3157    /(a)bc\1*/
3158        xxxxabca\P
3159        xxxxabca\P\P
3160    
3161    /abc[de]*/
3162        xxxxabcde\P
3163        xxxxabcde\P\P
3164    
3165    /-- This is not in the Perl 5.10 test because Perl seems currently to be broken
3166        and not behaving as specified in that it *does* bumpalong after hitting
3167        (*COMMIT). --/
3168    
3169    /(?1)(A(*COMMIT)|B)D/
3170        ABD
3171        XABD
3172        BAD
3173        ABXABD
3174        ** Failers
3175        ABX
3176        BAXBAD
3177    
3178    /(\3)(\1)(a)/<JS>
3179        cat
3180    
3181    /(\3)(\1)(a)/SI<JS>
3182        cat
3183    
3184    /(\3)(\1)(a)/SI
3185        cat
3186    
3187    /i(?(DEFINE)(?<s>a))/SI
3188        i
3189    
3190    /()i(?(1)a)/SI
3191        ia
3192    
3193    /(?i)a(?-i)b|c/BZ
3194        XabX
3195        XAbX
3196        CcC
3197        ** Failers
3198        XABX
3199    
3200    /(?i)a(?s)b|c/BZ
3201    
3202    /(?i)a(?s-i)b|c/BZ
3203    
3204    /^(ab(c\1)d|x){2}$/BZ
3205        xabcxd
3206    
3207    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
3208    
3209    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
3210    
3211    / -- The first four of these are not in the Perl 5.10 test because Perl
3212         documents that the use of \K in assertions is "not well defined". The
3213         last is here because Perl gives the match as "b" rather than "ab". I
3214         believe this to be a Perl bug. --/
3215    
3216    /(?=a\Kb)ab/
3217        ab
3218    
3219    /(?!a\Kb)ac/
3220        ac
3221    
3222    /^abc(?<=b\Kc)d/
3223        abcd
3224    
3225    /^abc(?<!b\Kq)d/
3226        abcd
3227    
3228    /(?>a\Kb)z|(ab)/
3229        ab
3230    
3231    /----------------------/
3232    
3233    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3234    
3235    /-- End of testinput2 --/

Legend:
Removed from v.353  
changed lines
  Added in v.504

  ViewVC Help
Powered by ViewVC 1.1.5