/[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 410 by ph10, Wed Apr 1 07:39:22 2009 UTC revision 629 by ph10, Fri Jul 22 09:18:11 2011 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 a possible Perl
6        bug. --/
7    
8    /-- Originally, the Perl >= 5.10 things were in here too, but now I have
9        separated many (most?) of them out into test 11. However, there may still
10        be some that were overlooked. --/
11    
12  /(a)b|/I  /(a)b|/I
13    
14  /abc/I  /abc/I
# Line 40  Line 51 
51    
52  /(?X)[\B]/  /(?X)[\B]/
53    
54    /(?X)[\R]/
55    
56    /(?X)[\X]/
57    
58    /[\B]/BZ
59    
60    /[\R]/BZ
61    
62    /[\X]/BZ
63    
64  /[z-a]/  /[z-a]/
65    
66  /^*/  /^*/
# Line 123  Line 144 
144      defabc      defabc
145      \Zdefabc      \Zdefabc
146    
147  /abc/IP  /abc/P
148      abc      abc
149      *** Failers      *** Failers
150    
151  /^abc|def/IP  /^abc|def/P
152      abcdef      abcdef
153      abcdef\B      abcdef\B
154    
155  /.*((abc)$|(def))/IP  /.*((abc)$|(def))/P
156      defabc      defabc
157      \Zdefabc      \Zdefabc
158    
159  /the quick brown fox/IP  /the quick brown fox/P
160      the quick brown fox      the quick brown fox
161      *** Failers      *** Failers
162      The Quick Brown Fox      The Quick Brown Fox
163    
164  /the quick brown fox/IPi  /the quick brown fox/Pi
165      the quick brown fox      the quick brown fox
166      The Quick Brown Fox      The Quick Brown Fox
167    
168  /abc.def/IP  /abc.def/P
169      *** Failers      *** Failers
170      abc\ndef      abc\ndef
171    
172  /abc$/IP  /abc$/P
173      abc      abc
174      abc\n      abc\n
175    
176  /(abc)\2/IP  /(abc)\2/P
177    
178  /(abc\1)/IP  /(abc\1)/P
179      abc      abc
180    
181  /)/  /)/
# Line 333  Line 354 
354      *** Failers      *** Failers
355      a      a
356    
357  /This one is here because I think Perl 5.005_02 gets the setting of $1 wrong/I  /This one is here because Perl behaves differently; see also the following/I
358    
359  /^(a\1?){4}$/I  /^(a\1?){4}$/I
360        aaaa
361      aaaaaa      aaaaaa
362    
363    /Perl does not fail these two for the final subjects. Neither did PCRE until/
364    /release 8.01. The problem is in backtracking into a subpattern that contains/
365    /a recursive reference to itself. PCRE has now made these into atomic patterns./
366    
367    /^(xa|=?\1a){2}$/
368        xa=xaa
369        ** Failers
370        xa=xaaa
371    
372    /^(xa|=?\1a)+$/
373        xa=xaa
374        ** Failers
375        xa=xaaa
376    
377  /These are syntax tests from Perl 5.005/I  /These are syntax tests from Perl 5.005/I
378    
# Line 593  Line 629 
629      *** Failers      *** Failers
630      \Nabc      \Nabc
631    
632  /a*(b+)(z)(z)/IP  /a*(b+)(z)(z)/P
633      aaaabbbbzzzz      aaaabbbbzzzz
634      aaaabbbbzzzz\O0      aaaabbbbzzzz\O0
635      aaaabbbbzzzz\O1      aaaabbbbzzzz\O1
# Line 1025  Line 1061 
1061  /abc(?C)de(?C1)f/I  /abc(?C)de(?C1)f/I
1062      123abcdef      123abcdef
1063    
1064  /(?C1)\dabc(?C2)def/I  /(?C1)\dabc(?C2)def/IS
1065        1234abcdef
1066        *** Failers
1067        abcdef
1068    
1069    /(?C1)\dabc(?C2)def/ISS
1070      1234abcdef      1234abcdef
1071      *** Failers      *** Failers
1072      abcdef      abcdef
# Line 1122  Line 1163 
1163    
1164  /(a(?1)+b)/DZ  /(a(?1)+b)/DZ
1165    
 /^\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  
   
