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

Diff of /code/trunk/testdata/testinput1

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

revision 53 by nigel, Sat Feb 24 21:39:42 2007 UTC revision 934 by ph10, Sat Feb 25 12:30:36 2012 UTC
# Line 1  Line 1 
1    /-- This set of tests is for features that are compatible with all versions of
2        Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and
3        16-bit PCRE libraries. --/
4    
5  /the quick brown fox/  /the quick brown fox/
6      the quick brown fox      the quick brown fox
7      The quick brown FOX      The quick brown FOX
# Line 1297  Line 1301 
1301      abc      abc
1302    
1303  /^a     b  /^a     b
1304        c/x        c/x
1305      abc      abc
1306    
1307  /^(a|)\1*b/  /^(a|)\1*b/
# Line 1357  Line 1361 
1361    
1362  /^[W-c]+$/  /^[W-c]+$/
1363      WXY_^abc      WXY_^abc
1364      ***Failers      *** Failers
1365      wxy      wxy
1366    
1367  /^[W-c]+$/i  /^[W-c]+$/i
# Line 1453  Line 1457 
1457  /{4,5a}bc/  /{4,5a}bc/
1458      {4,5a}bc      {4,5a}bc
1459    
 /^a.b/  
     a\rb  
     *** Failers  
     a\nb  
   
