/[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 247 by ph10, Mon Sep 17 09:38:32 2007 UTC revision 488 by ph10, Mon Jan 11 15:29:42 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 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    
# 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
# Line 2190  a random value. /Ix Line 2166  a random value. /Ix
2166    
2167  /((?(-2)a))/BZ  /((?(-2)a))/BZ
2168    
2169  /^(?(+1)X|Y)/BZ  /^(?(+1)X|Y)(.)/BZ
2170      Y      Y!
   
 /(foo)\Kbar/  
     foobar  
   
 /(foo)(\Kbar|baz)/  
     foobar  
     foobaz  
   
 /(foo\Kbar)baz/  
     foobarbaz  
2171    
2172  /(?<A>tom|bon)-\k{A}/  /(?<A>tom|bon)-\k{A}/
2173      tom-tom      tom-tom
# Line 2209  a random value. /Ix Line 2175  a random value. /Ix
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 2227  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 2343  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 2535  a random value. /Ix Line 2410  a random value. /Ix
2410    
2411  /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I  /(*CRLF)(*BSR_ANYCRLF)(*CR)ab/I
2412    
2413  / End of testinput2 /  /(?<a>)(?&)/
2414    
2415    /(?<abc>)(?&a)/
2416    
2417    /(?<a>)(?&aaaaaaaaaaaaaaaaaaaaaaa)/
2418    
2419    /(?+-a)/
2420    
2421    /(?-+a)/
2422    
2423    /(?(-1))/
2424    
2425    /(?(+10))/
2426    
2427    /(?(10))/
2428    
2429    /(?(+2))()()/
2430    
2431    /(?(2))()()/
2432    
2433    /\k''/
2434    
2435    /\k<>/
2436    
2437    /\k{}/
2438    
2439    /(?P=)/
2440    
2441    /(?P>)/
2442    
2443    /(?!\w)(?R)/
2444    
2445    /(?=\w)(?R)/
2446    
2447    /(?<!\w)(?R)/
2448    
2449    /(?<=\w)(?R)/
2450    
2451    /[[:foo:]]/
2452    
2453    /[[:1234:]]/
2454    
2455    /[[:f\oo:]]/
2456    
2457    /[[: :]]/
2458    
2459    /[[:...:]]/
2460    
2461    /[[:l\ower:]]/
2462    
2463    /[[:abc\:]]/
2464    
2465    /[abc[:x\]pqr:]]/
2466    
2467    /[[:a\dz:]]/
2468    
2469    /(^(a|b\g<-1'c))/
2470    
2471    /^(?+1)(?<a>x|y){0}z/
2472        xzxx
2473        yzyy
2474        ** Failers
2475        xxz
2476    
2477    /(\3)(\1)(a)/
2478        cat
2479    
2480    /(\3)(\1)(a)/<JS>
2481        cat
2482    
2483    /TA]/
2484        The ACTA] comes
2485    
2486    /TA]/<JS>
2487        The ACTA] comes
2488    
2489    /(?2)[]a()b](abc)/
2490        abcbabc
2491    
2492    /(?2)[^]a()b](abc)/
2493        abcbabc
2494    
2495    /(?1)[]a()b](abc)/
2496        abcbabc
2497        ** Failers
2498        abcXabc
2499    
2500    /(?1)[^]a()b](abc)/
2501        abcXabc
2502        ** Failers
2503        abcbabc
2504    
2505    /(?2)[]a()b](abc)(xyz)/
2506        xyzbabcxyz
2507    
2508    /(?&N)[]a(?<N>)](?<M>abc)/
2509       abc<abc
2510    
2511    /(?&N)[]a(?<N>)](abc)/
2512       abc<abc
2513    
2514    /a[]b/
2515    
2516    /a[^]b/
2517    
2518    /a[]b/<JS>
2519        ** Failers
2520        ab
2521    
2522    /a[]+b/<JS>
2523        ** Failers
2524        ab
2525    
2526    /a[]*+b/<JS>
2527        ** Failers
2528        ab
2529    
2530    /a[^]b/<JS>
2531        aXb
2532        a\nb
2533        ** Failers
2534        ab
2535    
2536    /a[^]+b/<JS>
2537        aXb
2538        a\nX\nXb
2539        ** Failers
2540        ab
2541    
2542    /a(?!)+b/
2543    
2544    /a(*FAIL)+b/
2545    
2546    /(abc|pqr|123){0}[xyz]/SI
2547    
2548    /(?(?=.*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    /-- End of testinput2 --/

Legend:
Removed from v.247  
changed lines
  Added in v.488

  ViewVC Help
Powered by ViewVC 1.1.5