/[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 411 by ph10, Fri Apr 10 15:40:21 2009 UTC revision 467 by ph10, Mon Oct 19 11:43:18 2009 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 593  Line 604 
604      *** Failers      *** Failers
605      \Nabc      \Nabc
606    
607  /a*(b+)(z)(z)/IP  /a*(b+)(z)(z)/P
608      aaaabbbbzzzz      aaaabbbbzzzz
609      aaaabbbbzzzz\O0      aaaabbbbzzzz\O0
610      aaaabbbbzzzz\O1      aaaabbbbzzzz\O1
# Line 1122  Line 1133 
1133    
1134  /(a(?1)+b)/DZ  /(a(?1)+b)/DZ
1135    
 /^\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  
   
1136  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
1137      12      12
1138      (((2+2)*-3)-7)      (((2+2)*-3)-7)
# Line 1419  Line 1422 
1422      ** Failers      ** Failers
1423      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1424    
1425  /ab.cd/IP  /ab.cd/P
1426      ab-cd      ab-cd
1427      ab=cd      ab=cd
1428      ** Failers      ** Failers
1429      ab\ncd      ab\ncd
1430    
1431  /ab.cd/IPs  /ab.cd/Ps
1432      ab-cd      ab-cd
1433      ab=cd      ab=cd
1434      ab\ncd      ab\ncd
# Line 1480  Line 1483 
1483      (this)      (this)
1484      ((this))      ((this))
1485    
1486  /a(b)c/IPN  /a(b)c/PN
1487      abc      abc
1488    
1489  /a(?P<name>b)c/IPN  /a(?P<name>b)c/PN
1490      abc      abc
1491    
1492  /\x{100}/I  /\x{100}/I
# Line 1915  a random value. /Ix Line 1918  a random value. /Ix
1918  /(?=(?'abc'\w+))\k<abc>:/I  /(?=(?'abc'\w+))\k<abc>:/I
1919      abcd:      abcd:
1920    
 /(?'abc'\w+):\k<abc>{2}/  
     a:aaxyz  
     ab:ababxyz  
     ** Failers  
     a:axyz  
     ab:abxyz  
   
1921  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
1922      adaa      adaa
1923      ** Failers      ** Failers
# Line 1934  a random value. /Ix Line 1930  a random value. /Ix
1930      ** Failers      ** Failers
1931      bddd      bddd
1932    
 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x  
     abd  
     ce  
   
1933  /(?(<bc))/  /(?(<bc))/
1934    
1935  /(?(''))/  /(?(''))/
# Line 1955  a random value. /Ix Line 1947  a random value. /Ix
1947  /(?<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
1948      abcabc1Xabc2XabcXabcabc      abcabc1Xabc2XabcXabcabc
1949    
 /^(?(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  
   
1950  /^(?(DEFINE) abc | xyz ) /x  /^(?(DEFINE) abc | xyz ) /x
1951    
1952  /(?(DEFINE) abc) xyz/xI  /(?(DEFINE) abc) xyz/xI
# Line 2053  a random value. /Ix Line 2035  a random value. /Ix
2035  /(?1)X(?<abc>P)/I  /(?1)X(?<abc>P)/I
2036      abcPXP123      abcPXP123
2037    
 /(?(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  
   
2038  /(?:a(?&abc)b)*(?<abc>x)/  /(?:a(?&abc)b)*(?<abc>x)/
2039      123axbaxbaxbx456      123axbaxbaxbx456
2040      123axbaxbaxb456      123axbaxbaxb456
# Line 2090  a random value. /Ix Line 2056  a random value. /Ix
2056     defabcabcxyz     defabcabcxyz
2057     DEFabcABCXYZ     DEFabcABCXYZ
2058    
 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/  
     ababababbbabZXXXX  
   
2059  /^(a)\g-2/  /^(a)\g-2/
2060    
2061  /^(a)\g/  /^(a)\g/
# Line 2191  a random value. /Ix Line 2154  a random value. /Ix
2154  /^(?(+1)X|Y)(.)/BZ  /^(?(+1)X|Y)(.)/BZ
2155      Y!      Y!
2156    
 /(foo)\Kbar/  
     foobar  
   
 /(foo)(\Kbar|baz)/  
     foobar  
     foobaz  
   
 /(foo\Kbar)baz/  
     foobarbaz  
   
2157  /(?<A>tom|bon)-\k{A}/  /(?<A>tom|bon)-\k{A}/
2158      tom-tom      tom-tom
2159      bon-bon      bon-bon
2160      ** Failers      ** Failers
2161      tom-bon      tom-bon
2162    
 /(?<A>tom|bon)-\g{A}/  
     tom-tom  
     bon-bon  
   
2163  /\g{A/  /\g{A/
2164    
2165  /(?|(abc)|(xyz))/BZ  /(?|(abc)|(xyz))/BZ
# Line 2225  a random value. /Ix Line 2174  a random value. /Ix
2174      xabcpqrx      xabcpqrx
2175      xxyzx      xxyzx
2176    
 /(?|(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  
   
2177  /[\h]/BZ  /[\h]/BZ
2178      >\x09<      >\x09<
2179    
# Line 2341  a random value. /Ix Line 2246  a random value. /Ix
2246    
2247  /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
2248    
 /^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  
   
2249  /^a+(*FAIL)/C  /^a+(*FAIL)/C
2250      aaaaaa      aaaaaa
2251    
# Line 2589  a random value. /Ix Line 2451  a random value. /Ix
2451    
2452  /[[:a\dz:]]/  /[[:a\dz:]]/
2453    
 /^(?<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  
   
2454  /(^(a|b\g<-1'c))/  /(^(a|b\g<-1'c))/
2455    
 /(^(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  
   
2456  /^(?+1)(?<a>x|y){0}z/  /^(?+1)(?<a>x|y){0}z/
2457      xzxx      xzxx
2458      yzyy      yzyy
# Line 2755  a random value. /Ix Line 2559  a random value. /Ix
2559  /^"((?(?=[a])[^"])|b)*"$/  /^"((?(?=[a])[^"])|b)*"$/
2560      "ab"      "ab"
2561    
 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/  
     XYabcdY  
   
2562  /^X(?5)(a)(?|(b)|(q))(c)(d)Y/  /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2563      XYabcdY      XYabcdY
2564    
2565  /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/  /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2566      XYabcdY      XYabcdY
2567    
2568    /Xa{2,4}b/
2569        X\P
2570        Xa\P
2571        Xaa\P
2572        Xaaa\P
2573        Xaaaa\P
2574    
2575    /Xa{2,4}?b/
2576        X\P
2577        Xa\P
2578        Xaa\P
2579        Xaaa\P
2580        Xaaaa\P
2581    
2582    /Xa{2,4}+b/
2583        X\P
2584        Xa\P
2585        Xaa\P
2586        Xaaa\P
2587        Xaaaa\P
2588    
2589    /X\d{2,4}b/
2590        X\P
2591        X3\P
2592        X33\P
2593        X333\P
2594        X3333\P
2595    
2596    /X\d{2,4}?b/
2597        X\P
2598        X3\P
2599        X33\P
2600        X333\P
2601        X3333\P
2602    
2603    /X\d{2,4}+b/
2604        X\P
2605        X3\P
2606        X33\P
2607        X333\P
2608        X3333\P
2609    
2610    /X\D{2,4}b/
2611        X\P
2612        Xa\P
2613        Xaa\P
2614        Xaaa\P
2615        Xaaaa\P
2616    
2617    /X\D{2,4}?b/
2618        X\P
2619        Xa\P
2620        Xaa\P
2621        Xaaa\P
2622        Xaaaa\P
2623    
2624    /X\D{2,4}+b/
2625        X\P
2626        Xa\P
2627        Xaa\P
2628        Xaaa\P
2629        Xaaaa\P
2630    
2631    /X[abc]{2,4}b/
2632        X\P
2633        Xa\P
2634        Xaa\P
2635        Xaaa\P
2636        Xaaaa\P
2637    
2638    /X[abc]{2,4}?b/
2639        X\P
2640        Xa\P
2641        Xaa\P
2642        Xaaa\P
2643        Xaaaa\P
2644    
2645    /X[abc]{2,4}+b/
2646        X\P
2647        Xa\P
2648        Xaa\P
2649        Xaaa\P
2650        Xaaaa\P
2651    
2652    /X[^a]{2,4}b/
2653        X\P
2654        Xz\P
2655        Xzz\P
2656        Xzzz\P
2657        Xzzzz\P
2658    
2659    /X[^a]{2,4}?b/
2660        X\P
2661        Xz\P
2662        Xzz\P
2663        Xzzz\P
2664        Xzzzz\P
2665    
2666    /X[^a]{2,4}+b/
2667        X\P
2668        Xz\P
2669        Xzz\P
2670        Xzzz\P
2671        Xzzzz\P
2672    
2673    /(Y)X\1{2,4}b/
2674        YX\P
2675        YXY\P
2676        YXYY\P
2677        YXYYY\P
2678        YXYYYY\P
2679    
2680    /(Y)X\1{2,4}?b/
2681        YX\P
2682        YXY\P
2683        YXYY\P
2684        YXYYY\P
2685        YXYYYY\P
2686    
2687    /(Y)X\1{2,4}+b/
2688        YX\P
2689        YXY\P
2690        YXYY\P
2691        YXYYY\P
2692        YXYYYY\P
2693    
2694    /\++\KZ|\d+X|9+Y/
2695        ++++123999\P
2696        ++++123999Y\P
2697        ++++Z1234\P
2698    
2699    /Z(*F)/
2700        Z\P
2701        ZA\P
2702    
2703    /Z(?!)/
2704        Z\P
2705        ZA\P
2706    
2707    /dog(sbody)?/
2708        dogs\P
2709        dogs\P\P
2710    
2711    /dog(sbody)??/
2712        dogs\P
2713        dogs\P\P
2714    
2715    /dog|dogsbody/
2716        dogs\P
2717        dogs\P\P
2718    
2719    /dogsbody|dog/
2720        dogs\P
2721        dogs\P\P
2722    
2723    /\bthe cat\b/
2724        the cat\P
2725        the cat\P\P
2726    
2727    /abc/
2728       abc\P
2729       abc\P\P
2730    
2731    /\w+A/P
2732       CDAAAAB
2733    
2734    /\w+A/PU
2735       CDAAAAB
2736    
2737    /abc\K123/
2738        xyzabc123pqr
2739        xyzabc12\P
2740        xyzabc12\P\P
2741    
2742    /(?<=abc)123/
2743        xyzabc123pqr
2744        xyzabc12\P
2745        xyzabc12\P\P
2746    
2747    /\babc\b/
2748        +++abc+++
2749        +++ab\P
2750        +++ab\P\P
2751    
2752    /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2753    
2754    /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2755    
2756    /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2757    
2758    /abc\K/+
2759        abcdef
2760        abcdef\N\N
2761        xyzabcdef\N\N
2762        ** Failers
2763        abcdef\N
2764        xyzabcdef\N
2765    
2766    /^(?:(?=abc)|abc\K)/+
2767        abcdef
2768        abcdef\N\N
2769        ** Failers
2770        abcdef\N
2771    
2772    /a?b?/+
2773        xyz
2774        xyzabc
2775        xyzabc\N
2776        xyzabc\N\N
2777        xyz\N\N
2778        ** Failers
2779        xyz\N
2780    
2781    /^a?b?/+
2782        xyz
2783        xyzabc
2784        ** Failers
2785        xyzabc\N
2786        xyzabc\N\N
2787        xyz\N\N
2788        xyz\N
2789    
2790    /^(?<name>a|b\g<name>c)/
2791        aaaa
2792        bacxxx
2793        bbaccxxx
2794        bbbacccxx
2795    
2796    /^(?<name>a|b\g'name'c)/
2797        aaaa
2798        bacxxx
2799        bbaccxxx
2800        bbbacccxx
2801    
2802    /^(a|b\g<1>c)/
2803        aaaa
2804        bacxxx
2805        bbaccxxx
2806        bbbacccxx
2807    
2808    /^(a|b\g'1'c)/
2809        aaaa
2810        bacxxx
2811        bbaccxxx
2812        bbbacccxx
2813    
2814    /^(a|b\g'-1'c)/
2815        aaaa
2816        bacxxx
2817        bbaccxxx
2818        bbbacccxx
2819    
2820    /(^(a|b\g<-1>c))/
2821        aaaa
2822        bacxxx
2823        bbaccxxx
2824        bbbacccxx
2825    
2826    /(?-i:\g<name>)(?i:(?<name>a))/
2827        XaaX
2828        XAAX
2829    
2830    /(?i:\g<name>)(?-i:(?<name>a))/
2831        XaaX
2832        ** Failers
2833        XAAX
2834    
2835    /(?-i:\g<+1>)(?i:(a))/
2836        XaaX
2837        XAAX
2838    
2839    /(?=(?<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>\})\}))\{/
2840    
2841    /(?<n>a|b|c)\g<n>*/
2842       abc
2843       accccbbb
2844    
2845  /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/  /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2846      XYabcdY      XYabcdY
2847    
2848  /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/  /(?<=b(?1)|zzz)(a)/
2849      XYabcdY      xbaax
2850        xzzzax
2851    
2852    /(a)(?<=b\1)/
2853    
2854    /(a)(?<=b+(?1))/
2855    
2856    /(a+)(?<=b(?1))/
2857    
2858    /(a(?<=b(?1)))/
2859    
2860    /(?<=b(?1))xyz/
2861    
2862    /(?<=b(?1))xyz(b+)pqrstuvew/
2863    
2864    /(a|bc)\1/SI
2865    
2866    /(a|bc)\1{2,3}/SI
2867    
2868    /(a|bc)(?1)/SI
2869    
2870    /(a|b\1)(a|b\1)/SI
2871    
2872    /(a|b\1){2}/SI
2873    
2874    /(a|bbbb\1)(a|bbbb\1)/SI
2875    
2876    /(a|bbbb\1){2}/SI
2877    
2878    /^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
2879    
2880    /  (?: [\040\t] |  \(
2881    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2882    \)  )*                          # optional leading comment
2883    (?:    (?:
2884    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2885    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2886    |
2887    " (?:                      # opening quote...
2888    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2889    |                     #    or
2890    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2891    )* "  # closing quote
2892    )                    # initial word
2893    (?:  (?: [\040\t] |  \(
2894    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2895    \)  )*  \.  (?: [\040\t] |  \(
2896    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2897    \)  )*   (?:
2898    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2899    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2900    |
2901    " (?:                      # opening quote...
2902    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2903    |                     #    or
2904    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2905    )* "  # closing quote
2906    )  )* # further okay, if led by a period
2907    (?: [\040\t] |  \(
2908    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2909    \)  )*  @  (?: [\040\t] |  \(
2910    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2911    \)  )*    (?:
2912    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2913    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2914    |   \[                         # [
2915    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2916    \]                        #           ]
2917    )                           # initial subdomain
2918    (?:                                  #
2919    (?: [\040\t] |  \(
2920    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2921    \)  )*  \.                        # if led by a period...
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    )                     #   ...further okay
2931    )*
2932    # address
2933    |                     #  or
2934    (?:
2935    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2936    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2937    |
2938    " (?:                      # opening quote...
2939    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2940    |                     #    or
2941    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2942    )* "  # closing quote
2943    )             # one word, optionally followed by....
2944    (?:
2945    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
2946    \(
2947    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2948    \)       |  # comments, or...
2949    
2950    " (?:                      # opening quote...
2951    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2952    |                     #    or
2953    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2954    )* "  # closing quote
2955    # quoted strings
2956    )*
2957    <  (?: [\040\t] |  \(
2958    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2959    \)  )*                     # leading <
2960    (?:  @  (?: [\040\t] |  \(
2961    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2962    \)  )*    (?:
2963    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2964    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2965    |   \[                         # [
2966    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
2967    \]                        #           ]
2968    )                           # initial subdomain
2969    (?:                                  #
2970    (?: [\040\t] |  \(
2971    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2972    \)  )*  \.                        # if led by a period...
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    )                     #   ...further okay
2982    )*
2983    
2984    (?:  (?: [\040\t] |  \(
2985    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2986    \)  )*  ,  (?: [\040\t] |  \(
2987    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
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    )                           # initial subdomain
2997    (?:                                  #
2998    (?: [\040\t] |  \(
2999    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3000    \)  )*  \.                        # if led by a period...
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    )                     #   ...further okay
3010    )*
3011    )* # further okay, if led by comma
3012    :                                # closing colon
3013    (?: [\040\t] |  \(
3014    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3015    \)  )*  )? #       optional route
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    " (?:                      # opening quote...
3021    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3022    |                     #    or
3023    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3024    )* "  # closing quote
3025    )                    # initial word
3026    (?:  (?: [\040\t] |  \(
3027    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3028    \)  )*  \.  (?: [\040\t] |  \(
3029    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3030    \)  )*   (?:
3031    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3032    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3033    |
3034    " (?:                      # opening quote...
3035    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3036    |                     #    or
3037    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3038    )* "  # closing quote
3039    )  )* # further okay, if led by a period
3040    (?: [\040\t] |  \(
3041    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3042    \)  )*  @  (?: [\040\t] |  \(
3043    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3044    \)  )*    (?:
3045    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3046    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3047    |   \[                         # [
3048    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3049    \]                        #           ]
3050    )                           # initial subdomain
3051    (?:                                  #
3052    (?: [\040\t] |  \(
3053    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3054    \)  )*  \.                        # if led by a period...
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    )                     #   ...further okay
3064    )*
3065    #       address spec
3066    (?: [\040\t] |  \(
3067    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3068    \)  )*  > #                  trailing >
3069    # name and address
3070    )  (?: [\040\t] |  \(
3071    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3072    \)  )*                       # optional trailing comment
3073    /xSI
3074    
3075    /<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
3076    
3077    "(?>.*/)foo"SI
3078    
3079    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
3080    
3081    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3082    
3083    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3084    
3085    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3086     ([\"\'])?                       # find single or double quote
3087     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3088                                     # quote, otherwise match up to next space
3089    /isxSI
3090    
3091    /^(?!:)                       # colon disallowed at start
3092      (?:                         # start of item
3093        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3094        (?(1)0 | () ) )           # if null previously matched, fail; else null
3095        :                         # followed by colon
3096      ){1,7}                      # end item; 1-7 of them required
3097      [0-9a-f]{1,4} $             # final hex number at end of string
3098      (?(1)|.)                    # check that there was an empty component
3099      /xiIS
3100    
3101    /(?|(?<a>A)|(?<a>B))/I
3102        AB\Ca
3103        BA\Ca
3104    
3105    /(?|(?<a>A)|(?<b>B))/
3106    
3107    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3108        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3109        (?('quote')[a-z]+|[0-9]+)/JIx
3110        a"aaaaa
3111        b"aaaaa
3112        ** Failers
3113        b"11111
3114        a"11111
3115    
3116    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3117        abcdX
3118        eX
3119        ** Failers
3120        abcdY
3121        ey
3122    
3123    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
3124        abcdd
3125        ** Failers
3126        abcdde
3127    
3128  /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/  /abcd*/
3129      XYabcdY      xxxxabcd\P
3130        xxxxabcd\P\P
3131    
3132    /abcd*/i
3133        xxxxabcd\P
3134        xxxxabcd\P\P
3135        XXXXABCD\P
3136        XXXXABCD\P\P
3137    
3138    /abc\d*/
3139        xxxxabc1\P
3140        xxxxabc1\P\P
3141    
3142    /(a)bc\1*/
3143        xxxxabca\P
3144        xxxxabca\P\P
3145    
3146    /abc[de]*/
3147        xxxxabcde\P
3148        xxxxabcde\P\P
3149    
3150    /-- This is not in the Perl 5.10 test because Perl seems currently to be broken
3151        and not behaving as specified in that it *does* bumpalong after hitting
3152        (*COMMIT). --/
3153    
3154    /(?1)(A(*COMMIT)|B)D/
3155        ABD
3156        XABD
3157        BAD
3158        ABXABD
3159        ** Failers
3160        ABX
3161        BAXBAD
3162    
3163    /(\3)(\1)(a)/<JS>
3164        cat
3165    
3166    /(\3)(\1)(a)/SI<JS>
3167        cat
3168    
3169    /(\3)(\1)(a)/SI
3170        cat
3171    
3172  / End of testinput2 /  /-- End of testinput2 --/

Legend:
Removed from v.411  
changed lines
  Added in v.467

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12