1460  /abc$/  /abc$/
1461      abc      abc
1462      abc\n      abc\n
# Line 1473  Line 1472 
1472  /(abc)\323/  /(abc)\323/
1473      abc\xd3      abc\xd3
1474    
1475  /(abc)\500/  /(abc)\100/
1476      abc\x40      abc\x40
1477      abc\100      abc\100
1478    
1479  /(abc)\5000/  /(abc)\1000/
1480      abc\x400      abc\x400
1481      abc\x40\x30      abc\x40\x30
1482      abc\1000      abc\1000
# Line 1499  Line 1498 
1498  /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/  /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1499      abcdefghijk\12S      abcdefghijk\12S
1500    
1501  /ab\gdef/  /ab\idef/
1502      abgdef      abidef
1503    
1504  /a{0}bc/  /a{0}bc/
1505      bc      bc
# Line 1517  Line 1516 
1516  /(abc)[\1]de/  /(abc)[\1]de/
1517      abc\1de      abc\1de
1518    
1519  /a.b(?s)/  /(?s)a.b/
1520      a\nb      a\nb
1521    
1522  /^([^a])([^\b])([^c]*)([^d]{3,4})/  /^([^a])([^\b])([^c]*)([^d]{3,4})/
# Line 1935  Line 1934 
1934  /\x0{ab}/  /\x0{ab}/
1935      \0{ab}      \0{ab}
1936    
1937  / End of testinput1 /  /(A|B)*?CD/
1938        CD
1939    
1940    /(A|B)*CD/
1941        CD
1942    
1943    /(AB)*?\1/
1944        ABABAB
1945    
1946    /(AB)*\1/
1947        ABABAB
1948    
1949    /(?<!bar)foo/
1950        foo
1951        catfood
1952        arfootle
1953        rfoosh
1954        *** Failers
1955        barfoo
1956        towbarfoo
1957    
1958    /\w{3}(?<!bar)foo/
1959        catfood
1960        *** Failers
1961        foo
1962        barfoo
1963        towbarfoo
1964    
1965    /(?<=(foo)a)bar/
1966        fooabar
1967        *** Failers
1968        bar
1969        foobbar
1970    
1971    /\Aabc\z/m
1972        abc
1973        *** Failers
1974        abc\n
1975        qqq\nabc
1976        abc\nzzz
1977        qqq\nabc\nzzz
1978    
1979    "(?>.*/)foo"
1980        /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1981    
1982    "(?>.*/)foo"
1983        /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1984    
1985    /(?>(\.\d\d[1-9]?))\d+/
1986        1.230003938
1987        1.875000282
1988        *** Failers
1989        1.235
1990    
1991    /^((?>\w+)|(?>\s+))*$/
1992        now is the time for all good men to come to the aid of the party
1993        *** Failers
1994        this is not a line with only words and spaces!
1995    
1996    /(\d+)(\w)/
1997        12345a
1998        12345+
1999    
2000    /((?>\d+))(\w)/
2001        12345a
2002        *** Failers
2003        12345+
2004    
2005    /(?>a+)b/
2006        aaab
2007    
2008    /((?>a+)b)/
2009        aaab
2010    
2011    /(?>(a+))b/
2012        aaab
2013    
2014    /(?>b)+/
2015        aaabbbccc
2016    
2017    /(?>a+|b+|c+)*c/
2018        aaabbbbccccd
2019    
2020    /((?>[^()]+)|\([^()]*\))+/
2021        ((abc(ade)ufh()()x
2022    
2023    /\(((?>[^()]+)|\([^()]+\))+\)/
2024        (abc)
2025        (abc(def)xyz)
2026        *** Failers
2027        ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2028    
2029    /a(?-i)b/i
2030        ab
2031        Ab
2032        *** Failers
2033        aB
2034        AB
2035    
2036    /(a (?x)b c)d e/
2037        a bcd e
2038        *** Failers
2039        a b cd e
2040        abcd e
2041        a bcde
2042    
2043    /(a b(?x)c d (?-x)e f)/
2044        a bcde f
2045        *** Failers
2046        abcdef
2047    
2048    /(a(?i)b)c/
2049        abc
2050        aBc
2051        *** Failers
2052        abC
2053        aBC
2054        Abc
2055        ABc
2056        ABC
2057        AbC
2058    
2059    /a(?i:b)c/
2060        abc
2061        aBc
2062        *** Failers
2063        ABC
2064        abC
2065        aBC
2066    
2067    /a(?i:b)*c/
2068        aBc
2069        aBBc
2070        *** Failers
2071        aBC
2072        aBBC
2073    
2074    /a(?=b(?i)c)\w\wd/
2075        abcd
2076        abCd
2077        *** Failers
2078        aBCd
2079        abcD
2080    
2081    /(?s-i:more.*than).*million/i
2082        more than million
2083        more than MILLION
2084        more \n than Million
2085        *** Failers
2086        MORE THAN MILLION
2087        more \n than \n million
2088    
2089    /(?:(?s-i)more.*than).*million/i
2090        more than million
2091        more than MILLION
2092        more \n than Million
2093        *** Failers
2094        MORE THAN MILLION
2095        more \n than \n million
2096    
2097    /(?>a(?i)b+)+c/
2098        abc
2099        aBbc
2100        aBBc
2101        *** Failers
2102        Abc
2103        abAb
2104        abbC
2105    
2106    /(?=a(?i)b)\w\wc/
2107        abc
2108        aBc
2109        *** Failers
2110        Ab
2111        abC
2112        aBC
2113    
2114    /(?<=a(?i)b)(\w\w)c/
2115        abxxc
2116        aBxxc
2117        *** Failers
2118        Abxxc
2119        ABxxc
2120        abxxC
2121    
2122    /(?:(a)|b)(?(1)A|B)/
2123        aA
2124        bB
2125        *** Failers
2126        aB
2127        bA
2128    
2129    /^(a)?(?(1)a|b)+$/
2130        aa
2131        b
2132        bb
2133        *** Failers
2134        ab
2135    
2136    /^(?(?=abc)\w{3}:|\d\d)$/
2137        abc:
2138        12
2139        *** Failers
2140        123
2141        xyz
2142    
2143    /^(?(?!abc)\d\d|\w{3}:)$/
2144        abc:
2145        12
2146        *** Failers
2147        123
2148        xyz
2149    
2150    /(?(?<=foo)bar|cat)/
2151        foobar
2152        cat
2153        fcat
2154        focat
2155        *** Failers
2156        foocat
2157    
2158    /(?(?<!foo)cat|bar)/
2159        foobar
2160        cat
2161        fcat
2162        focat
2163        *** Failers
2164        foocat
2165    
2166    /( \( )? [^()]+ (?(1) \) |) /x
2167        abcd
2168        (abcd)
2169        the quick (abcd) fox
2170        (abcd
2171    
2172    /( \( )? [^()]+ (?(1) \) ) /x
2173        abcd
2174        (abcd)
2175        the quick (abcd) fox
2176        (abcd
2177    
2178    /^(?(2)a|(1)(2))+$/
2179        12
2180        12a
2181        12aa
2182        *** Failers
2183        1234
2184    
2185    /((?i)blah)\s+\1/
2186        blah blah
2187        BLAH BLAH
2188        Blah Blah
2189        blaH blaH
2190        *** Failers
2191        blah BLAH
2192        Blah blah
2193        blaH blah
2194    
2195    /((?i)blah)\s+(?i:\1)/
2196        blah blah
2197        BLAH BLAH
2198        Blah Blah
2199        blaH blaH
2200        blah BLAH
2201        Blah blah
2202        blaH blah
2203    
2204    /(?>a*)*/
2205        a
2206        aa
2207        aaaa
2208    
2209    /(abc|)+/
2210        abc
2211        abcabc
2212        abcabcabc
2213        xyz
2214    
2215    /([a]*)*/
2216        a
2217        aaaaa
2218    
2219    /([ab]*)*/
2220        a
2221        b
2222        ababab
2223        aaaabcde
2224        bbbb
2225    
2226    /([^a]*)*/
2227        b
2228        bbbb
2229        aaa
2230    
2231    /([^ab]*)*/
2232        cccc
2233        abab
2234    
2235    /([a]*?)*/
2236        a
2237        aaaa
2238    
2239    /([ab]*?)*/
2240        a
2241        b
2242        abab
2243        baba
2244    
2245    /([^a]*?)*/
2246        b
2247        bbbb
2248        aaa
2249    
2250    /([^ab]*?)*/
2251        c
2252        cccc
2253        baba
2254    
2255    /(?>a*)*/
2256        a
2257        aaabcde
2258    
2259    /((?>a*))*/
2260        aaaaa
2261        aabbaa
2262    
2263    /((?>a*?))*/
2264        aaaaa
2265        aabbaa
2266    
2267    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
2268        12-sep-98
2269        12-09-98
2270        *** Failers
2271        sep-12-98
2272    
2273    /(?<=(foo))bar\1/
2274        foobarfoo
2275        foobarfootling
2276        *** Failers
2277        foobar
2278        barfoo
2279    
2280    /(?i:saturday|sunday)/
2281        saturday
2282        sunday
2283        Saturday
2284        Sunday
2285        SATURDAY
2286        SUNDAY
2287        SunDay
2288    
2289    /(a(?i)bc|BB)x/
2290        abcx
2291        aBCx
2292        bbx
2293        BBx
2294        *** Failers
2295        abcX
2296        aBCX
2297        bbX
2298        BBX
2299    
2300    /^([ab](?i)[cd]|[ef])/
2301        ac
2302        aC
2303        bD
2304        elephant
2305        Europe
2306        frog
2307        France
2308        *** Failers
2309        Africa
2310    
2311    /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2312        ab
2313        aBd
2314        xy
2315        xY
2316        zebra
2317        Zambesi
2318        *** Failers
2319        aCD
2320        XY
2321    
2322    /(?<=foo\n)^bar/m
2323        foo\nbar
2324        *** Failers
2325        bar
2326        baz\nbar
2327    
2328    /(?<=(?<!foo)bar)baz/
2329        barbaz
2330        barbarbaz
2331        koobarbaz
2332        *** Failers
2333        baz
2334        foobarbaz
2335    
2336    /The cases of aaaa and aaaaaa are missed out below because Perl does things/
2337    /differently. We know that odd, and maybe incorrect, things happen with/
2338    /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
2339    
2340    /^(a\1?){4}$/
2341        a
2342        aa
2343        aaa
2344        aaaaa
2345        aaaaaaa
2346        aaaaaaaa
2347        aaaaaaaaa
2348        aaaaaaaaaa
2349        aaaaaaaaaaa
2350        aaaaaaaaaaaa
2351        aaaaaaaaaaaaa
2352        aaaaaaaaaaaaaa
2353        aaaaaaaaaaaaaaa
2354        aaaaaaaaaaaaaaaa
2355    
2356    /^(a\1?)(a\1?)(a\2?)(a\3?)$/
2357        a
2358        aa
2359        aaa
2360        aaaa
2361        aaaaa
2362        aaaaaa
2363        aaaaaaa
2364        aaaaaaaa
2365        aaaaaaaaa
2366        aaaaaaaaaa
2367        aaaaaaaaaaa
2368        aaaaaaaaaaaa
2369        aaaaaaaaaaaaa
2370        aaaaaaaaaaaaaa
2371        aaaaaaaaaaaaaaa
2372        aaaaaaaaaaaaaaaa
2373    
2374    /The following tests are taken from the Perl 5.005 test suite; some of them/
2375    /are compatible with 5.004, but I'd rather not have to sort them out./
2376    
2377    /abc/
2378        abc
2379        xabcy
2380        ababc
2381        *** Failers
2382        xbc
2383        axc
2384        abx
2385    
2386    /ab*c/
2387        abc
2388    
2389    /ab*bc/
2390        abc
2391        abbc
2392        abbbbc
2393    
2394    /.{1}/
2395        abbbbc
2396    
2397    /.{3,4}/
2398        abbbbc
2399    
2400    /ab{0,}bc/
2401        abbbbc
2402    
2403    /ab+bc/
2404        abbc
2405        *** Failers
2406        abc
2407        abq
2408    
2409    /ab{1,}bc/
2410    
2411    /ab+bc/
2412        abbbbc
2413    
2414    /ab{1,}bc/
2415        abbbbc
2416    
2417    /ab{1,3}bc/
2418        abbbbc
2419    
2420    /ab{3,4}bc/
2421        abbbbc
2422    
2423    /ab{4,5}bc/
2424        *** Failers
2425        abq
2426        abbbbc
2427    
2428    /ab?bc/
2429        abbc
2430        abc
2431    
2432    /ab{0,1}bc/
2433        abc
2434    
2435    /ab?bc/
2436    
2437    /ab?c/
2438        abc
2439    
2440    /ab{0,1}c/
2441        abc
2442    
2443    /^abc$/
2444        abc
2445        *** Failers
2446        abbbbc
2447        abcc
2448    
2449    /^abc/
2450        abcc
2451    
2452    /^abc$/
2453    
2454    /abc$/
2455        aabc
2456        *** Failers
2457        aabc
2458        aabcd
2459    
2460    /^/
2461        abc
2462    
2463    /$/
2464        abc
2465    
2466    /a.c/
2467        abc
2468        axc
2469    
2470    /a.*c/
2471        axyzc
2472    
2473    /a[bc]d/
2474        abd
2475        *** Failers
2476        axyzd
2477        abc
2478    
2479    /a[b-d]e/
2480        ace
2481    
2482    /a[b-d]/
2483        aac
2484    
2485    /a[-b]/
2486        a-
2487    
2488    /a[b-]/
2489        a-
2490    
2491    /a]/
2492        a]
2493    
2494    /a[]]b/
2495        a]b
2496    
2497    /a[^bc]d/
2498        aed
2499        *** Failers
2500        abd
2501        abd
2502    
2503    /a[^-b]c/
2504        adc
2505    
2506    /a[^]b]c/
2507        adc
2508        *** Failers
2509        a-c
2510        a]c
2511    
2512    /\ba\b/
2513        a-
2514        -a
2515        -a-
2516    
2517    /\by\b/
2518        *** Failers
2519        xy
2520        yz
2521        xyz
2522    
2523    /\Ba\B/
2524        *** Failers
2525        a-
2526        -a
2527        -a-
2528    
2529    /\By\b/
2530        xy
2531    
2532    /\by\B/
2533        yz
2534    
2535    /\By\B/
2536        xyz
2537    
2538    /\w/
2539        a
2540    
2541    /\W/
2542        -
2543        *** Failers
2544        -
2545        a
2546    
2547    /a\sb/
2548        a b
2549    
2550    /a\Sb/
2551        a-b
2552        *** Failers
2553        a-b
2554        a b
2555    
2556    /\d/
2557        1
2558    
2559    /\D/
2560        -
2561        *** Failers
2562        -
2563        1
2564    
2565    /[\w]/
2566        a
2567    
2568    /[\W]/
2569        -
2570        *** Failers
2571        -
2572        a
2573    
2574    /a[\s]b/
2575        a b
2576    
2577    /a[\S]b/
2578        a-b
2579        *** Failers
2580        a-b
2581        a b
2582    
2583    /[\d]/
2584        1
2585    
2586    /[\D]/
2587        -
2588        *** Failers
2589        -
2590        1
2591    
2592    /ab|cd/
2593        abc
2594        abcd
2595    
2596    /()ef/
2597        def
2598    
2599    /$b/
2600    
2601    /a\(b/
2602        a(b
2603    
2604    /a\(*b/
2605        ab
2606        a((b
2607    
2608    /a\\b/
2609        a\b
2610    
2611    /((a))/
2612        abc
2613    
2614    /(a)b(c)/
2615        abc
2616    
2617    /a+b+c/
2618        aabbabc
2619    
2620    /a{1,}b{1,}c/
2621        aabbabc
2622    
2623    /a.+?c/
2624        abcabc
2625    
2626    /(a+|b)*/
2627        ab
2628    
2629    /(a+|b){0,}/
2630        ab
2631    
2632    /(a+|b)+/
2633        ab
2634    
2635    /(a+|b){1,}/
2636        ab
2637    
2638    /(a+|b)?/
2639        ab
2640    
2641    /(a+|b){0,1}/
2642        ab
2643    
2644    /[^ab]*/
2645        cde
2646    
2647    /abc/
2648        *** Failers
2649        b
2650    
2651    
2652    /a*/
2653    
2654    
2655    /([abc])*d/
2656        abbbcd
2657    
2658    /([abc])*bcd/
2659        abcd
2660    
2661    /a|b|c|d|e/
2662        e
2663    
2664    /(a|b|c|d|e)f/
2665        ef
2666    
2667    /abcd*efg/
2668        abcdefg
2669    
2670    /ab*/
2671        xabyabbbz
2672        xayabbbz
2673    
2674    /(ab|cd)e/
2675        abcde
2676    
2677    /[abhgefdc]ij/
2678        hij
2679    
2680    /^(ab|cd)e/
2681    
2682    /(abc|)ef/
2683        abcdef
2684    
2685    /(a|b)c*d/
2686        abcd
2687    
2688    /(ab|ab*)bc/
2689        abc
2690    
2691    /a([bc]*)c*/
2692        abc
2693    
2694    /a([bc]*)(c*d)/
2695        abcd
2696    
2697    /a([bc]+)(c*d)/
2698        abcd
2699    
2700    /a([bc]*)(c+d)/
2701        abcd
2702    
2703    /a[bcd]*dcdcde/
2704        adcdcde
2705    
2706    /a[bcd]+dcdcde/
2707        *** Failers
2708        abcde
2709        adcdcde
2710    
2711    /(ab|a)b*c/
2712        abc
2713    
2714    /((a)(b)c)(d)/
2715        abcd
2716    
2717    /[a-zA-Z_][a-zA-Z0-9_]*/
2718        alpha
2719    
2720    /^a(bc+|b[eh])g|.h$/
2721        abh
2722    
2723    /(bc+d$|ef*g.|h?i(j|k))/
2724        effgz
2725        ij
2726        reffgz
2727        *** Failers
2728        effg
2729        bcdd
2730    
2731    /((((((((((a))))))))))/
2732        a
2733    
2734    /((((((((((a))))))))))\10/
2735        aa
2736    
2737    /(((((((((a)))))))))/
2738        a
2739    
2740    /multiple words of text/
2741        *** Failers
2742        aa
2743        uh-uh
2744    
2745    /multiple words/
2746        multiple words, yeah
2747    
2748    /(.*)c(.*)/
2749        abcde
2750    
2751    /\((.*), (.*)\)/
2752        (a, b)
2753    
2754    /[k]/
2755    
2756    /abcd/
2757        abcd
2758    
2759    /a(bc)d/
2760        abcd
2761    
2762    /a[-]?c/
2763        ac
2764    
2765    /(abc)\1/
2766        abcabc
2767    
2768    /([a-c]*)\1/
2769        abcabc
2770    
2771    /(a)|\1/
2772        a
2773        *** Failers
2774        ab
2775        x
2776    
2777    /(([a-c])b*?\2)*/
2778        ababbbcbc
2779    
2780    /(([a-c])b*?\2){3}/
2781        ababbbcbc
2782    
2783    /((\3|b)\2(a)x)+/
2784        aaaxabaxbaaxbbax
2785    
2786    /((\3|b)\2(a)){2,}/
2787        bbaababbabaaaaabbaaaabba
2788    
2789    /abc/i
2790        ABC
2791        XABCY
2792        ABABC
2793        *** Failers
2794        aaxabxbaxbbx
2795        XBC
2796        AXC
2797        ABX
2798    
2799    /ab*c/i
2800        ABC
2801    
2802    /ab*bc/i
2803        ABC
2804        ABBC
2805    
2806    /ab*?bc/i
2807        ABBBBC
2808    
2809    /ab{0,}?bc/i
2810        ABBBBC
2811    
2812    /ab+?bc/i
2813        ABBC
2814    
2815    /ab+bc/i
2816        *** Failers
2817        ABC
2818        ABQ
2819    
2820    /ab{1,}bc/i
2821    
2822    /ab+bc/i
2823        ABBBBC
2824    
2825    /ab{1,}?bc/i
2826        ABBBBC
2827    
2828    /ab{1,3}?bc/i
2829        ABBBBC
2830    
2831    /ab{3,4}?bc/i
2832        ABBBBC
2833    
2834    /ab{4,5}?bc/i
2835        *** Failers
2836        ABQ
2837        ABBBBC
2838    
2839    /ab??bc/i
2840        ABBC
2841        ABC
2842    
2843    /ab{0,1}?bc/i
2844        ABC
2845    
2846    /ab??bc/i
2847    
2848    /ab??c/i
2849        ABC
2850    
2851    /ab{0,1}?c/i
2852        ABC
2853    
2854    /^abc$/i
2855        ABC
2856        *** Failers
2857        ABBBBC
2858        ABCC
2859    
2860    /^abc/i
2861        ABCC
2862    
2863    /^abc$/i
2864    
2865    /abc$/i
2866        AABC
2867    
2868    /^/i
2869        ABC
2870    
2871    /$/i
2872        ABC
2873    
2874    /a.c/i
2875        ABC
2876        AXC
2877    
2878    /a.*?c/i
2879        AXYZC
2880    
2881    /a.*c/i
2882        *** Failers
2883        AABC
2884        AXYZD
2885    
2886    /a[bc]d/i
2887        ABD
2888    
2889    /a[b-d]e/i
2890        ACE
2891        *** Failers
2892        ABC
2893        ABD
2894    
2895    /a[b-d]/i
2896        AAC
2897    
2898    /a[-b]/i
2899        A-
2900    
2901    /a[b-]/i
2902        A-
2903    
2904    /a]/i
2905        A]
2906    
2907    /a[]]b/i
2908        A]B
2909    
2910    /a[^bc]d/i
2911        AED
2912    
2913    /a[^-b]c/i
2914        ADC
2915        *** Failers
2916        ABD
2917        A-C
2918    
2919    /a[^]b]c/i
2920        ADC
2921    
2922    /ab|cd/i
2923        ABC
2924        ABCD
2925    
2926    /()ef/i
2927        DEF
2928    
2929    /$b/i
2930        *** Failers
2931        A]C
2932        B
2933    
2934    /a\(b/i
2935        A(B
2936    
2937    /a\(*b/i
2938        AB
2939        A((B
2940    
2941    /a\\b/i
2942        A\B
2943    
2944    /((a))/i
2945        ABC
2946    
2947    /(a)b(c)/i
2948        ABC
2949    
2950    /a+b+c/i
2951        AABBABC
2952    
2953    /a{1,}b{1,}c/i
2954        AABBABC
2955    
2956    /a.+?c/i
2957        ABCABC
2958    
2959    /a.*?c/i
2960        ABCABC
2961    
2962    /a.{0,5}?c/i
2963        ABCABC
2964    
2965    /(a+|b)*/i
2966        AB
2967    
2968    /(a+|b){0,}/i
2969        AB
2970    
2971    /(a+|b)+/i
2972        AB
2973    
2974    /(a+|b){1,}/i
2975        AB
2976    
2977    /(a+|b)?/i
2978        AB
2979    
2980    /(a+|b){0,1}/i
2981        AB
2982    
2983    /(a+|b){0,1}?/i
2984        AB
2985    
2986    /[^ab]*/i
2987        CDE
2988    
2989    /abc/i
2990    
2991    /a*/i
2992    
2993    
2994    /([abc])*d/i
2995        ABBBCD
2996    
2997    /([abc])*bcd/i
2998        ABCD
2999    
3000    /a|b|c|d|e/i
3001        E
3002    
3003    /(a|b|c|d|e)f/i
3004        EF
3005    
3006    /abcd*efg/i
3007        ABCDEFG
3008    
3009    /ab*/i
3010        XABYABBBZ
3011        XAYABBBZ
3012    
3013    /(ab|cd)e/i
3014        ABCDE
3015    
3016    /[abhgefdc]ij/i
3017        HIJ
3018    
3019    /^(ab|cd)e/i
3020        ABCDE
3021    
3022    /(abc|)ef/i
3023        ABCDEF
3024    
3025    /(a|b)c*d/i
3026        ABCD
3027    
3028    /(ab|ab*)bc/i
3029        ABC
3030    
3031    /a([bc]*)c*/i
3032        ABC
3033    
3034    /a([bc]*)(c*d)/i
3035        ABCD
3036    
3037    /a([bc]+)(c*d)/i
3038        ABCD
3039    
3040    /a([bc]*)(c+d)/i
3041        ABCD
3042    
3043    /a[bcd]*dcdcde/i
3044        ADCDCDE
3045    
3046    /a[bcd]+dcdcde/i
3047    
3048    /(ab|a)b*c/i
3049        ABC
3050    
3051    /((a)(b)c)(d)/i
3052        ABCD
3053    
3054    /[a-zA-Z_][a-zA-Z0-9_]*/i
3055        ALPHA
3056    
3057    /^a(bc+|b[eh])g|.h$/i
3058        ABH
3059    
3060    /(bc+d$|ef*g.|h?i(j|k))/i
3061        EFFGZ
3062        IJ
3063        REFFGZ
3064        *** Failers
3065        ADCDCDE
3066        EFFG
3067        BCDD
3068    
3069    /((((((((((a))))))))))/i
3070        A
3071    
3072    /((((((((((a))))))))))\10/i
3073        AA
3074    
3075    /(((((((((a)))))))))/i
3076        A
3077    
3078    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3079        A
3080    
3081    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3082        C
3083    
3084    /multiple words of text/i
3085        *** Failers
3086        AA
3087        UH-UH
3088    
3089    /multiple words/i
3090        MULTIPLE WORDS, YEAH
3091    
3092    /(.*)c(.*)/i
3093        ABCDE
3094    
3095    /\((.*), (.*)\)/i
3096        (A, B)
3097    
3098    /[k]/i
3099    
3100    /abcd/i
3101        ABCD
3102    
3103    /a(bc)d/i
3104        ABCD
3105    
3106    /a[-]?c/i
3107        AC
3108    
3109    /(abc)\1/i
3110        ABCABC
3111    
3112    /([a-c]*)\1/i
3113        ABCABC
3114    
3115    /a(?!b)./
3116        abad
3117    
3118    /a(?=d)./
3119        abad
3120    
3121    /a(?=c|d)./
3122        abad
3123    
3124    /a(?:b|c|d)(.)/
3125        ace
3126    
3127    /a(?:b|c|d)*(.)/
3128        ace
3129    
3130    /a(?:b|c|d)+?(.)/
3131        ace
3132        acdbcdbe
3133    
3134    /a(?:b|c|d)+(.)/
3135        acdbcdbe
3136    
3137    /a(?:b|c|d){2}(.)/
3138        acdbcdbe
3139    
3140    /a(?:b|c|d){4,5}(.)/
3141        acdbcdbe
3142    
3143    /a(?:b|c|d){4,5}?(.)/
3144        acdbcdbe
3145    
3146    /((foo)|(bar))*/
3147        foobar
3148    
3149    /a(?:b|c|d){6,7}(.)/
3150        acdbcdbe
3151    
3152    /a(?:b|c|d){6,7}?(.)/
3153        acdbcdbe
3154    
3155    /a(?:b|c|d){5,6}(.)/
3156        acdbcdbe
3157    
3158    /a(?:b|c|d){5,6}?(.)/
3159        acdbcdbe
3160    
3161    /a(?:b|c|d){5,7}(.)/
3162        acdbcdbe
3163    
3164    /a(?:b|c|d){5,7}?(.)/
3165        acdbcdbe
3166    
3167    /a(?:b|(c|e){1,2}?|d)+?(.)/
3168        ace
3169    
3170    /^(.+)?B/
3171        AB
3172    
3173    /^([^a-z])|(\^)$/
3174        .
3175    
3176    /^[<>]&/
3177        <&OUT
3178    
3179    /^(a\1?){4}$/
3180        aaaaaaaaaa
3181        *** Failers
3182        AB
3183        aaaaaaaaa
3184        aaaaaaaaaaa
3185    
3186    /^(a(?(1)\1)){4}$/
3187        aaaaaaaaaa
3188        *** Failers
3189        aaaaaaaaa
3190        aaaaaaaaaaa
3191    
3192    /(?:(f)(o)(o)|(b)(a)(r))*/
3193        foobar
3194    
3195    /(?<=a)b/
3196        ab
3197        *** Failers
3198        cb
3199        b
3200    
3201    /(?<!c)b/
3202        ab
3203        b
3204        b
3205    
3206    /(?:..)*a/
3207        aba
3208    
3209    /(?:..)*?a/
3210        aba
3211    
3212    /^(?:b|a(?=(.)))*\1/
3213        abc
3214    
3215    /^(){3,5}/
3216        abc
3217    
3218    /^(a+)*ax/
3219        aax
3220    
3221    /^((a|b)+)*ax/
3222        aax
3223    
3224    /^((a|bc)+)*ax/
3225        aax
3226    
3227    /(a|x)*ab/
3228        cab
3229    
3230    /(a)*ab/
3231        cab
3232    
3233    /(?:(?i)a)b/
3234        ab
3235    
3236    /((?i)a)b/
3237        ab
3238    
3239    /(?:(?i)a)b/
3240        Ab
3241    
3242    /((?i)a)b/
3243        Ab
3244    
3245    /(?:(?i)a)b/
3246        *** Failers
3247        cb
3248        aB
3249    
3250    /((?i)a)b/
3251    
3252    /(?i:a)b/
3253        ab
3254    
3255    /((?i:a))b/
3256        ab
3257    
3258    /(?i:a)b/
3259        Ab
3260    
3261    /((?i:a))b/
3262        Ab
3263    
3264    /(?i:a)b/
3265        *** Failers
3266        aB
3267        aB
3268    
3269    /((?i:a))b/
3270    
3271    /(?:(?-i)a)b/i
3272        ab
3273    
3274    /((?-i)a)b/i
3275        ab
3276    
3277    /(?:(?-i)a)b/i
3278        aB
3279    
3280    /((?-i)a)b/i
3281        aB
3282    
3283    /(?:(?-i)a)b/i
3284        *** Failers
3285        aB
3286        Ab
3287    
3288    /((?-i)a)b/i
3289    
3290    /(?:(?-i)a)b/i
3291        aB
3292    
3293    /((?-i)a)b/i
3294        aB
3295    
3296    /(?:(?-i)a)b/i
3297        *** Failers
3298        Ab
3299        AB
3300    
3301    /((?-i)a)b/i
3302    
3303    /(?-i:a)b/i
3304        ab
3305    
3306    /((?-i:a))b/i
3307        ab
3308    
3309    /(?-i:a)b/i
3310        aB
3311    
3312    /((?-i:a))b/i
3313        aB
3314    
3315    /(?-i:a)b/i
3316        *** Failers
3317        AB
3318        Ab
3319    
3320    /((?-i:a))b/i
3321    
3322    /(?-i:a)b/i
3323        aB
3324    
3325    /((?-i:a))b/i
3326        aB
3327    
3328    /(?-i:a)b/i
3329        *** Failers
3330        Ab
3331        AB
3332    
3333    /((?-i:a))b/i
3334    
3335    /((?-i:a.))b/i
3336        *** Failers
3337        AB
3338        a\nB
3339    
3340    /((?s-i:a.))b/i
3341        a\nB
3342    
3343    /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3344        cabbbb
3345    
3346    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3347        caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3348    
3349    /(ab)\d\1/i
3350        Ab4ab
3351        ab4Ab
3352    
3353    /foo\w*\d{4}baz/
3354        foobar1234baz
3355    
3356    /x(~~)*(?:(?:F)?)?/
3357        x~~
3358    
3359    /^a(?#xxx){3}c/
3360        aaac
3361    
3362    /^a (?#xxx) (?#yyy) {3}c/x
3363        aaac
3364    
3365    /(?<![cd])b/
3366        *** Failers
3367        B\nB
3368        dbcb
3369    
3370    /(?<![cd])[ab]/
3371        dbaacb
3372    
3373    /(?<!(c|d))b/
3374    
3375    /(?<!(c|d))[ab]/
3376        dbaacb
3377    
3378    /(?<!cd)[ab]/
3379        cdaccb
3380    
3381    /^(?:a?b?)*$/
3382        \
3383        a
3384        ab
3385        aaa
3386        *** Failers
3387        dbcb
3388        a--
3389        aa--
3390    
3391    /((?s)^a(.))((?m)^b$)/
3392        a\nb\nc\n
3393    
3394    /((?m)^b$)/
3395        a\nb\nc\n
3396    
3397    /(?m)^b/
3398        a\nb\n
3399    
3400    /(?m)^(b)/
3401        a\nb\n
3402    
3403    /((?m)^b)/
3404        a\nb\n
3405    
3406    /\n((?m)^b)/
3407        a\nb\n
3408    
3409    /((?s).)c(?!.)/
3410        a\nb\nc\n
3411        a\nb\nc\n
3412    
3413    /((?s)b.)c(?!.)/
3414        a\nb\nc\n
3415        a\nb\nc\n
3416    
3417    /^b/
3418    
3419    /()^b/
3420        *** Failers
3421        a\nb\nc\n
3422        a\nb\nc\n
3423    
3424    /((?m)^b)/
3425        a\nb\nc\n
3426    
3427    /(x)?(?(1)a|b)/
3428        *** Failers
3429        a
3430        a
3431    
3432    /(x)?(?(1)b|a)/
3433        a
3434    
3435    /()?(?(1)b|a)/
3436        a
3437    
3438    /()(?(1)b|a)/
3439    
3440    /()?(?(1)a|b)/
3441        a
3442    
3443    /^(\()?blah(?(1)(\)))$/
3444        (blah)
3445        blah
3446        *** Failers
3447        a
3448        blah)
3449        (blah
3450    
3451    /^(\(+)?blah(?(1)(\)))$/
3452        (blah)
3453        blah
3454        *** Failers
3455        blah)
3456        (blah
3457    
3458    /(?(?!a)a|b)/
3459    
3460    /(?(?!a)b|a)/
3461        a
3462    
3463    /(?(?=a)b|a)/
3464        *** Failers
3465        a
3466        a
3467    
3468    /(?(?=a)a|b)/
3469        a
3470    
3471    /(?=(a+?))(\1ab)/
3472        aaab
3473    
3474    /^(?=(a+?))\1ab/
3475    
3476    /(\w+:)+/
3477        one:
3478    
3479    /$(?<=^(a))/
3480        a
3481    
3482    /(?=(a+?))(\1ab)/
3483        aaab
3484    
3485    /^(?=(a+?))\1ab/
3486        *** Failers
3487        aaab
3488        aaab
3489    
3490    /([\w:]+::)?(\w+)$/
3491        abcd
3492        xy:z:::abcd
3493    
3494    /^[^bcd]*(c+)/
3495        aexycd
3496    
3497    /(a*)b+/
3498        caab
3499    
3500    /([\w:]+::)?(\w+)$/
3501        abcd
3502        xy:z:::abcd
3503        *** Failers
3504        abcd:
3505        abcd:
3506    
3507    /^[^bcd]*(c+)/
3508        aexycd
3509    
3510    /(>a+)ab/
3511    
3512    /(?>a+)b/
3513        aaab
3514    
3515    /([[:]+)/
3516        a:[b]:
3517    
3518    /([[=]+)/
3519        a=[b]=
3520    
3521    /([[.]+)/
3522        a.[b].
3523    
3524    /((?>a+)b)/
3525        aaab
3526    
3527    /(?>(a+))b/
3528        aaab
3529    
3530    /((?>[^()]+)|\([^()]*\))+/
3531        ((abc(ade)ufh()()x
3532    
3533    /a\Z/
3534        *** Failers
3535        aaab
3536        a\nb\n
3537    
3538    /b\Z/
3539        a\nb\n
3540    
3541    /b\z/
3542    
3543    /b\Z/
3544        a\nb
3545    
3546    /b\z/
3547        a\nb
3548        *** Failers
3549    
3550    /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
3551        a
3552        abc
3553        a-b
3554        0-9
3555        a.b
3556        5.6.7
3557        the.quick.brown.fox
3558        a100.b200.300c
3559        12-ab.1245
3560        *** Failers
3561        \
3562        .a
3563        -a
3564        a-
3565        a.
3566        a_b
3567        a.-
3568        a..
3569        ab..bc
3570        the.quick.brown.fox-
3571        the.quick.brown.fox.
3572        the.quick.brown.fox_
3573        the.quick.brown.fox+
3574    
3575    /(?>.*)(?<=(abcd|wxyz))/
3576        alphabetabcd
3577        endingwxyz
3578        *** Failers
3579        a rather long string that doesn't end with one of them
3580    
3581    /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3582        word cat dog elephant mussel cow horse canary baboon snake shark otherword
3583        word cat dog elephant mussel cow horse canary baboon snake shark
3584    
3585    /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3586        word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
3587    
3588    /(?<=\d{3}(?!999))foo/
3589        999foo
3590        123999foo
3591        *** Failers
3592        123abcfoo
3593    
3594    /(?<=(?!...999)\d{3})foo/
3595        999foo
3596        123999foo
3597        *** Failers
3598        123abcfoo
3599    
3600    /(?<=\d{3}(?!999)...)foo/
3601        123abcfoo
3602        123456foo
3603        *** Failers
3604        123999foo
3605    
3606    /(?<=\d{3}...)(?<!999)foo/
3607        123abcfoo
3608        123456foo
3609        *** Failers
3610        123999foo
3611    
3612    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3613     ([\"\'])?                       # find single or double quote
3614     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3615                                     # quote, otherwise match up to next space
3616    /isx
3617        <a href=abcd xyz
3618        <a href=\"abcd xyz pqr\" cats
3619        <a href=\'abcd xyz pqr\' cats
3620    
3621    /<a\s+href\s*=\s*                # find <a href=
3622     (["'])?                         # find single or double quote
3623     (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
3624                                     # quote, otherwise match up to next space
3625    /isx
3626        <a href=abcd xyz
3627        <a href=\"abcd xyz pqr\" cats
3628        <a href       =       \'abcd xyz pqr\' cats
3629    
3630    /<a\s+href(?>\s*)=(?>\s*)        # find <a href=
3631     (["'])?                         # find single or double quote
3632     (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
3633                                     # quote, otherwise match up to next space
3634    /isx
3635        <a href=abcd xyz
3636        <a href=\"abcd xyz pqr\" cats
3637        <a href       =       \'abcd xyz pqr\' cats
3638    
3639    /((Z)+|A)*/
3640        ZABCDEFG
3641    
3642    /(Z()|A)*/
3643        ZABCDEFG
3644    
3645    /(Z(())|A)*/
3646        ZABCDEFG
3647    
3648    /((?>Z)+|A)*/
3649        ZABCDEFG
3650    
3651    /((?>)+|A)*/
3652        ZABCDEFG
3653    
3654    /a*/g
3655        abbab
3656    
3657    /^[a-\d]/
3658        abcde
3659        -things
3660        0digit
3661        *** Failers
3662        bcdef
3663    
3664    /^[\d-a]/
3665        abcde
3666        -things
3667        0digit
3668        *** Failers
3669        bcdef
3670    
3671    /[[:space:]]+/
3672        > \x09\x0a\x0c\x0d\x0b<
3673    
3674    /[[:blank:]]+/
3675        > \x09\x0a\x0c\x0d\x0b<
3676    
3677    /[\s]+/
3678        > \x09\x0a\x0c\x0d\x0b<
3679    
3680    /\s+/
3681        > \x09\x0a\x0c\x0d\x0b<
3682    
3683    /a b/x
3684        ab
3685    
3686    /(?!\A)x/m
3687      a\nxb\n
3688    
3689    /(?!^)x/m
3690      a\nxb\n
3691    
3692    /abc\Qabc\Eabc/
3693        abcabcabc
3694    
3695    /abc\Q(*+|\Eabc/
3696        abc(*+|abc
3697    
3698    /   abc\Q abc\Eabc/x
3699        abc abcabc
3700        *** Failers
3701        abcabcabc
3702    
3703    /abc#comment
3704        \Q#not comment
3705        literal\E/x
3706        abc#not comment\n    literal
3707    
3708    /abc#comment
3709        \Q#not comment
3710        literal/x
3711        abc#not comment\n    literal
3712    
3713    /abc#comment
3714        \Q#not comment
3715        literal\E #more comment
3716        /x
3717        abc#not comment\n    literal
3718    
3719    /abc#comment
3720        \Q#not comment
3721        literal\E #more comment/x
3722        abc#not comment\n    literal
3723    
3724    /\Qabc\$xyz\E/
3725        abc\\\$xyz
3726    
3727    /\Qabc\E\$\Qxyz\E/
3728        abc\$xyz
3729    
3730    /\Gabc/
3731        abc
3732        *** Failers
3733        xyzabc
3734    
3735    /\Gabc./g
3736        abc1abc2xyzabc3
3737    
3738    /abc./g
3739        abc1abc2xyzabc3
3740    
3741    /a(?x: b c )d/
3742        XabcdY
3743        *** Failers
3744        Xa b c d Y
3745    
3746    /((?x)x y z | a b c)/
3747        XabcY
3748        AxyzB
3749    
3750    /(?i)AB(?-i)C/
3751        XabCY
3752        *** Failers
3753        XabcY
3754    
3755    /((?i)AB(?-i)C|D)E/
3756        abCE
3757        DE
3758        *** Failers
3759        abcE
3760        abCe
3761        dE
3762        De
3763    
3764    /(.*)\d+\1/
3765        abc123abc
3766        abc123bc
3767    
3768    /(.*)\d+\1/s
3769        abc123abc
3770        abc123bc
3771    
3772    /((.*))\d+\1/
3773        abc123abc
3774        abc123bc
3775    
3776    /-- This tests for an IPv6 address in the form where it can have up to --/
3777    /-- eight components, one and only one of which is empty. This must be --/
3778    /-- an internal component. --/
3779    
3780    /^(?!:)                       # colon disallowed at start
3781      (?:                         # start of item
3782        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3783        (?(1)0 | () ) )           # if null previously matched, fail; else null
3784        :                         # followed by colon
3785      ){1,7}                      # end item; 1-7 of them required
3786      [0-9a-f]{1,4} $             # final hex number at end of string
3787      (?(1)|.)                    # check that there was an empty component
3788      /xi
3789        a123::a123
3790        a123:b342::abcd
3791        a123:b342::324e:abcd
3792        a123:ddde:b342::324e:abcd
3793        a123:ddde:b342::324e:dcba:abcd
3794        a123:ddde:9999:b342::324e:dcba:abcd
3795        *** Failers
3796        1:2:3:4:5:6:7:8
3797        a123:bce:ddde:9999:b342::324e:dcba:abcd
3798        a123::9999:b342::324e:dcba:abcd
3799        abcde:2:3:4:5:6:7:8
3800        ::1
3801        abcd:fee0:123::
3802        :1
3803        1:
3804    
3805    /[z\Qa-d]\E]/
3806        z
3807        a
3808        -
3809        d
3810        ]
3811        *** Failers
3812        b
3813    
3814    /[\z\C]/
3815        z
3816        C
3817    
3818    /\M/
3819        M
3820    
3821    /(a+)*b/
3822        aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3823    
3824    /(?i)reg(?:ul(?:[a]|ae)r|ex)/
3825        REGular
3826        regulaer
3827        Regex
3828        regulr
3829    
3830    /[--]+/
3831        
3832        
3833        
3834        
3835    
3836    /(?<=Z)X./
3837      \x84XAZXB
3838    
3839    /ab cd (?x) de fg/
3840        ab cd defg
3841    
3842    /ab cd(?x) de fg/
3843        ab cddefg
3844        ** Failers
3845        abcddefg
3846    
3847    /(?<![^f]oo)(bar)/
3848        foobarX
3849        ** Failers
3850        boobarX
3851    
3852    /(?<![^f])X/
3853        offX
3854        ** Failers
3855        onyX
3856    
3857    /(?<=[^f])X/
3858        onyX
3859        ** Failers
3860        offX
3861    
3862    /^/mg
3863        a\nb\nc\n
3864        \
3865    
3866    /(?<=C\n)^/mg
3867        A\nC\nC\n
3868    
3869    /(?:(?(1)a|b)(X))+/
3870        bXaX
3871    
3872    /(?:(?(1)\1a|b)(X|Y))+/
3873        bXXaYYaY
3874        bXYaXXaX
3875    
3876    /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
3877        bXXaYYaY
3878    
3879    /[[,abc,]+]/
3880        abc]
3881        a,b]
3882        [a,b,c]
3883    
3884    /(?-x: )/x
3885        A\x20B
3886    
3887    "(?x)(?-x: \s*#\s*)"
3888        A # B
3889        ** Failers
3890        #
3891    
3892    "(?x-is)(?:(?-ixs) \s*#\s*) include"
3893        A #include
3894        ** Failers
3895        A#include
3896        A #Include
3897    
3898    /a*b*\w/
3899        aaabbbb
3900        aaaa
3901        a
3902    
3903    /a*b?\w/
3904        aaabbbb
3905        aaaa
3906        a
3907    
3908    /a*b{0,4}\w/
3909        aaabbbb
3910        aaaa
3911        a
3912    
3913    /a*b{0,}\w/
3914        aaabbbb
3915        aaaa
3916        a
3917    
3918    /a*\d*\w/
3919        0a
3920        a
3921    
3922    /a*b *\w/x
3923        a
3924    
3925    /a*b#comment
3926      *\w/x
3927        a
3928    
3929    /a* b *\w/x
3930        a
3931    
3932    /^\w+=.*(\\\n.*)*/
3933        abc=xyz\\\npqr
3934    
3935    /(?=(\w+))\1:/
3936        abcd:
3937    
3938    /^(?=(\w+))\1:/
3939        abcd:
3940    
3941    /^\Eabc/
3942        abc
3943    
3944    /^[\Eabc]/
3945        a
3946        ** Failers
3947        E
3948    
3949    /^[a-\Ec]/
3950        b
3951        ** Failers
3952        -
3953        E
3954    
3955    /^[a\E\E-\Ec]/
3956        b
3957        ** Failers
3958        -
3959        E
3960    
3961    /^[\E\Qa\E-\Qz\E]+/
3962        b
3963        ** Failers
3964        -
3965    
3966    /^[a\Q]bc\E]/
3967        a
3968        ]
3969        c
3970    
3971    /^[a-\Q\E]/
3972        a
3973        -
3974    
3975    /^(a()*)*/
3976        aaaa
3977    
3978    /^(?:a(?:(?:))*)*/
3979        aaaa
3980    
3981    /^(a()+)+/
3982        aaaa
3983    
3984    /^(?:a(?:(?:))+)+/
3985        aaaa
3986    
3987    /(a){0,3}(?(1)b|(c|))*D/
3988        abbD
3989        ccccD
3990        D
3991    
3992    /(a|)*\d/
3993      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3994      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3995    
3996    /(?>a|)*\d/
3997      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3998      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3999    
4000    /(?:a|)*\d/
4001      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4002      aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4003    
4004    /\Z/g
4005      abc\n
4006    
4007    /^(?s)(?>.*)(?<!\n)/
4008      abc
4009      abc\n
4010    
4011    /^(?![^\n]*\n\z)/
4012      abc
4013      abc\n
4014    
4015    /\z(?<!\n)/
4016      abc
4017      abc\n
4018    
4019    /(.*(.)?)*/
4020        abcd
4021    
4022    /( (A | (?(1)0|) )*   )/x
4023        abcd
4024    
4025    /( ( (?(1)0|) )*   )/x
4026        abcd
4027    
4028    /(  (?(1)0|)*   )/x
4029        abcd
4030    
4031    /[[:abcd:xyz]]/
4032        a]
4033        :]
4034    
4035    /[abc[:x\]pqr]/
4036        a
4037        [
4038        :
4039        ]
4040        p
4041    
4042    /.*[op][xyz]/
4043        fooabcfoo
4044    
4045    /(?(?=.*b)b|^)/
4046       adc
4047       abc
4048    
4049    /(?(?=^.*b)b|^)/
4050       adc
4051       abc
4052    
4053    /(?(?=.*b)b|^)*/
4054       adc
4055       abc
4056    
4057    /(?(?=.*b)b|^)+/
4058       adc
4059       abc
4060    
4061    /(?(?=b).*b|^d)/
4062        abc
4063    
4064    /(?(?=.*b).*b|^d)/
4065        abc
4066    
4067    /^%((?(?=[a])[^%])|b)*%$/
4068        %ab%
4069    
4070    /(?i)a(?-i)b|c/
4071        XabX
4072        XAbX
4073        CcC
4074        ** Failers
4075        XABX
4076    
4077    /[\x00-\xff\s]+/
4078        \x0a\x0b\x0c\x0d
4079    
4080    /^\c/
4081        ?
4082    
4083    /(abc)\1/i
4084       abc
4085    
4086    /(abc)\1/
4087       abc
4088    
4089    /[^a]*/i
4090        12abc
4091        12ABC
4092    
4093    /[^a]*+/i
4094        12abc
4095        12ABC
4096    
4097    /[^a]*?X/i
4098        ** Failers
4099        12abc
4100        12ABC
4101    
4102    /[^a]+?X/i
4103        ** Failers
4104        12abc
4105        12ABC
4106    
4107    /[^a]?X/i
4108        12aXbcX
4109        12AXBCX
4110        BCX
4111    
4112    /[^a]??X/i
4113        12aXbcX
4114        12AXBCX
4115        BCX
4116    
4117    /[^a]?+X/i
4118        12aXbcX
4119        12AXBCX
4120        BCX
4121    
4122    /[^a]{2,3}/i
4123        abcdef
4124        ABCDEF
4125    
4126    /[^a]{2,3}?/i
4127        abcdef
4128        ABCDEF
4129    
4130    /[^a]{2,3}+/i
4131        abcdef
4132        ABCDEF
4133    
4134    /((a|)+)+Z/
4135        Z
4136    
4137    /(a)b|(a)c/
4138        ac
4139    
4140    /(?>(a))b|(a)c/
4141        ac
4142    
4143    /(?=(a))ab|(a)c/
4144        ac
4145    
4146    /((?>(a))b|(a)c)/
4147        ac
4148    
4149    /((?>(a))b|(a)c)++/
4150        ac
4151    
4152    /(?:(?>(a))b|(a)c)++/
4153        ac
4154    
4155    /(?=(?>(a))b|(a)c)(..)/
4156        ac
4157    
4158    /(?>(?>(a))b|(a)c)/
4159        ac
4160    
4161    /(?:(?>([ab])))+a=/+
4162        =ba=
4163    
4164    /(?>([ab]))+a=/+
4165        =ba=
4166    
4167    /((?>(a+)b)+(aabab))/
4168        aaaabaaabaabab
4169    
4170    /(?>a+|ab)+?c/
4171        aabc
4172    
4173    /(?>a+|ab)+c/
4174        aabc
4175    
4176    /(?:a+|ab)+c/
4177        aabc
4178    
4179    /(?(?=(a))a)/
4180        a
4181    
4182    /(?(?=(a))a)(b)/
4183        ab
4184    
4185    /^(?:a|ab)++c/
4186        aaaabc
4187    
4188    /^(?>a|ab)++c/
4189        aaaabc
4190    
4191    /^(?:a|ab)+c/
4192        aaaabc
4193    
4194    /(?=abc){3}abc/+
4195        abcabcabc
4196        ** Failers
4197        xyz
4198    
4199    /(?=abc)+abc/+
4200        abcabcabc
4201        ** Failers
4202        xyz
4203    
4204    /(?=abc)++abc/+
4205        abcabcabc
4206        ** Failers
4207        xyz
4208    
4209    /(?=abc){0}xyz/
4210        xyz
4211    
4212    /(?=abc){1}xyz/
4213        ** Failers
4214        xyz
4215    
4216    /(?=(a))?./
4217        ab
4218        bc
4219    
4220    /(?=(a))??./
4221        ab
4222        bc
4223    
4224    /^(?=(a)){0}b(?1)/
4225        backgammon
4226    
4227    /^(?=(?1))?[az]([abc])d/
4228        abd
4229        zcdxx
4230    
4231    /^(?!a){0}\w+/
4232        aaaaa
4233    
4234    /(?<=(abc))?xyz/
4235        abcxyz
4236        pqrxyz
4237    
4238    /^[\g<a>]+/
4239        ggg<<<aaa>>>
4240        ** Failers
4241        \\ga
4242    
4243    /^[\ga]+/
4244        gggagagaxyz
4245    
4246    /^[:a[:digit:]]+/
4247        aaaa444:::Z
4248    
4249    /^[:a[:digit:]:b]+/
4250        aaaa444:::bbbZ
4251    
4252    /[:a]xxx[b:]/
4253         :xxx:
4254    
4255    /(?<=a{2})b/i
4256        xaabc
4257        ** Failers
4258        xabc
4259    
4260    /(?<!a{2})b/i
4261        xabc
4262        ** Failers
4263        xaabc
4264    
4265    /(?<=a\h)c/
4266        xa c
4267    
4268    /(?<=[^a]{2})b/
4269        axxbc
4270        aAAbc
4271        ** Failers
4272        xaabc
4273    
4274    /(?<=[^a]{2})b/i
4275        axxbc
4276        ** Failers
4277        aAAbc
4278        xaabc
4279    
4280    /(?<=a\H)c/
4281        abc
4282    
4283    /(?<=a\V)c/
4284        abc
4285    
4286    /(?<=a\v)c/
4287        a\nc
4288    
4289    /(?(?=c)c|d)++Y/
4290        XcccddYX
4291    
4292    /(?(?=c)c|d)*+Y/
4293        XcccddYX
4294    
4295    /^(a{2,3}){2,}+a/
4296        aaaaaaa
4297        ** Failers
4298        aaaaaa
4299        aaaaaaaaa
4300    
4301    /^(a{2,3})++a/
4302        ** Failers
4303        aaaaaa
4304    
4305    /^(a{2,3})*+a/
4306        ** Failers
4307        aaaaaa
4308    
4309    /ab\Cde/
4310        abXde
4311    
4312    /(?<=ab\Cde)X/
4313        abZdeX
4314    
4315    /a[\CD]b/
4316        aCb
4317        aDb
4318    
4319    /a[\C-X]b/
4320        aJb
4321    
4322    /\H\h\V\v/
4323        X X\x0a
4324        X\x09X\x0b
4325        ** Failers
4326        \xa0 X\x0a
4327    
4328    /\H*\h+\V?\v{3,4}/
4329        \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4330        \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4331        \x09\x20\xa0\x0a\x0b\x0c
4332        ** Failers
4333        \x09\x20\xa0\x0a\x0b
4334    
4335    /\H{3,4}/
4336        XY  ABCDE
4337        XY  PQR ST
4338    
4339    /.\h{3,4}./
4340        XY  AB    PQRS
4341    
4342    /\h*X\h?\H+Y\H?Z/
4343        >XNNNYZ
4344        >  X NYQZ
4345        ** Failers
4346        >XYZ
4347        >  X NY Z
4348    
4349    /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4350        >XY\x0aZ\x0aA\x0bNN\x0c
4351        >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4352    
4353    /(foo)\Kbar/
4354        foobar
4355    
4356    /(foo)(\Kbar|baz)/
4357        foobar
4358        foobaz
4359    
4360    /(foo\Kbar)baz/
4361        foobarbaz
4362    
4363    /abc\K|def\K/g+
4364        Xabcdefghi
4365    
4366    /ab\Kc|de\Kf/g+
4367        Xabcdefghi
4368    
4369    /(?=C)/g+
4370        ABCDECBA
4371    
4372    /^abc\K/+
4373        abcdef
4374        ** Failers
4375        defabcxyz
4376    
4377    /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
4378        ababababbbabZXXXX
4379    
4380    /(?<A>tom|bon)-\g{A}/
4381        tom-tom
4382        bon-bon
4383    
4384    /(^(a|b\g{-1}))/
4385        bacxxx
4386    
4387    /(?|(abc)|(xyz))\1/
4388        abcabc
4389        xyzxyz
4390        ** Failers
4391        abcxyz
4392        xyzabc
4393    
4394    /(?|(abc)|(xyz))(?1)/
4395        abcabc
4396        xyzabc
4397        ** Failers
4398        xyzxyz
4399    
4400    /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
4401        XYabcdY
4402    
4403    /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
4404        XYabcdY
4405    
4406    /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
4407        XYabcdY
4408    
4409    /(?'abc'\w+):\k<abc>{2}/
4410        a:aaxyz
4411        ab:ababxyz
4412        ** Failers
4413        a:axyz
4414        ab:abxyz
4415    
4416    /(?'abc'\w+):\g{abc}{2}/
4417        a:aaxyz
4418        ab:ababxyz
4419        ** Failers
4420        a:axyz
4421        ab:abxyz
4422    
4423    /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
4424        abd
4425        ce
4426    
4427    /^(a.)\g-1Z/
4428        aXaXZ
4429    
4430    /^(a.)\g{-1}Z/
4431        aXaXZ
4432    
4433    /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
4434        abcd
4435    
4436    /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
4437      (?(DEFINE)
4438      (?<NAME_PAT>[a-z]+)
4439      (?<ADDRESS_PAT>\d+)
4440      )/x
4441        metcalfe 33
4442    
4443    /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
4444        1.2.3.4
4445        131.111.10.206
4446        10.0.0.0
4447        ** Failers
4448        10.6
4449        455.3.4.5
4450    
4451    /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
4452        1.2.3.4
4453        131.111.10.206
4454        10.0.0.0
4455        ** Failers
4456        10.6
4457        455.3.4.5
4458    
4459    /^(\w++|\s++)*$/
4460        now is the time for all good men to come to the aid of the party
4461        *** Failers
4462        this is not a line with only words and spaces!
4463    
4464    /(\d++)(\w)/
4465        12345a
4466        *** Failers
4467        12345+
4468    
4469    /a++b/
4470        aaab
4471    
4472    /(a++b)/
4473        aaab
4474    
4475    /(a++)b/
4476        aaab
4477    
4478    /([^()]++|\([^()]*\))+/
4479        ((abc(ade)ufh()()x
4480    
4481    /\(([^()]++|\([^()]+\))+\)/
4482        (abc)
4483        (abc(def)xyz)
4484        *** Failers
4485        ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4486    
4487    /^([^()]|\((?1)*\))*$/
4488        abc
4489        a(b)c
4490        a(b(c))d
4491        *** Failers)
4492        a(b(c)d
4493    
4494    /^>abc>([^()]|\((?1)*\))*<xyz<$/
4495       >abc>123<xyz<
4496       >abc>1(2)3<xyz<
4497       >abc>(1(2)3)<xyz<
4498    
4499    /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
4500        1221
4501        Satanoscillatemymetallicsonatas
4502        AmanaplanacanalPanama
4503        AblewasIereIsawElba
4504        *** Failers
4505        Thequickbrownfox
4506    
4507    /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
4508        12
4509        (((2+2)*-3)-7)
4510        -12
4511        *** Failers
4512        ((2+2)*-3)-7)
4513    
4514    /^(x(y|(?1){2})z)/
4515        xyz
4516        xxyzxyzz
4517        *** Failers
4518        xxyzz
4519        xxyzxyzxyzz
4520    
4521    /((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
4522        <>
4523        <abcd>
4524        <abc <123> hij>
4525        <abc <def> hij>
4526        <abc<>def>
4527        <abc<>
4528        *** Failers
4529        <abc
4530    
4531    /^a+(*FAIL)/
4532        aaaaaa
4533    
4534    /a+b?c+(*FAIL)/
4535        aaabccc
4536    
4537    /a+b?(*PRUNE)c+(*FAIL)/
4538        aaabccc
4539    
4540    /a+b?(*COMMIT)c+(*FAIL)/
4541        aaabccc
4542    
4543    /a+b?(*SKIP)c+(*FAIL)/
4544        aaabcccaaabccc
4545    
4546    /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4547        aaaxxxxxx
4548        aaa++++++
4549        bbbxxxxx
4550        bbb+++++
4551        cccxxxx
4552        ccc++++
4553        dddddddd
4554    
4555    /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4556        aaaxxxxxx
4557        aaa++++++
4558        bbbxxxxx
4559        bbb+++++
4560        cccxxxx
4561        ccc++++
4562        dddddddd
4563    
4564    /a+b?(*THEN)c+(*FAIL)/
4565        aaabccc
4566    
4567    /(A (A|B(*ACCEPT)|C) D)(E)/x
4568        AB
4569        ABX
4570        AADE
4571        ACDE
4572        ** Failers
4573        AD
4574    
4575    /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
4576        1221
4577        Satan, oscillate my metallic sonatas!
4578        A man, a plan, a canal: Panama!
4579        Able was I ere I saw Elba.
4580        *** Failers
4581        The quick brown fox
4582    
4583    /^((.)(?1)\2|.)$/
4584        a
4585        aba
4586        aabaa
4587        abcdcba
4588        pqaabaaqp
4589        ablewasiereisawelba
4590        rhubarb
4591        the quick brown fox
4592    
4593    /(a)(?<=b(?1))/
4594        baz
4595        ** Failers
4596        caz
4597    
4598    /(?<=b(?1))(a)/
4599        zbaaz
4600        ** Failers
4601        aaa
4602    
4603    /(?<X>a)(?<=b(?&X))/
4604        baz
4605    
4606    /^(?|(abc)|(def))\1/
4607        abcabc
4608        defdef
4609        ** Failers
4610        abcdef
4611        defabc
4612    
4613    /^(?|(abc)|(def))(?1)/
4614        abcabc
4615        defabc
4616        ** Failers
4617        defdef
4618        abcdef
4619    
4620    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
4621        a\"aaaaa
4622        b\"aaaaa
4623        ** Failers
4624        b\"11111
4625    
4626    /(?:(?1)|B)(A(*F)|C)/
4627        ABCD
4628        CCD
4629        ** Failers
4630        CAD
4631    
4632    /^(?:(?1)|B)(A(*F)|C)/
4633        CCD
4634        BCD
4635        ** Failers
4636        ABCD
4637        CAD
4638        BAD
4639    
4640    /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
4641        AAD
4642        ACD
4643        BAD
4644        BCD
4645        BAX
4646        ** Failers
4647        ACX
4648        ABC
4649    
4650    /(?(DEFINE)(A))B(?1)C/
4651        BAC
4652    
4653    /(?(DEFINE)((A)\2))B(?1)C/
4654        BAAC
4655    
4656    /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
4657        (ab(cd)ef)
4658    
4659    /^(?!a(*SKIP)b)/
4660        ac
4661    
4662    /^(?=a(*SKIP)b|ac)/
4663        ** Failers
4664        ac
4665    
4666    /^(?=a(*THEN)b|ac)/
4667        ac
4668    
4669    /^(?=a(*PRUNE)b)/
4670        ab
4671        ** Failers
4672        ac
4673    
4674    /^(?=a(*ACCEPT)b)/
4675        ac
4676    
4677    /^(?(?!a(*SKIP)b))/
4678        ac
4679    
4680    /(?>a\Kb)/
4681        ab
4682    
4683    /((?>a\Kb))/
4684        ab
4685    
4686    /(a\Kb)/
4687        ab
4688    
4689    /^a\Kcz|ac/
4690        ac
4691    
4692    /(?>a\Kbz|ab)/
4693        ab
4694    
4695    /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4696        ab
4697    
4698    /^([^()]|\((?1)*\))*$/
4699        a(b)c
4700        a(b(c)d)e
4701    
4702    /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4703        0
4704        00
4705        0000
4706    
4707    /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4708        0
4709        00
4710        0000
4711    
4712    /--- This one does fail, as expected, in Perl. It needs the complex item at the
4713         end of the pattern. A single letter instead of (B|D) makes it not fail,
4714         which I think is a Perl bug. --- /
4715    
4716    /A(*COMMIT)(B|D)/
4717        ACABX
4718    
4719    /--- Check the use of names for failure ---/
4720    
4721    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
4722        ** Failers
4723        AC
4724        CB
4725    
4726    /--- Force no study, otherwise mark is not seen. The studied version is in
4727         test 2 because it isn't Perl-compatible. ---/
4728    
4729    /(*MARK:A)(*SKIP:B)(C|X)/KSS
4730        C
4731        D
4732    
4733    /^(A(*THEN:A)B|C(*THEN:B)D)/K
4734        ** Failers
4735        CB
4736    
4737    /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
4738        CB
4739    
4740    /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
4741        CB
4742    
4743    /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
4744    that we have to have something complicated such as (B|Z) at the end because,
4745    for Perl, a simple character somehow causes an unwanted optimization to mess
4746    with the handling of backtracking verbs. ---/
4747    
4748    /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
4749        AAAC
4750    
4751    /--- Test skipping over a non-matching mark. ---/
4752    
4753    /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
4754        AAAC
4755    
4756    /--- Check shorthand for MARK ---/
4757    
4758    /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
4759        AAAC
4760    
4761    /--- Don't loop! Force no study, otherwise mark is not seen. ---/
4762    
4763    /(*:A)A+(*SKIP:A)(B|Z)/KSS
4764        AAAC
4765    
4766    /--- This should succeed, as a non-existent skip name disables the skip ---/
4767    
4768    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
4769        AAAC
4770    
4771    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
4772        AAAC
4773    
4774    /--- COMMIT at the start of a pattern should act like an anchor. Again,
4775    however, we need the complication for Perl. ---/
4776    
4777    /(*COMMIT)(A|P)(B|P)(C|P)/
4778        ABCDEFG
4779        ** Failers
4780        DEFGABC
4781    
4782    /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
4783    
4784    /(\w+)(?>b(*COMMIT))\w{2}/
4785        abbb
4786    
4787    /(\w+)b(*COMMIT)\w{2}/
4788        abbb
4789    
4790    /--- Check opening parens in comment when seeking forward reference. ---/
4791    
4792    /(?&t)(?#()(?(DEFINE)(?<t>a))/
4793        bac
4794    
4795    /--- COMMIT should override THEN ---/
4796    
4797    /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4798      yes
4799    
4800    /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4801      yes
4802    
4803    /b?(*SKIP)c/
4804        bc
4805        abc
4806    
4807    /(*SKIP)bc/
4808        a
4809    
4810    /(*SKIP)b/
4811        a
4812    
4813    /(?P<abn>(?P=abn)xxx|)+/
4814        xxx
4815    
4816    /(?i:([^b]))(?1)/
4817        aa
4818        aA
4819        ** Failers
4820        ab
4821        aB
4822        Ba
4823        ba
4824    
4825    /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4826        aaaaaaX
4827        ** Failers
4828        aaaaaa
4829    
4830    /^(?&t)*(?(DEFINE)(?<t>a))\w$/
4831        aaaaaaX
4832        aaaaaa
4833    
4834    /^(a)*+(\w)/
4835        aaaaX
4836        YZ
4837        ** Failers
4838        aaaa
4839    
4840    /^(?:a)*+(\w)/
4841        aaaaX
4842        YZ
4843        ** Failers
4844        aaaa
4845    
4846    /^(a)++(\w)/
4847        aaaaX
4848        ** Failers
4849        aaaa
4850        YZ
4851    
4852    /^(?:a)++(\w)/
4853        aaaaX
4854        ** Failers
4855        aaaa
4856        YZ
4857    
4858    /^(a)?+(\w)/
4859        aaaaX
4860        YZ
4861    
4862    /^(?:a)?+(\w)/
4863        aaaaX
4864        YZ
4865    
4866    /^(a){2,}+(\w)/
4867        aaaaX
4868        ** Failers
4869        aaa
4870        YZ
4871    
4872    /^(?:a){2,}+(\w)/
4873        aaaaX
4874        ** Failers
4875        aaa
4876        YZ
4877    
4878    /(a|)*(?1)b/
4879        b
4880        ab
4881        aab
4882    
4883    /(a)++(?1)b/
4884        ** Failers
4885        ab
4886        aab
4887    
4888    /(a)*+(?1)b/
4889        ** Failers
4890        ab
4891        aab
4892    
4893    /(?1)(?:(b)){0}/
4894        b
4895    
4896    /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4897        foo(bar(baz)+baz(bop))
4898    
4899    /(A (A|B(*ACCEPT)|C) D)(E)/x
4900        AB
4901    
4902    /\A.*?(?:a|b(*THEN)c)/
4903        ba
4904    
4905    /\A.*?(?:a|bc)/
4906        ba
4907    
4908    /\A.*?(a|b(*THEN)c)/
4909        ba
4910    
4911    /\A.*?(a|bc)/
4912        ba
4913    
4914    /\A.*?(?:a|b(*THEN)c)++/
4915        ba
4916    
4917    /\A.*?(?:a|bc)++/
4918        ba
4919    
4920    /\A.*?(a|b(*THEN)c)++/
4921        ba
4922    
4923    /\A.*?(a|bc)++/
4924        ba
4925    
4926    /\A.*?(?:a|b(*THEN)c|d)/
4927        ba
4928    
4929    /\A.*?(?:a|bc|d)/
4930        ba
4931    
4932    /(?:(b))++/
4933        beetle
4934    
4935    /(?(?=(a(*ACCEPT)z))a)/
4936        a
4937    
4938    /^(a)(?1)+ab/
4939        aaaab
4940    
4941    /^(a)(?1)++ab/
4942        aaaab
4943    
4944    /^(?=a(*:M))aZ/K
4945        aZbc
4946    
4947    /^(?!(*:M)b)aZ/K
4948        aZbc
4949    
4950    /(?(DEFINE)(a))?b(?1)/
4951        backgammon
4952    
4953    /^\N+/
4954        abc\ndef
4955    
4956    /^\N{1,}/
4957        abc\ndef
4958    
4959    /(?(R)a+|(?R)b)/
4960        aaaabcde
4961    
4962    /(?(R)a+|((?R))b)/
4963        aaaabcde
4964    
4965    /((?(R)a+|(?1)b))/
4966        aaaabcde
4967    
4968    /((?(R1)a+|(?1)b))/
4969        aaaabcde
4970    
4971    /a(*:any
4972    name)/K
4973        abc
4974    
4975    /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
4976        a
4977        ba
4978        bba
4979    
4980    /--- Checking revised (*THEN) handling ---/
4981    
4982    /--- Capture ---/
4983    
4984    /^.*? (a(*THEN)b) c/x
4985        aabc
4986    
4987    /^.*? (a(*THEN)b|(*F)) c/x
4988        aabc
4989    
4990    /^.*? ( (a(*THEN)b) | (*F) ) c/x
4991        aabc
4992    
4993    /^.*? ( (a(*THEN)b) ) c/x
4994        aabc
4995    
4996    /--- Non-capture ---/
4997    
4998    /^.*? (?:a(*THEN)b) c/x
4999        aabc
5000    
5001    /^.*? (?:a(*THEN)b|(*F)) c/x
5002        aabc
5003    
5004    /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
5005        aabc
5006    
5007    /^.*? (?: (?:a(*THEN)b) ) c/x
5008        aabc
5009    
5010    /--- Atomic ---/
5011    
5012    /^.*? (?>a(*THEN)b) c/x
5013        aabc
5014    
5015    /^.*? (?>a(*THEN)b|(*F)) c/x
5016        aabc
5017    
5018    /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
5019        aabc
5020    
5021    /^.*? (?> (?>a(*THEN)b) ) c/x
5022        aabc
5023    
5024    /--- Possessive capture ---/
5025    
5026    /^.*? (a(*THEN)b)++ c/x
5027        aabc
5028    
5029    /^.*? (a(*THEN)b|(*F))++ c/x
5030        aabc
5031    
5032    /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
5033        aabc
5034    
5035    /^.*? ( (a(*THEN)b)++ )++ c/x
5036        aabc
5037    
5038    /--- Possessive non-capture ---/
5039    
5040    /^.*? (?:a(*THEN)b)++ c/x
5041        aabc
5042    
5043    /^.*? (?:a(*THEN)b|(*F))++ c/x
5044        aabc
5045    
5046    /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
5047        aabc
5048    
5049    /^.*? (?: (?:a(*THEN)b)++ )++ c/x
5050        aabc
5051    
5052    /--- Condition assertion ---/
5053    
5054    /^(?(?=a(*THEN)b)ab|ac)/
5055        ac
5056    
5057    /--- Condition ---/
5058    
5059    /^.*?(?(?=a)a|b(*THEN)c)/
5060        ba
5061    
5062    /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5063        ba
5064    
5065    /^.*?(?(?=a)a(*THEN)b|c)/
5066        ac
5067    
5068    /--- Assertion ---/
5069    
5070    /^.*(?=a(*THEN)b)/
5071        aabc
5072    
5073    /------------------------------/
5074    
5075    /(?>a(*:m))/imsxSK
5076        a
5077    
5078    /(?>(a)(*:m))/imsxSK
5079        a
5080    
5081    /(?<=a(*ACCEPT)b)c/
5082        xacd
5083    
5084    /(?<=(a(*ACCEPT)b))c/
5085        xacd
5086    
5087    /(?<=(a(*COMMIT)b))c/
5088        xabcd
5089        ** Failers
5090        xacd
5091    
5092    /(?<!a(*FAIL)b)c/
5093        xcd
5094        acd
5095    
5096    /(?<=a(*:N)b)c/K
5097        xabcd
5098    
5099    /(?<=a(*PRUNE)b)c/
5100        xabcd
5101    
5102    /(?<=a(*SKIP)b)c/
5103        xabcd
5104    
5105    /(?<=a(*THEN)b)c/
5106        xabcd
5107    
5108    /(a)(?2){2}(.)/
5109        abcd
5110    
5111    /(*MARK:A)(*PRUNE:B)(C|X)/KS
5112        C
5113        D
5114    
5115    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
5116        C
5117        D
5118    
5119    /(*MARK:A)(*THEN:B)(C|X)/KS
5120        C
5121        D
5122    
5123    /(*MARK:A)(*THEN:B)(C|X)/KSY
5124        C
5125        D
5126    
5127    /(*MARK:A)(*THEN:B)(C|X)/KSS
5128        C
5129        D
5130    
5131    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
5132    
5133    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
5134        AAAC
5135    
5136    /--- Same --/
5137    
5138    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
5139        AAAC
5140    
5141    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
5142        AAAC
5143    
5144    /--- This should fail, as a null name is the same as no name ---/
5145    
5146    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
5147        AAAC
5148    
5149    /--- A check on what happens after hitting a mark and them bumping along to
5150    something that does not even start. Perl reports tags after the failures here,
5151    though it does not when the individual letters are made into something
5152    more complicated. ---/
5153    
5154    /A(*:A)B|XX(*:B)Y/K
5155        AABC
5156        XXYZ
5157        ** Failers
5158        XAQQ
5159        XAQQXZZ
5160        AXQQQ
5161        AXXQQQ
5162    
5163    /^(A(*THEN:A)B|C(*THEN:B)D)/K
5164        AB
5165        CD
5166        ** Failers
5167        AC
5168        CB
5169    
5170    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
5171        AB
5172        CD
5173        ** Failers
5174        AC
5175        CB
5176    
5177    /--- An empty name does not pass back an empty string. It is the same as if no
5178    name were given. ---/
5179    
5180    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
5181        AB
5182        CD
5183    
5184    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
5185    
5186    /A(*PRUNE:A)B/K
5187        ACAB
5188    
5189    /--- Mark names can be duplicated ---/
5190    
5191    /A(*:A)B|X(*:A)Y/K
5192        AABC
5193        XXYZ
5194    
5195    /b(*:m)f|a(*:n)w/K
5196        aw
5197        ** Failers
5198        abc
5199    
5200    /b(*:m)f|aw/K
5201        abaw
5202        ** Failers
5203        abc
5204        abax
5205    
5206    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
5207        AAAC
5208    
5209    /a(*PRUNE:X)bc|qq/KY
5210        ** Failers
5211        axy
5212    
5213    /a(*THEN:X)bc|qq/KY
5214        ** Failers
5215        axy
5216    
5217    /(?=a(*MARK:A)b)..x/K
5218        abxy
5219        ** Failers
5220        abpq
5221    
5222    /(?=a(*MARK:A)b)..(*:Y)x/K
5223        abxy
5224        ** Failers
5225        abpq
5226    
5227    /(?=a(*PRUNE:A)b)..x/K
5228        abxy
5229        ** Failers
5230        abpq
5231    
5232    /(?=a(*PRUNE:A)b)..(*:Y)x/K
5233        abxy
5234        ** Failers
5235        abpq
5236    
5237    /(?=a(*THEN:A)b)..x/K
5238        abxy
5239        ** Failers
5240        abpq
5241    
5242    /(?=a(*THEN:A)b)..(*:Y)x/K
5243        abxy
5244        ** Failers
5245        abpq
5246    
5247    /(another)?(\1?)test/
5248        hello world test
5249    
5250    /(another)?(\1+)test/
5251        hello world test
5252    
5253    /(a(*COMMIT)b){0}a(?1)|aac/
5254        aac
5255    
5256    /-- End of testinput1 --/

Legend:
Removed from v.53  
changed lines
  Added in v.934

  ViewVC Help
Powered by ViewVC 1.1.5