1166  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I  /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/I
1167      12      12
1168      (((2+2)*-3)-7)      (((2+2)*-3)-7)
# Line 1282  Line 1315 
1315    abcde    abcde
1316    abcdfe    abcdfe
1317    
1318  /a*b/ICDZ  /a*b/ICDZS
1319      ab
1320      aaaab
1321      aaaacb
1322    
1323    /a*b/ICDZSS
1324    ab    ab
1325    aaaab    aaaab
1326    aaaacb    aaaacb
# Line 1292  Line 1330 
1330    aaaab    aaaab
1331    aaaacb    aaaacb
1332    
1333  /(abc|def)x/ICDZ  /(abc|def)x/ICDZS
1334      abcx
1335      defx
1336      ** Failers
1337      abcdefzx
1338    
1339    /(abc|def)x/ICDZSS
1340    abcx    abcx
1341    defx    defx
1342      ** Failers
1343    abcdefzx    abcdefzx
1344    
1345  /(ab|cd){3,4}/IC  /(ab|cd){3,4}/IC
# Line 1302  Line 1347 
1347    abcdabcd    abcdabcd
1348    abcdcdcdcdcd    abcdcdcdcdcd
1349    
1350  /([ab]{,4}c|xy)/ICDZ  /([ab]{,4}c|xy)/ICDZS
1351        Note: that { does NOT introduce a quantifier
1352    
1353    /([ab]{,4}c|xy)/ICDZSS
1354      Note: that { does NOT introduce a quantifier      Note: that { does NOT introduce a quantifier
1355    
1356  /([ab]{1,4}c|xy){4,5}?123/ICDZ  /([ab]{1,4}c|xy){4,5}?123/ICDZ
# Line 1376  Line 1424 
1424      1X      1X
1425      123456\P      123456\P
1426    
1427  /abc/I>testsavedregex  /abc/IS>testsavedregex
1428    <testsavedregex
1429        abc
1430        ** Failers
1431        bca
1432    
1433    /abc/ISS>testsavedregex
1434    <testsavedregex
1435        abc
1436        ** Failers
1437        bca
1438    
1439    /abc/IFS>testsavedregex
1440  <testsavedregex  <testsavedregex
1441      abc      abc
1442      ** Failers      ** Failers
1443      bca      bca
1444    
1445  /abc/IF>testsavedregex  /abc/IFSS>testsavedregex
1446  <testsavedregex  <testsavedregex
1447      abc      abc
1448      ** Failers      ** Failers
# Line 1394  Line 1454 
1454      ** Failers      ** Failers
1455      def      def
1456    
1457    /(a|b)/ISS>testsavedregex
1458    <testsavedregex
1459        abc
1460        ** Failers
1461        def
1462    
1463  /(a|b)/ISF>testsavedregex  /(a|b)/ISF>testsavedregex
1464  <testsavedregex  <testsavedregex
1465      abc      abc
1466      ** Failers      ** Failers
1467      def      def
1468    
1469    /(a|b)/ISSF>testsavedregex
1470    <testsavedregex
1471        abc
1472        ** Failers
1473        def
1474    
1475  ~<(\w+)/?>(.)*</(\1)>~smgI  ~<(\w+)/?>(.)*</(\1)>~smgI
1476      <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>      <!DOCTYPE seite SYSTEM "http://www.lco.lineas.de/xmlCms.dtd">\n<seite>\n<dokumenteninformation>\n<seitentitel>Partner der LCO</seitentitel>\n<sprache>de</sprache>\n<seitenbeschreibung>Partner der LINEAS Consulting\nGmbH</seitenbeschreibung>\n<schluesselworte>LINEAS Consulting GmbH Hamburg\nPartnerfirmen</schluesselworte>\n<revisit>30 days</revisit>\n<robots>index,follow</robots>\n<menueinformation>\n<aktiv>ja</aktiv>\n<menueposition>3</menueposition>\n<menuetext>Partner</menuetext>\n</menueinformation>\n<lastedited>\n<autor>LCO</autor>\n<firma>LINEAS Consulting</firma>\n<datum>15.10.2003</datum>\n</lastedited>\n</dokumenteninformation>\n<inhalt>\n\n<absatzueberschrift>Die Partnerfirmen der LINEAS Consulting\nGmbH</absatzueberschrift>\n\n<absatz><link ziel="http://www.ca.com/" zielfenster="_blank">\n<bild name="logo_ca.gif" rahmen="no"/></link> <link\nziel="http://www.ey.com/" zielfenster="_blank"><bild\nname="logo_euy.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.cisco.de/" zielfenster="_blank">\n<bild name="logo_cisco.gif" rahmen="ja"/></link></absatz>\n\n<absatz><link ziel="http://www.atelion.de/"\nzielfenster="_blank"><bild\nname="logo_atelion.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><link ziel="http://www.line-information.de/"\nzielfenster="_blank">\n<bild name="logo_line_information.gif" rahmen="no"/></link>\n</absatz>\n\n<absatz><bild name="logo_aw.gif" rahmen="no"/></absatz>\n\n<absatz><link ziel="http://www.incognis.de/"\nzielfenster="_blank"><bild\nname="logo_incognis.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.addcraft.com/"\nzielfenster="_blank"><bild\nname="logo_addcraft.gif" rahmen="no"/></link></absatz>\n\n<absatz><link ziel="http://www.comendo.com/"\nzielfenster="_blank"><bild\nname="logo_comendo.gif" rahmen="no"/></link></absatz>\n\n</inhalt>\n</seite>
1477    
# Line 1419  Line 1491 
1491      ** Failers      ** Failers
1492      line one\nthis is a line\nbreak in the second line      line one\nthis is a line\nbreak in the second line
1493    
1494  /ab.cd/IP  /ab.cd/P
1495      ab-cd      ab-cd
1496      ab=cd      ab=cd
1497      ** Failers      ** Failers
1498      ab\ncd      ab\ncd
1499    
1500  /ab.cd/IPs  /ab.cd/Ps
1501      ab-cd      ab-cd
1502      ab=cd      ab=cd
1503      ab\ncd      ab\ncd
# Line 1480  Line 1552 
1552      (this)      (this)
1553      ((this))      ((this))
1554    
1555  /a(b)c/IPN  /a(b)c/PN
1556      abc      abc
1557    
1558  /a(?P<name>b)c/IPN  /a(?P<name>b)c/PN
1559      abc      abc
1560    
1561  /\x{100}/I  /\x{100}/I
# Line 1915  a random value. /Ix Line 1987  a random value. /Ix
1987  /(?=(?'abc'\w+))\k<abc>:/I  /(?=(?'abc'\w+))\k<abc>:/I
1988      abcd:      abcd:
1989    
 /(?'abc'\w+):\k<abc>{2}/  
     a:aaxyz  
     ab:ababxyz  
     ** Failers  
     a:axyz  
     ab:abxyz  
   
1990  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J  /(?'abc'a|b)(?<abc>d|e)\k<abc>{2}/J
1991      adaa      adaa
1992      ** Failers      ** Failers
# Line 1934  a random value. /Ix Line 1999  a random value. /Ix
1999      ** Failers      ** Failers
2000      bddd      bddd
2001    
 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x  
     abd  
     ce  
   
2002  /(?(<bc))/  /(?(<bc))/
2003    
2004  /(?(''))/  /(?(''))/
# Line 1955  a random value. /Ix Line 2016  a random value. /Ix
2016  /(?<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
2017      abcabc1Xabc2XabcXabcabc      abcabc1Xabc2XabcXabcabc
2018    
 /^(?(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  
   
2019  /^(?(DEFINE) abc | xyz ) /x  /^(?(DEFINE) abc | xyz ) /x
2020    
2021  /(?(DEFINE) abc) xyz/xI  /(?(DEFINE) abc) xyz/xI
# Line 2053  a random value. /Ix Line 2104  a random value. /Ix
2104  /(?1)X(?<abc>P)/I  /(?1)X(?<abc>P)/I
2105      abcPXP123      abcPXP123
2106    
 /(?(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  
   
2107  /(?:a(?&abc)b)*(?<abc>x)/  /(?:a(?&abc)b)*(?<abc>x)/
2108      123axbaxbaxbx456      123axbaxbaxbx456
2109      123axbaxbaxb456      123axbaxbaxb456
# Line 2090  a random value. /Ix Line 2125  a random value. /Ix
2125     defabcabcxyz     defabcabcxyz
2126     DEFabcABCXYZ     DEFabcABCXYZ
2127    
 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/  
     ababababbbabZXXXX  
   
2128  /^(a)\g-2/  /^(a)\g-2/
2129    
2130  /^(a)\g/  /^(a)\g/
# Line 2191  a random value. /Ix Line 2223  a random value. /Ix
2223  /^(?(+1)X|Y)(.)/BZ  /^(?(+1)X|Y)(.)/BZ
2224      Y!      Y!
2225    
 /(foo)\Kbar/  
     foobar  
   
 /(foo)(\Kbar|baz)/  
     foobar  
     foobaz  
   
 /(foo\Kbar)baz/  
     foobarbaz  
   
2226  /(?<A>tom|bon)-\k{A}/  /(?<A>tom|bon)-\k{A}/
2227      tom-tom      tom-tom
2228      bon-bon      bon-bon
2229      ** Failers      ** Failers
2230      tom-bon      tom-bon
2231    
 /(?<A>tom|bon)-\g{A}/  
     tom-tom  
     bon-bon  
   
2232  /\g{A/  /\g{A/
2233    
2234  /(?|(abc)|(xyz))/BZ  /(?|(abc)|(xyz))/BZ
# Line 2225  a random value. /Ix Line 2243  a random value. /Ix
2243      xabcpqrx      xabcpqrx
2244      xxyzx      xxyzx
2245    
 /(?|(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  
   
2246  /[\h]/BZ  /[\h]/BZ
2247      >\x09<      >\x09<
2248    
# Line 2341  a random value. /Ix Line 2315  a random value. /Ix
2315    
2316  /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
2317    
 /^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  
   
2318  /^a+(*FAIL)/C  /^a+(*FAIL)/C
2319      aaaaaa      aaaaaa
2320    
# Line 2402  a random value. /Ix Line 2333  a random value. /Ix
2333  /a+b?(*THEN)c+(*FAIL)/C  /a+b?(*THEN)c+(*FAIL)/C
2334      aaabccc      aaabccc
2335    
 /a(*PRUNE:XXX)b/  
   
2336  /a(*MARK)b/  /a(*MARK)b/
2337    
2338  /(?i:A{1,}\6666666666)/  /(?i:A{1,}\6666666666)/
# Line 2461  a random value. /Ix Line 2390  a random value. /Ix
2390      a\nb      a\nb
2391      a\r\nb      a\r\nb
2392      a\x85b      a\x85b
2393    
2394    /(*ANY).*/g
2395        abc\r\ndef
2396    
2397    /(*ANYCRLF).*/g
2398        abc\r\ndef
2399    
2400    /(*CRLF).*/g
2401        abc\r\ndef
2402    
2403  /a\Rb/I<bsr_anycrlf>  /a\Rb/I<bsr_anycrlf>
2404      a\rb      a\rb
# Line 2559  a random value. /Ix Line 2497  a random value. /Ix
2497    
2498  /\k{}/  /\k{}/
2499    
2500    /\k/
2501    
2502    /\kabc/
2503    
2504  /(?P=)/  /(?P=)/
2505    
2506  /(?P>)/  /(?P>)/
# Line 2589  a random value. /Ix Line 2531  a random value. /Ix
2531    
2532  /[[:a\dz:]]/  /[[:a\dz:]]/
2533    
 /^(?<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  
   
2534  /(^(a|b\g<-1'c))/  /(^(a|b\g<-1'c))/
2535    
 /(^(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  
   
2536  /^(?+1)(?<a>x|y){0}z/  /^(?+1)(?<a>x|y){0}z/
2537      xzxx      xzxx
2538      yzyy      yzyy
# Line 2748  a random value. /Ix Line 2632  a random value. /Ix
2632    abc\Y    abc\Y
2633    abcxypqr    abcxypqr
2634    abcxypqr\Y    abcxypqr\Y
2635    
2636    /(*NO_START_OPT)xyz/C
2637      abcxyz
2638    
2639    /xyz/CY
2640      abcxyz
2641    
2642  /^"((?(?=[a])[^"])|b)*"$/C  /^"((?(?=[a])[^"])|b)*"$/C
2643      "ab"      "ab"
# Line 2755  a random value. /Ix Line 2645  a random value. /Ix
2645  /^"((?(?=[a])[^"])|b)*"$/  /^"((?(?=[a])[^"])|b)*"$/
2646      "ab"      "ab"
2647    
 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/  
     XYabcdY  
   
2648  /^X(?5)(a)(?|(b)|(q))(c)(d)Y/  /^X(?5)(a)(?|(b)|(q))(c)(d)Y/
2649      XYabcdY      XYabcdY
2650    
2651  /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/  /^X(?&N)(a)(?|(b)|(q))(c)(d)(?<N>Y)/
2652      XYabcdY      XYabcdY
2653    
2654    /Xa{2,4}b/
2655        X\P
2656        Xa\P
2657        Xaa\P
2658        Xaaa\P
2659        Xaaaa\P
2660    
2661    /Xa{2,4}?b/
2662        X\P
2663        Xa\P
2664        Xaa\P
2665        Xaaa\P
2666        Xaaaa\P
2667    
2668    /Xa{2,4}+b/
2669        X\P
2670        Xa\P
2671        Xaa\P
2672        Xaaa\P
2673        Xaaaa\P
2674    
2675    /X\d{2,4}b/
2676        X\P
2677        X3\P
2678        X33\P
2679        X333\P
2680        X3333\P
2681    
2682    /X\d{2,4}?b/
2683        X\P
2684        X3\P
2685        X33\P
2686        X333\P
2687        X3333\P
2688    
2689    /X\d{2,4}+b/
2690        X\P
2691        X3\P
2692        X33\P
2693        X333\P
2694        X3333\P
2695    
2696    /X\D{2,4}b/
2697        X\P
2698        Xa\P
2699        Xaa\P
2700        Xaaa\P
2701        Xaaaa\P
2702    
2703    /X\D{2,4}?b/
2704        X\P
2705        Xa\P
2706        Xaa\P
2707        Xaaa\P
2708        Xaaaa\P
2709    
2710    /X\D{2,4}+b/
2711        X\P
2712        Xa\P
2713        Xaa\P
2714        Xaaa\P
2715        Xaaaa\P
2716    
2717    /X[abc]{2,4}b/
2718        X\P
2719        Xa\P
2720        Xaa\P
2721        Xaaa\P
2722        Xaaaa\P
2723    
2724    /X[abc]{2,4}?b/
2725        X\P
2726        Xa\P
2727        Xaa\P
2728        Xaaa\P
2729        Xaaaa\P
2730    
2731    /X[abc]{2,4}+b/
2732        X\P
2733        Xa\P
2734        Xaa\P
2735        Xaaa\P
2736        Xaaaa\P
2737    
2738    /X[^a]{2,4}b/
2739        X\P
2740        Xz\P
2741        Xzz\P
2742        Xzzz\P
2743        Xzzzz\P
2744    
2745    /X[^a]{2,4}?b/
2746        X\P
2747        Xz\P
2748        Xzz\P
2749        Xzzz\P
2750        Xzzzz\P
2751    
2752    /X[^a]{2,4}+b/
2753        X\P
2754        Xz\P
2755        Xzz\P
2756        Xzzz\P
2757        Xzzzz\P
2758    
2759    /(Y)X\1{2,4}b/
2760        YX\P
2761        YXY\P
2762        YXYY\P
2763        YXYYY\P
2764        YXYYYY\P
2765    
2766    /(Y)X\1{2,4}?b/
2767        YX\P
2768        YXY\P
2769        YXYY\P
2770        YXYYY\P
2771        YXYYYY\P
2772    
2773    /(Y)X\1{2,4}+b/
2774        YX\P
2775        YXY\P
2776        YXYY\P
2777        YXYYY\P
2778        YXYYYY\P
2779    
2780    /\++\KZ|\d+X|9+Y/
2781        ++++123999\P
2782        ++++123999Y\P
2783        ++++Z1234\P
2784    
2785    /Z(*F)/
2786        Z\P
2787        ZA\P
2788    
2789    /Z(?!)/
2790        Z\P
2791        ZA\P
2792    
2793    /dog(sbody)?/
2794        dogs\P
2795        dogs\P\P
2796    
2797    /dog(sbody)??/
2798        dogs\P
2799        dogs\P\P
2800    
2801    /dog|dogsbody/
2802        dogs\P
2803        dogs\P\P
2804    
2805    /dogsbody|dog/
2806        dogs\P
2807        dogs\P\P
2808    
2809    /\bthe cat\b/
2810        the cat\P
2811        the cat\P\P
2812    
2813    /abc/
2814       abc\P
2815       abc\P\P
2816    
2817    /\w+A/P
2818       CDAAAAB
2819    
2820    /\w+A/PU
2821       CDAAAAB
2822    
2823    /abc\K123/
2824        xyzabc123pqr
2825        xyzabc12\P
2826        xyzabc12\P\P
2827    
2828    /(?<=abc)123/
2829        xyzabc123pqr
2830        xyzabc12\P
2831        xyzabc12\P\P
2832    
2833    /\babc\b/
2834        +++abc+++
2835        +++ab\P
2836        +++ab\P\P
2837    
2838    /(?&word)(?&element)(?(DEFINE)(?<element><[^m][^>]>[^<])(?<word>\w*+))/BZ
2839    
2840    /(?&word)(?&element)(?(DEFINE)(?<element><[^\d][^>]>[^<])(?<word>\w*+))/BZ
2841    
2842    /(ab)(x(y)z(cd(*ACCEPT)))pq/BZ
2843    
2844    /abc\K/+
2845        abcdef
2846        abcdef\N\N
2847        xyzabcdef\N\N
2848        ** Failers
2849        abcdef\N
2850        xyzabcdef\N
2851    
2852    /^(?:(?=abc)|abc\K)/+
2853        abcdef
2854        abcdef\N\N
2855        ** Failers
2856        abcdef\N
2857    
2858    /a?b?/+
2859        xyz
2860        xyzabc
2861        xyzabc\N
2862        xyzabc\N\N
2863        xyz\N\N
2864        ** Failers
2865        xyz\N
2866    
2867    /^a?b?/+
2868        xyz
2869        xyzabc
2870        ** Failers
2871        xyzabc\N
2872        xyzabc\N\N
2873        xyz\N\N
2874        xyz\N
2875    
2876    /^(?<name>a|b\g<name>c)/
2877        aaaa
2878        bacxxx
2879        bbaccxxx
2880        bbbacccxx
2881    
2882    /^(?<name>a|b\g'name'c)/
2883        aaaa
2884        bacxxx
2885        bbaccxxx
2886        bbbacccxx
2887    
2888    /^(a|b\g<1>c)/
2889        aaaa
2890        bacxxx
2891        bbaccxxx
2892        bbbacccxx
2893    
2894    /^(a|b\g'1'c)/
2895        aaaa
2896        bacxxx
2897        bbaccxxx
2898        bbbacccxx
2899    
2900    /^(a|b\g'-1'c)/
2901        aaaa
2902        bacxxx
2903        bbaccxxx
2904        bbbacccxx
2905    
2906    /(^(a|b\g<-1>c))/
2907        aaaa
2908        bacxxx
2909        bbaccxxx
2910        bbbacccxx
2911    
2912    /(?-i:\g<name>)(?i:(?<name>a))/
2913        XaaX
2914        XAAX
2915    
2916    /(?i:\g<name>)(?-i:(?<name>a))/
2917        XaaX
2918        ** Failers
2919        XAAX
2920    
2921    /(?-i:\g<+1>)(?i:(a))/
2922        XaaX
2923        XAAX
2924    
2925    /(?=(?<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>\})\}))\{/
2926    
2927    /(?<n>a|b|c)\g<n>*/
2928       abc
2929       accccbbb
2930    
2931  /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/  /^X(?7)(a)(?|(b)|(q)(r)(s))(c)(d)(Y)/
2932      XYabcdY      XYabcdY
2933    
2934  /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/  /(?<=b(?1)|zzz)(a)/
2935      XYabcdY      xbaax
2936        xzzzax
2937    
2938    /(a)(?<=b\1)/
2939    
2940    /(a)(?<=b+(?1))/
2941    
2942    /(a+)(?<=b(?1))/
2943    
2944    /(a(?<=b(?1)))/
2945    
2946    /(?<=b(?1))xyz/
2947    
2948    /(?<=b(?1))xyz(b+)pqrstuvew/
2949    
2950    /(a|bc)\1/SI
2951    
2952    /(a|bc)\1{2,3}/SI
2953    
2954    /(a|bc)(?1)/SI
2955    
2956    /(a|b\1)(a|b\1)/SI
2957    
2958    /(a|b\1){2}/SI
2959    
2960    /(a|bbbb\1)(a|bbbb\1)/SI
2961    
2962    /(a|bbbb\1){2}/SI
2963    
2964    /^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
2965    
2966    /  (?: [\040\t] |  \(
2967    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2968    \)  )*                          # optional leading comment
2969    (?:    (?:
2970    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2971    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2972    |
2973    " (?:                      # opening quote...
2974    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2975    |                     #    or
2976    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2977    )* "  # closing quote
2978    )                    # initial word
2979    (?:  (?: [\040\t] |  \(
2980    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2981    \)  )*  \.  (?: [\040\t] |  \(
2982    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2983    \)  )*   (?:
2984    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2985    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
2986    |
2987    " (?:                      # opening quote...
2988    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
2989    |                     #    or
2990    \\ [^\x80-\xff]           #   Escaped something (something != CR)
2991    )* "  # closing quote
2992    )  )* # further okay, if led by a period
2993    (?: [\040\t] |  \(
2994    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2995    \)  )*  @  (?: [\040\t] |  \(
2996    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
2997    \)  )*    (?:
2998    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
2999    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3000    |   \[                         # [
3001    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3002    \]                        #           ]
3003    )                           # initial subdomain
3004    (?:                                  #
3005    (?: [\040\t] |  \(
3006    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3007    \)  )*  \.                        # if led by a period...
3008    (?: [\040\t] |  \(
3009    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3010    \)  )*   (?:
3011    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3012    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3013    |   \[                         # [
3014    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3015    \]                        #           ]
3016    )                     #   ...further okay
3017    )*
3018    # address
3019    |                     #  or
3020    (?:
3021    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3022    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3023    |
3024    " (?:                      # opening quote...
3025    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3026    |                     #    or
3027    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3028    )* "  # closing quote
3029    )             # one word, optionally followed by....
3030    (?:
3031    [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
3032    \(
3033    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3034    \)       |  # comments, or...
3035    
3036    " (?:                      # opening quote...
3037    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3038    |                     #    or
3039    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3040    )* "  # closing quote
3041    # quoted strings
3042    )*
3043    <  (?: [\040\t] |  \(
3044    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3045    \)  )*                     # leading <
3046    (?:  @  (?: [\040\t] |  \(
3047    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3048    \)  )*    (?:
3049    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3050    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3051    |   \[                         # [
3052    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3053    \]                        #           ]
3054    )                           # initial subdomain
3055    (?:                                  #
3056    (?: [\040\t] |  \(
3057    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3058    \)  )*  \.                        # if led by a period...
3059    (?: [\040\t] |  \(
3060    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3061    \)  )*   (?:
3062    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3063    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3064    |   \[                         # [
3065    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3066    \]                        #           ]
3067    )                     #   ...further okay
3068    )*
3069    
3070    (?:  (?: [\040\t] |  \(
3071    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3072    \)  )*  ,  (?: [\040\t] |  \(
3073    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3074    \)  )*  @  (?: [\040\t] |  \(
3075    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3076    \)  )*    (?:
3077    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3078    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3079    |   \[                         # [
3080    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3081    \]                        #           ]
3082    )                           # initial subdomain
3083    (?:                                  #
3084    (?: [\040\t] |  \(
3085    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3086    \)  )*  \.                        # if led by a period...
3087    (?: [\040\t] |  \(
3088    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3089    \)  )*   (?:
3090    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3091    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3092    |   \[                         # [
3093    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3094    \]                        #           ]
3095    )                     #   ...further okay
3096    )*
3097    )* # further okay, if led by comma
3098    :                                # closing colon
3099    (?: [\040\t] |  \(
3100    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3101    \)  )*  )? #       optional route
3102    (?:
3103    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3104    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3105    |
3106    " (?:                      # opening quote...
3107    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3108    |                     #    or
3109    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3110    )* "  # closing quote
3111    )                    # initial word
3112    (?:  (?: [\040\t] |  \(
3113    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3114    \)  )*  \.  (?: [\040\t] |  \(
3115    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3116    \)  )*   (?:
3117    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3118    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3119    |
3120    " (?:                      # opening quote...
3121    [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
3122    |                     #    or
3123    \\ [^\x80-\xff]           #   Escaped something (something != CR)
3124    )* "  # closing quote
3125    )  )* # further okay, if led by a period
3126    (?: [\040\t] |  \(
3127    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3128    \)  )*  @  (?: [\040\t] |  \(
3129    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3130    \)  )*    (?:
3131    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3132    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3133    |   \[                         # [
3134    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3135    \]                        #           ]
3136    )                           # initial subdomain
3137    (?:                                  #
3138    (?: [\040\t] |  \(
3139    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3140    \)  )*  \.                        # if led by a period...
3141    (?: [\040\t] |  \(
3142    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3143    \)  )*   (?:
3144    [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
3145    (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
3146    |   \[                         # [
3147    (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
3148    \]                        #           ]
3149    )                     #   ...further okay
3150    )*
3151    #       address spec
3152    (?: [\040\t] |  \(
3153    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3154    \)  )*  > #                  trailing >
3155    # name and address
3156    )  (?: [\040\t] |  \(
3157    (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
3158    \)  )*                       # optional trailing comment
3159    /xSI
3160    
3161    /<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
3162    
3163    "(?>.*/)foo"SI
3164    
3165    /(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /xSI
3166    
3167    /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/iSI
3168    
3169    /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/SI
3170    
3171    /<a[\s]+href[\s]*=[\s]*          # find <a href=
3172     ([\"\'])?                       # find single or double quote
3173     (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3174                                     # quote, otherwise match up to next space
3175    /isxSI
3176    
3177    /^(?!:)                       # colon disallowed at start
3178      (?:                         # start of item
3179        (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3180        (?(1)0 | () ) )           # if null previously matched, fail; else null
3181        :                         # followed by colon
3182      ){1,7}                      # end item; 1-7 of them required
3183      [0-9a-f]{1,4} $             # final hex number at end of string
3184      (?(1)|.)                    # check that there was an empty component
3185      /xiIS
3186    
3187    /(?|(?<a>A)|(?<a>B))/I
3188        AB\Ca
3189        BA\Ca
3190    
3191    /(?|(?<a>A)|(?<b>B))/
3192    
3193    /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |
3194        b(?<quote> (?<apostrophe>')|(?<realquote>")) )
3195        (?('quote')[a-z]+|[0-9]+)/JIx
3196        a"aaaaa
3197        b"aaaaa
3198        ** Failers
3199        b"11111
3200        a"11111
3201    
3202    /^(?|(a)(b)(c)(?<D>d)|(?<D>e)) (?('D')X|Y)/JDZx
3203        abcdX
3204        eX
3205        ** Failers
3206        abcdY
3207        ey
3208    
3209    /(?<A>a) (b)(c)  (?<A>d  (?(R&A)$ | (?4)) )/JDZx
3210        abcdd
3211        ** Failers
3212        abcdde
3213    
3214  /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/  /abcd*/
3215      XYabcdY      xxxxabcd\P
3216        xxxxabcd\P\P
3217    
3218    /abcd*/i
3219        xxxxabcd\P
3220        xxxxabcd\P\P
3221        XXXXABCD\P
3222        XXXXABCD\P\P
3223    
3224    /abc\d*/
3225        xxxxabc1\P
3226        xxxxabc1\P\P
3227    
3228    /(a)bc\1*/
3229        xxxxabca\P
3230        xxxxabca\P\P
3231    
3232    /abc[de]*/
3233        xxxxabcde\P
3234        xxxxabcde\P\P
3235    
3236    /-- This is not in the Perl >= 5.10 test because Perl seems currently to be
3237        broken and not behaving as specified in that it *does* bumpalong after
3238        hitting (*COMMIT). --/
3239    
3240    /(?1)(A(*COMMIT)|B)D/
3241        ABD
3242        XABD
3243        BAD
3244        ABXABD
3245        ** Failers
3246        ABX
3247        BAXBAD
3248    
3249    /(\3)(\1)(a)/<JS>
3250        cat
3251    
3252    /(\3)(\1)(a)/SI<JS>
3253        cat
3254    
3255    /(\3)(\1)(a)/SI
3256        cat
3257    
3258    /i(?(DEFINE)(?<s>a))/SI
3259        i
3260    
3261    /()i(?(1)a)/SI
3262        ia
3263    
3264    /(?i)a(?-i)b|c/BZ
3265        XabX
3266        XAbX
3267        CcC
3268        ** Failers
3269        XABX
3270    
3271    /(?i)a(?s)b|c/BZ
3272    
3273    /(?i)a(?s-i)b|c/BZ
3274    
3275    /^(ab(c\1)d|x){2}$/BZ
3276        xabcxd
3277    
3278    /^(?&t)*+(?(DEFINE)(?<t>.))$/BZ
3279    
3280    /^(?&t)*(?(DEFINE)(?<t>.))$/BZ
3281    
3282    / -- The first four of these are not in the Perl >= 5.10 test because Perl
3283         documents that the use of \K in assertions is "not well defined". The
3284         last is here because Perl gives the match as "b" rather than "ab". I
3285         believe this to be a Perl bug. --/
3286    
3287    /(?=a\Kb)ab/
3288        ab
3289    
3290    /(?!a\Kb)ac/
3291        ac
3292    
3293    /^abc(?<=b\Kc)d/
3294        abcd
3295    
3296    /^abc(?<!b\Kq)d/
3297        abcd
3298    
3299    /(?>a\Kb)z|(ab)/
3300        ab
3301    
3302    /----------------------/
3303    
3304    /(?P<L1>(?P<L2>0|)|(?P>L2)(?P>L1))/
3305    
3306    /abc(*MARK:)pqr/
3307    
3308    /abc(*:)pqr/
3309    
3310    /abc(*FAIL:123)xyz/
3311    
3312    /--- This should, and does, fail. In Perl, it does not, which I think is a
3313         bug because replacing the B in the pattern by (B|D) does make it fail. ---/
3314    
3315    /A(*COMMIT)B/+K
3316        ACABX
3317    
3318    /--- These should be different, but in Perl 5.11 are not, which I think
3319         is a bug in Perl. ---/
3320    
3321    /A(*THEN)B|A(*THEN)C/K
3322        AC
3323    
3324    /A(*PRUNE)B|A(*PRUNE)C/K
3325        AC
3326    
3327    /--- A whole lot of tests of verbs with arguments are here rather than in test
3328         11 because Perl doesn't seem to follow its specification entirely
3329         correctly. ---/
3330    
3331    /--- Perl 5.11 sets $REGERROR on the AC failure case here; PCRE does not. It is
3332         not clear how Perl defines "involved in the failure of the match". ---/
3333    
3334    /^(A(*THEN:A)B|C(*THEN:B)D)/K
3335        AB
3336        CD
3337        ** Failers
3338        AC
3339        CB
3340    
3341    /--- Check the use of names for success and failure. PCRE doesn't show these
3342    names for success, though Perl does, contrary to its spec. ---/
3343    
3344    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
3345        AB
3346        CD
3347        ** Failers
3348        AC
3349        CB
3350    
3351    /--- An empty name does not pass back an empty string. It is the same as if no
3352    name were given. ---/
3353    
3354    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
3355        AB
3356        CD
3357    
3358    /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
3359    
3360    /A(*PRUNE:A)B/K
3361        ACAB
3362    
3363    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3364        C
3365        D
3366    
3367    /(*MARK:A)(*PRUNE:B)(C|X)/KSS
3368        C
3369        D
3370    
3371    /(*MARK:A)(*THEN:B)(C|X)/KS
3372        C
3373        D
3374    
3375    /(*MARK:A)(*THEN:B)(C|X)/KSS
3376        C
3377        D
3378    
3379    /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
3380    
3381    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
3382        AAAC
3383    
3384    /--- Same --/
3385    
3386    /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
3387        AAAC
3388    
3389    /--- This should fail; the SKIP advances by one, but when we get to AC, the
3390         PRUNE kills it. ---/
3391    
3392    /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
3393        AAAC
3394    
3395    /A(*:A)A+(*SKIP)(B|Z) | AC/xK
3396        AAAC
3397    
3398    /--- This should fail, as a null name is the same as no name ---/
3399    
3400    /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
3401        AAAC
3402    
3403    /--- This fails in PCRE, and I think that is in accordance with Perl's
3404         documentation, though in Perl it succeeds. ---/
3405    
3406    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
3407        AAAC
3408    
3409    /--- Mark names can be duplicated ---/
3410    
3411    /A(*:A)B|X(*:A)Y/K
3412        AABC
3413        XXYZ
3414    
3415    /^A(*:A)B|^X(*:A)Y/K
3416        ** Failers
3417        XAQQ
3418    
3419    /--- A check on what happens after hitting a mark and them bumping along to
3420    something that does not even start. Perl reports tags after the failures here,
3421    though it does not when the individual letters are made into something
3422    more complicated. ---/
3423    
3424    /A(*:A)B|XX(*:B)Y/K
3425        AABC
3426        XXYZ
3427        ** Failers
3428        XAQQ
3429        XAQQXZZ
3430        AXQQQ
3431        AXXQQQ
3432    
3433    /--- COMMIT at the start of a pattern should be the same as an anchor. Perl
3434    optimizations defeat this. So does the PCRE optimization unless we disable it
3435    with \Y. ---/
3436    
3437    /(*COMMIT)ABC/
3438        ABCDEFG
3439        ** Failers
3440        DEFGABC\Y
3441    
3442    /--- Repeat some tests with added studying. ---/
3443    
3444    /A(*COMMIT)B/+KS
3445        ACABX
3446    
3447    /A(*THEN)B|A(*THEN)C/KS
3448        AC
3449    
3450    /A(*PRUNE)B|A(*PRUNE)C/KS
3451        AC
3452    
3453    /^(A(*THEN:A)B|C(*THEN:B)D)/KS
3454        AB
3455        CD
3456        ** Failers
3457        AC
3458        CB
3459    
3460    /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/KS
3461        AB
3462        CD
3463        ** Failers
3464        AC
3465        CB
3466    
3467    /^(A(*PRUNE:)B|C(*PRUNE:B)D)/KS
3468        AB
3469        CD
3470    
3471    /A(*PRUNE:A)B/KS
3472        ACAB
3473    
3474    /(*MARK:A)(*PRUNE:B)(C|X)/KS
3475        C
3476        D
3477    
3478    /(*MARK:A)(*THEN:B)(C|X)/KS
3479        C
3480        D
3481    
3482    /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xKS
3483        AAAC
3484    
3485   %^(?:  /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xKS
3486   [\x09\x0A\x0D\x20-\x7E]# ASCII      AAAC
3487     | [\xC2-\xDF][\x80-\xBF]# non-overlong 2-byte  
3488     |  \xE0[\xA0-\xBF][\x80-\xBF]# excluding overlongs  /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xKS
3489     | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}  # straight 3-byte      AAAC
3490     |  \xED[\x80-\x9F][\x80-\xBF]# excluding surrogates  
3491     |  \xF0[\x90-\xBF][\x80-\xBF]{2}# planes 1-3  /A(*:A)A+(*SKIP)(B|Z) | AC/xKS
3492     | [\xF1-\xF3][\x80-\xBF]{3}  # planes 4-15      AAAC
3493     |  \xF4[\x80-\x8F][\x80-\xBF]{2}# plane 16  
3494     )*$%xs  /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xKS
3495  <div align="justify"><p>- Im Aufbau -</p><h3 id="aventurien">Aventurien</h3><div style="border: 1px none ; margin: 5px 5px 5px 10px; float:right; width: 100px;"><strong>Navigation</strong> <br /><br /><a href="#aventurien">Aventurien</a><br /><a href="#ferdok">Die Stadt Ferdok</a><br /><a href="#weitere">Weitere Ziele</a></div><p>{mosimage} Aventurien ist ein Kontinent der Welt Dere undAusgangspunkt f&uuml;r die meisten Abenteuer in der Welt von <em>DasSchwarze Auge</em>. Von Nord nach S&uuml;d erstreckt sich derKontinent ca. &uuml;ber 3000 Meilen, von Ost nach West sind esimmerhin noch 2000 Meilen. Von den Tundren Thorwals bis zurW&uuml;ste Khom kann man so ziemlich alle Klimazonen in Aventurienfinden.</p><p>Im Herzen Aventuriens liegt das Kaiserreich, auch das Mittelreichgenannt, mit seiner Hauptstadt Gareth (rot umrandeter Bereich).  DieKultur erinnert entfernt an das mittelalterliche Europa. DieHandlung Drakensangs wird zu gro&szlig;en Teilen im Mittelreichspielen, genauer gesagt, in der Umgebung der Stadt Ferdok (s.u.).Doch auch andere, exotischere Orte sollen Ziel der Reise werden.</p><p>Zahlreiche V&ouml;lker und Rassen bewohnen den Kontinent, allenvoran nat&uuml;rlich die Menschenv&ouml;lker, die die Mehrheit derBewohner stellen. Unter den Menschen gibt es zahlreicheunterschiedliche Kulturen, z. B. die wikinger&auml;hnlichenThorwaler, das Nomadenvolk der Nivesen oder eben dieMittell&auml;nder. Daneben gibt es nat&uuml;rlich nochfantastischere V&ouml;lker wie die Elfen (mit mehrern Untergruppen),Zwerge, Orks und mehr, eben alles, was eine Fantasywelt zu bietenhat.</p><p>&nbsp;</p><h3 id="ferdok">Ferdok</h3><p><a target="_blank" href="images/stories/stadtplan_g.jpg">{mosimage}</a></p><p>Ferdok ist eine Grafenstadt im Mittelreich, etwas westlich derHauptstadt Gareth, und hat etwa 3000 Einwohner. Sie geh&ouml;rt zuden &auml;ltesten menschlichen Siedlungen des Kosch. Im Laufe derGeschichte mu&szlig;te die Stadt jedoch wegen einer &Auml;nderungdes Flu&szlig;laufes des Gro&szlig;en Flu&szlig;es im Jahre 270 BFverlegt werden, da die Stadt in der Bedeutungslosigkeit zu versinkendrohte. Heute liegt Ferdok wieder direkt an der Einm&uuml;ndung desRakula in den Gro&szlig;en Flu&szlig;. Obwohl  die Stadt diefr&uuml;here Bedeutung l&auml;ngst verloren hat, hat sich Ferdok alsein wichtiger Handelshafen etabliert (weltber&uuml;hmt: FerdokerBier). Hier werden die Waren von Gareth umgeschlagen, die &uuml;berdie gro&szlig;e Handelsstra&szlig;e von und nach Ferdok verfrachtetwerden. Ferdok ist damit eines der Tore zum Westen underm&ouml;glicht schnelle Reisen in andere Teile der Aventuriens.</p><p>Verwaltungstechnisch geh&ouml;rt Ferdok zum F&uuml;rstentumKosch, dessen Hauptstadt sie langezeit war. Mittlerweile hat siediesen Status jedoch an Angbar verloren. Trotz seiner wichtigenRolle als Handelsort sind die Bewohner Ferdoks ein eher biederesV&ouml;lkchen und h&auml;ngen der Erinnerung an die ruhmreichereVergangenheit hinterher. Nachts muss man auf den Stra&szlig;enneuerdings aufpassen. Zur Handlungszeit verunsichert n&auml;mlicheine grauenhafte Mordserie die Bewohner Ferdoks und l&auml;sst dieBev&ouml;lkerung nachts nicht richtig schlafen. Einige Bereichesollte man dann grunds&auml;tzlich nicht mehr besuchen, wenn einemdie eigene Gesundheit am Herzen liegt.</p><p>Die Stadt wird eine zentrale Anlaufstelle in Drakensang sein,weswegen sie auch vollst&auml;ndig, nach den Vorgaben desDSA-Regelwerks in das Spiel eingebaut wird. Der Stadtplan (zumVergr&ouml;&szlig;ern anklicken) wurde von Radon Labs dem Regelwerkdirekt entnommen und wird Euch auch f&uuml;r Drakensang gute Diensteleisten.</p><br /><h3 id="weitere">Weitere Reiseziele des Spiels</h3><a target="_blank"href="images/stories/artikel/map.jpg">{mosimage}</a> Insgesamt solles 12 Hauptregionen geben, die jeweils ca. 1 Quadratkilometergro&szlig; sind. Alle diese Regionen unterteilen sich nochmal in&uuml;ber 50 kleinere Gebiete. Bekannt sind neben Ferdok bislang:<ul><li>Avestreu (kleines Dorf s&uuml;d&ouml;stl. von Ferdok)</li><li>Dunkelwald (s&uuml;dl. von Ferdok)</li><li>Ruine Blutberge (s&uuml;dl. von Ferdok, am Rand desDunkelwaldes)</li><li>Moorbr&uuml;ck (s&uuml;dl. des Dunkelwaldes)</li><li>Burg Grimmzahn (westl. von Moorbr&uuml;ck)</li><li>Murolosch (eine Zwergenstadt)</li><li>der Berg Drachensang / Drakensang (im Amboss-Gebirgegelegen)</li></ul><p>&nbsp;</p><p>&nbsp;</p><p>Ausf&uuml;hrlichere Infos:</p><p><a title="Wiki Aventurica" target="_blank"href="http://dsa4.de/wiki">Wiki Aventurica </a>(externer Link)<br /><a href="http://www.eychgras.de/koschwiki/index.php"target="_blank">KoschWiki</a> (externer Link)</p><p>&nbsp;</p></div>      AAAC
3496    
3497    /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xKS
3498        AAAC
3499    
3500    /A(*:A)B|XX(*:B)Y/KS
3501        AABC
3502        XXYZ
3503        ** Failers
3504        XAQQ
3505        XAQQXZZ
3506        AXQQQ
3507        AXXQQQ
3508    
3509    /(*COMMIT)ABC/
3510        ABCDEFG
3511        ** Failers
3512        DEFGABC\Y
3513    
3514    /^(ab (c+(*THEN)cd) | xyz)/x
3515        abcccd
3516    
3517    /^(ab (c+(*PRUNE)cd) | xyz)/x
3518        abcccd
3519    
3520    /^(ab (c+(*FAIL)cd) | xyz)/x
3521        abcccd
3522    
3523    /--- Perl 5.11 gets some of these wrong ---/
3524    
3525    /(?>.(*ACCEPT))*?5/
3526        abcde
3527    
3528    /(.(*ACCEPT))*?5/
3529        abcde
3530    
3531    /(.(*ACCEPT))5/
3532        abcde
3533    
3534    /(.(*ACCEPT))*5/
3535        abcde
3536    
3537    /A\NB./BZ
3538        ACBD
3539        *** Failers
3540        A\nB
3541        ACB\n
3542    
3543    /A\NB./sBZ
3544        ACBD
3545        ACB\n
3546        *** Failers
3547        A\nB
3548    
3549    /A\NB/<crlf>
3550        A\nB
3551        A\rB
3552        ** Failers
3553        A\r\nB
3554    
3555    /\R+b/BZ
3556    
3557    /\R+\n/BZ
3558    
3559    /\R+\d/BZ
3560    
3561    /\d*\R/BZ
3562    
3563    /\s*\R/BZ
3564    
3565    /-- Perl treats this one differently, not failing the second string. I believe
3566        that is a bug in Perl. --/
3567    
3568    /^((abc|abcx)(*THEN)y|abcd)/
3569        abcd
3570        *** Failers
3571        abcxy
3572    
3573    /(?<=abc)def/
3574        abc\P\P
3575    
3576    /abc$/
3577        abc
3578        abc\P
3579        abc\P\P
3580    
3581    /abc$/m
3582        abc
3583        abc\n
3584        abc\P\P
3585        abc\n\P\P
3586        abc\P
3587        abc\n\P
3588    
3589    /abc\z/
3590        abc
3591        abc\P
3592        abc\P\P
3593    
3594    /abc\Z/
3595        abc
3596        abc\P
3597        abc\P\P
3598    
3599    /abc\b/
3600        abc
3601        abc\P
3602        abc\P\P
3603    
3604    /abc\B/
3605        abc
3606        abc\P
3607        abc\P\P
3608    
3609    /.+/
3610        abc\>0
3611        abc\>1
3612        abc\>2
3613        abc\>3
3614        abc\>4
3615        abc\>-4
3616    
3617    /^\cģ/
3618    
3619    /(?P<abn>(?P=abn)xxx)/BZ
3620    
3621    /(a\1z)/BZ
3622    
3623    /(?P<abn>(?P=abn)(?<badstufxxx)/BZ
3624    
3625    /(?P<abn>(?P=axn)xxx)/BZ
3626    
3627    /(?P<abn>(?P=axn)xxx)(?<axn>yy)/BZ
3628    
3629    /-- These tests are here because Perl gets the first one wrong. --/
3630    
3631    /(\R*)(.)/s
3632        \r\n
3633        \r\r\n\n\r
3634        \r\r\n\n\r\n
3635    
3636    /(\R)*(.)/s
3637        \r\n
3638        \r\r\n\n\r
3639        \r\r\n\n\r\n
3640    
3641    /((?>\r\n|\n|\x0b|\f|\r|\x85)*)(.)/s
3642        \r\n
3643        \r\r\n\n\r
3644        \r\r\n\n\r\n
3645    
3646    /-- --/
3647    
3648    /^abc$/BZ
3649    
3650    /^abc$/BZm
3651    
3652    /^(a)*+(\w)/S
3653        aaaaX
3654        ** Failers
3655        aaaa
3656    
3657    /^(?:a)*+(\w)/S
3658        aaaaX
3659        ** Failers
3660        aaaa
3661    
3662    /(a)++1234/SDZ
3663    
3664    /([abc])++1234/SI
3665    
3666    /(?<=(abc)+)X/
3667    
3668    /(^ab)/I
3669    
3670    /(^ab)++/I
3671    
3672    /(^ab|^)+/I
3673    
3674    /(^ab|^)++/I
3675    
3676    /(?:^ab)/I
3677    
3678    /(?:^ab)++/I
3679    
3680    /(?:^ab|^)+/I
3681    
3682    /(?:^ab|^)++/I
3683    
3684    /(.*ab)/I
3685    
3686    /(.*ab)++/I
3687    
3688    /(.*ab|.*)+/I
3689    
3690    /(.*ab|.*)++/I
3691    
3692    /(?:.*ab)/I
3693    
3694    /(?:.*ab)++/I
3695    
3696    /(?:.*ab|.*)+/I
3697    
3698    /(?:.*ab|.*)++/I
3699    
3700    /(?=a)[bcd]/I
3701    
3702    /((?=a))[bcd]/I
3703    
3704    /((?=a))+[bcd]/I
3705    
3706    /((?=a))++[bcd]/I
3707    
3708    /(?=a+)[bcd]/iI
3709    
3710    /(?=a+?)[bcd]/iI
3711    
3712    /(?=a++)[bcd]/iI
3713    
3714    /(?=a{3})[bcd]/iI
3715    
3716    /(abc)\1+/S
3717    
3718    /-- Perl doesn't get these right IMO (the 3rd is PCRE-specific) --/
3719    
3720    /(?1)(?:(b(*ACCEPT))){0}/
3721        b
3722    
3723    /(?1)(?:(b(*ACCEPT))){0}c/
3724        bc
3725        ** Failers
3726        b
3727    
3728    /(?1)(?:((*ACCEPT))){0}c/
3729        c
3730        c\N
3731    
3732    /^.*?(?(?=a)a|b(*THEN)c)/
3733        ba
3734    
3735    /^.*?(?(?=a)a|bc)/
3736        ba
3737    
3738    /-- --/
3739    
3740    /-- These studied versions are here because they are not Perl-compatible; the
3741        studying means the mark is not seen. --/
3742    
3743    /(*MARK:A)(*SKIP:B)(C|X)/KS
3744        C
3745        D
3746    
3747    /(*:A)A+(*SKIP:A)(B|Z)/KS
3748        AAAC
3749    
3750    /-- --/
3751    
3752    "(?=a*(*ACCEPT)b)c"
3753        c
3754        c\N
3755    
3756    /(?1)c(?(DEFINE)((*ACCEPT)b))/
3757        c
3758        c\N
3759    
3760    /(?>(*ACCEPT)b)c/
3761        c
3762        c\N
3763    
3764    /(?:(?>(a)))+a%/++
3765        %aa%
3766    
3767    /(a)b|ac/++
3768        ac\O3
3769    
3770    /(?(DEFINE)(a(?2)|b)(b(?1)|a))(?:(?1)|(?2))/SI
3771    
3772    /(a(?2)|b)(b(?1)|a)(?:(?1)|(?2))/SI
3773    
3774    /(a(?2)|b)(b(?1)|a)(?1)(?2)/SI
3775    
3776    /(abc)(?1)/SI
3777    
3778    /^(?>a)++/
3779        aa\M
3780        aaaaaaaaa\M
3781    
3782    /(a)(?1)++/
3783        aa\M
3784        aaaaaaaaa\M
3785    
3786    /(?:(foo)|(bar)|(baz))X/=
3787        bazfooX
3788        foobazbarX
3789        barfooX
3790        bazX
3791        foobarbazX
3792        bazfooX\O0
3793        bazfooX\O2
3794        bazfooX\O4
3795        bazfooX\O6
3796        bazfooX\O8
3797        bazfooX\O10
3798    
3799  / End of testinput2 /  /-- End of testinput2 --/

Legend:
Removed from v.410  
changed lines
  Added in v.629

  ViewVC Help
Powered by ViewVC 1.1.5