/[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 438 by ph10, Sun Sep 6 20:00:47 2009 UTC revision 461 by ph10, Mon Oct 5 10:59:35 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 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 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    
 /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/  
     XYabcdY  
   
 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/  
     XYabcdY  
   
 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/  
     XYabcdY  
   
2568  /Xa{2,4}b/  /Xa{2,4}b/
2569      X\P      X\P
2570      Xa\P      Xa\P
# Line 2961  a random value. /Ix Line 2753  a random value. /Ix
2753    
2754  /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ  /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2755    
2756  / End of testinput2 /  /(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)/
2846        XYabcdY
2847    
2848    /(?<=b(?1)|zzz)(a)/
2849        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    /-- End of testinput2 --/

Legend:
Removed from v.438  
changed lines
  Added in v.461

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12