Busybox: Upgrade to 1.21.1 (stable). lsof active.
[tomato.git] / release / src / router / pcre / testdata / testinput1
blobe6d048ad8c4ab4f91966d9911b09b56856988743
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. --/
5 /the quick brown fox/
6     the quick brown fox
7     The quick brown FOX
8     What do you know about the quick brown fox?
9     What do you know about THE QUICK BROWN FOX?
11 /The quick brown fox/i
12     the quick brown fox
13     The quick brown FOX
14     What do you know about the quick brown fox?
15     What do you know about THE QUICK BROWN FOX?
17 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
18     abcd\t\n\r\f\a\e9;\$\\?caxyz
20 /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
21     abxyzpqrrrabbxyyyypqAzz
22     abxyzpqrrrabbxyyyypqAzz
23     aabxyzpqrrrabbxyyyypqAzz
24     aaabxyzpqrrrabbxyyyypqAzz
25     aaaabxyzpqrrrabbxyyyypqAzz
26     abcxyzpqrrrabbxyyyypqAzz
27     aabcxyzpqrrrabbxyyyypqAzz
28     aaabcxyzpqrrrabbxyyyypAzz
29     aaabcxyzpqrrrabbxyyyypqAzz
30     aaabcxyzpqrrrabbxyyyypqqAzz
31     aaabcxyzpqrrrabbxyyyypqqqAzz
32     aaabcxyzpqrrrabbxyyyypqqqqAzz
33     aaabcxyzpqrrrabbxyyyypqqqqqAzz
34     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
35     aaaabcxyzpqrrrabbxyyyypqAzz
36     abxyzzpqrrrabbxyyyypqAzz
37     aabxyzzzpqrrrabbxyyyypqAzz
38     aaabxyzzzzpqrrrabbxyyyypqAzz
39     aaaabxyzzzzpqrrrabbxyyyypqAzz
40     abcxyzzpqrrrabbxyyyypqAzz
41     aabcxyzzzpqrrrabbxyyyypqAzz
42     aaabcxyzzzzpqrrrabbxyyyypqAzz
43     aaaabcxyzzzzpqrrrabbxyyyypqAzz
44     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
45     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
46     aaabcxyzpqrrrabbxyyyypABzz
47     aaabcxyzpqrrrabbxyyyypABBzz
48     >>>aaabxyzpqrrrabbxyyyypqAzz
49     >aaaabxyzpqrrrabbxyyyypqAzz
50     >>>>abcxyzpqrrrabbxyyyypqAzz
51     *** Failers
52     abxyzpqrrabbxyyyypqAzz
53     abxyzpqrrrrabbxyyyypqAzz
54     abxyzpqrrrabxyyyypqAzz
55     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
56     aaaabcxyzzzzpqrrrabbbxyyypqAzz
57     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
59 /^(abc){1,2}zz/
60     abczz
61     abcabczz
62     *** Failers
63     zz
64     abcabcabczz
65     >>abczz
67 /^(b+?|a){1,2}?c/
68     bc
69     bbc
70     bbbc
71     bac
72     bbac
73     aac
74     abbbbbbbbbbbc
75     bbbbbbbbbbbac
76     *** Failers
77     aaac
78     abbbbbbbbbbbac
80 /^(b+|a){1,2}c/
81     bc
82     bbc
83     bbbc
84     bac
85     bbac
86     aac
87     abbbbbbbbbbbc
88     bbbbbbbbbbbac
89     *** Failers
90     aaac
91     abbbbbbbbbbbac
93 /^(b+|a){1,2}?bc/
94     bbc
96 /^(b*|ba){1,2}?bc/
97     babc
98     bbabc
99     bababc
100     *** Failers
101     bababbc
102     babababc
104 /^(ba|b*){1,2}?bc/
105     babc
106     bbabc
107     bababc
108     *** Failers
109     bababbc
110     babababc
112 /^\ca\cA\c[\c{\c:/
113     \x01\x01\e;z
115 /^[ab\]cde]/
116     athing
117     bthing
118     ]thing
119     cthing
120     dthing
121     ething
122     *** Failers
123     fthing
124     [thing
125     \\thing
127 /^[]cde]/
128     ]thing
129     cthing
130     dthing
131     ething
132     *** Failers
133     athing
134     fthing
136 /^[^ab\]cde]/
137     fthing
138     [thing
139     \\thing
140     *** Failers
141     athing
142     bthing
143     ]thing
144     cthing
145     dthing
146     ething
148 /^[^]cde]/
149     athing
150     fthing
151     *** Failers
152     ]thing
153     cthing
154     dthing
155     ething
157 /^\�/
158     �
160 /^ÿ/
161     ÿ
163 /^[0-9]+$/
164     0
165     1
166     2
167     3
168     4
169     5
170     6
171     7
172     8
173     9
174     10
175     100
176     *** Failers
177     abc
179 /^.*nter/
180     enter
181     inter
182     uponter
184 /^xxx[0-9]+$/
185     xxx0
186     xxx1234
187     *** Failers
188     xxx
190 /^.+[0-9][0-9][0-9]$/
191     x123
192     xx123
193     123456
194     *** Failers
195     123
196     x1234
198 /^.+?[0-9][0-9][0-9]$/
199     x123
200     xx123
201     123456
202     *** Failers
203     123
204     x1234
206 /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
207     abc!pqr=apquxz.ixr.zzz.ac.uk
208     *** Failers
209     !pqr=apquxz.ixr.zzz.ac.uk
210     abc!=apquxz.ixr.zzz.ac.uk
211     abc!pqr=apquxz:ixr.zzz.ac.uk
212     abc!pqr=apquxz.ixr.zzz.ac.ukk
215     Well, we need a colon: somewhere
216     *** Fail if we don't
218 /([\da-f:]+)$/i
219     0abc
220     abc
221     fed
222     E
223     ::
224     5f03:12C0::932e
225     fed def
226     Any old stuff
227     *** Failers
228     0zzz
229     gzzz
230     fed\x20
231     Any old rubbish
233 /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
234     .1.2.3
235     A.12.123.0
236     *** Failers
237     .1.2.3333
238     1.2.3
239     1234.2.3
241 /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
242     1 IN SOA non-sp1 non-sp2(
243     1    IN    SOA    non-sp1    non-sp2   (
244     *** Failers
245     1IN SOA non-sp1 non-sp2(
247 /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
248     a.
249     Z.
250     2.
251     ab-c.pq-r.
252     sxk.zzz.ac.uk.
253     x-.y-.
254     *** Failers
255     -abc.peq.
257 /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
258     *.a
259     *.b0-a
260     *.c3-b.c
261     *.c-a.b-c
262     *** Failers
263     *.0
264     *.a-
265     *.a-b.c-
266     *.c-a.0-c
268 /^(?=ab(de))(abd)(e)/
269     abde
271 /^(?!(ab)de|x)(abd)(f)/
272     abdf
274 /^(?=(ab(cd)))(ab)/
275     abcd
277 /^[\da-f](\.[\da-f])*$/i
278     a.b.c.d
279     A.B.C.D
280     a.b.c.1.2.3.C
282 /^\".*\"\s*(;.*)?$/
283     \"1234\"
284     \"abcd\" ;
285     \"\" ; rhubarb
286     *** Failers
287     \"1234\" : things
289 /^$/
290     \
291     *** Failers
293 /   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
294     ab c
295     *** Failers
296     abc
297     ab cde
299 /(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
300     ab c
301     *** Failers
302     abc
303     ab cde
305 /^   a\ b[c ]d       $/x
306     a bcd
307     a b d
308     *** Failers
309     abcd
310     ab d
312 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
313     abcdefhijklm
315 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
316     abcdefhijklm
318 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
319     a+ Z0+\x08\n\x1d\x12
321 /^[.^$|()*+?{,}]+/
322     .^\$(*+)|{?,?}
324 /^a*\w/
325     z
326     az
327     aaaz
328     a
329     aa
330     aaaa
331     a+
332     aa+
334 /^a*?\w/
335     z
336     az
337     aaaz
338     a
339     aa
340     aaaa
341     a+
342     aa+
344 /^a+\w/
345     az
346     aaaz
347     aa
348     aaaa
349     aa+
351 /^a+?\w/
352     az
353     aaaz
354     aa
355     aaaa
356     aa+
358 /^\d{8}\w{2,}/
359     1234567890
360     12345678ab
361     12345678__
362     *** Failers
363     1234567
365 /^[aeiou\d]{4,5}$/
366     uoie
367     1234
368     12345
369     aaaaa
370     *** Failers
371     123456
373 /^[aeiou\d]{4,5}?/
374     uoie
375     1234
376     12345
377     aaaaa
378     123456
380 /\A(abc|def)=(\1){2,3}\Z/
381     abc=abcabc
382     def=defdefdef
383     *** Failers
384     abc=defdef
386 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
387     abcdefghijkcda2
388     abcdefghijkkkkcda2
390 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
391     cataract cataract23
392     catatonic catatonic23
393     caterpillar caterpillar23
396 /^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]/
397     From abcd  Mon Sep 01 12:33:02 1997
399 /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
400     From abcd  Mon Sep 01 12:33:02 1997
401     From abcd  Mon Sep  1 12:33:02 1997
402     *** Failers
403     From abcd  Sep 01 12:33:02 1997
405 /^12.34/s
406     12\n34
407     12\r34
409 /\w+(?=\t)/
410     the quick brown\t fox
412 /foo(?!bar)(.*)/
413     foobar is foolish see?
415 /(?:(?!foo)...|^.{0,2})bar(.*)/
416     foobar crowbar etc
417     barrel
418     2barrel
419     A barrel
421 /^(\D*)(?=\d)(?!123)/
422     abc456
423     *** Failers
424     abc123
426 /^1234(?# test newlines
427   inside)/
428     1234
430 /^1234 #comment in extended re
431   /x
432     1234
434 /#rhubarb
435   abcd/x
436     abcd
438 /^abcd#rhubarb/x
439     abcd
441 /^(a)\1{2,3}(.)/
442     aaab
443     aaaab
444     aaaaab
445     aaaaaab
447 /(?!^)abc/
448     the abc
449     *** Failers
450     abc
452 /(?=^)abc/
453     abc
454     *** Failers
455     the abc
457 /^[ab]{1,3}(ab*|b)/
458     aabbbbb
460 /^[ab]{1,3}?(ab*|b)/
461     aabbbbb
463 /^[ab]{1,3}?(ab*?|b)/
464     aabbbbb
466 /^[ab]{1,3}(ab*?|b)/
467     aabbbbb
469 /  (?: [\040\t] |  \(
470 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
471 \)  )*                          # optional leading comment
472 (?:    (?:
473 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
474 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
476 " (?:                      # opening quote...
477 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
478 |                     #    or
479 \\ [^\x80-\xff]           #   Escaped something (something != CR)
480 )* "  # closing quote
481 )                    # initial word
482 (?:  (?: [\040\t] |  \(
483 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
484 \)  )*  \.  (?: [\040\t] |  \(
485 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
486 \)  )*   (?:
487 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
488 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
490 " (?:                      # opening quote...
491 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
492 |                     #    or
493 \\ [^\x80-\xff]           #   Escaped something (something != CR)
494 )* "  # closing quote
495 )  )* # further okay, if led by a period
496 (?: [\040\t] |  \(
497 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
498 \)  )*  @  (?: [\040\t] |  \(
499 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
500 \)  )*    (?:
501 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
502 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
503 |   \[                         # [
504 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
505 \]                        #           ]
506 )                           # initial subdomain
507 (?:                                  #
508 (?: [\040\t] |  \(
509 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
510 \)  )*  \.                        # if led by a period...
511 (?: [\040\t] |  \(
512 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
513 \)  )*   (?:
514 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
515 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
516 |   \[                         # [
517 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
518 \]                        #           ]
519 )                     #   ...further okay
521 # address
522 |                     #  or
524 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
525 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
527 " (?:                      # opening quote...
528 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
529 |                     #    or
530 \\ [^\x80-\xff]           #   Escaped something (something != CR)
531 )* "  # closing quote
532 )             # one word, optionally followed by....
534 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
536 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
537 \)       |  # comments, or...
539 " (?:                      # opening quote...
540 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
541 |                     #    or
542 \\ [^\x80-\xff]           #   Escaped something (something != CR)
543 )* "  # closing quote
544 # quoted strings
546 <  (?: [\040\t] |  \(
547 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
548 \)  )*                     # leading <
549 (?:  @  (?: [\040\t] |  \(
550 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
551 \)  )*    (?:
552 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
553 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
554 |   \[                         # [
555 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
556 \]                        #           ]
557 )                           # initial subdomain
558 (?:                                  #
559 (?: [\040\t] |  \(
560 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
561 \)  )*  \.                        # if led by a period...
562 (?: [\040\t] |  \(
563 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
564 \)  )*   (?:
565 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
566 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
567 |   \[                         # [
568 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
569 \]                        #           ]
570 )                     #   ...further okay
573 (?:  (?: [\040\t] |  \(
574 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
575 \)  )*  ,  (?: [\040\t] |  \(
576 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
577 \)  )*  @  (?: [\040\t] |  \(
578 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
579 \)  )*    (?:
580 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
581 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
582 |   \[                         # [
583 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
584 \]                        #           ]
585 )                           # initial subdomain
586 (?:                                  #
587 (?: [\040\t] |  \(
588 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
589 \)  )*  \.                        # if led by a period...
590 (?: [\040\t] |  \(
591 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
592 \)  )*   (?:
593 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
594 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
595 |   \[                         # [
596 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
597 \]                        #           ]
598 )                     #   ...further okay
600 )* # further okay, if led by comma
601 :                                # closing colon
602 (?: [\040\t] |  \(
603 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
604 \)  )*  )? #       optional route
606 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
607 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
609 " (?:                      # opening quote...
610 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
611 |                     #    or
612 \\ [^\x80-\xff]           #   Escaped something (something != CR)
613 )* "  # closing quote
614 )                    # initial word
615 (?:  (?: [\040\t] |  \(
616 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
617 \)  )*  \.  (?: [\040\t] |  \(
618 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
619 \)  )*   (?:
620 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
621 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
623 " (?:                      # opening quote...
624 [^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
625 |                     #    or
626 \\ [^\x80-\xff]           #   Escaped something (something != CR)
627 )* "  # closing quote
628 )  )* # further okay, if led by a period
629 (?: [\040\t] |  \(
630 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
631 \)  )*  @  (?: [\040\t] |  \(
632 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
633 \)  )*    (?:
634 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
635 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
636 |   \[                         # [
637 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
638 \]                        #           ]
639 )                           # initial subdomain
640 (?:                                  #
641 (?: [\040\t] |  \(
642 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
643 \)  )*  \.                        # if led by a period...
644 (?: [\040\t] |  \(
645 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
646 \)  )*   (?:
647 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
648 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
649 |   \[                         # [
650 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
651 \]                        #           ]
652 )                     #   ...further okay
654 #       address spec
655 (?: [\040\t] |  \(
656 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
657 \)  )*  > #                  trailing >
658 # name and address
659 )  (?: [\040\t] |  \(
660 (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
661 \)  )*                       # optional trailing comment
663     Alan Other <user\@dom.ain>
664     <user\@dom.ain>
665     user\@dom.ain
666     \"A. Other\" <user.1234\@dom.ain> (a comment)
667     A. Other <user.1234\@dom.ain> (a comment)
668     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
669     A missing angle <user\@some.where
670     *** Failers
671     The quick brown fox
673 /[\040\t]*                    # Nab whitespace.
675 \(                              #  (
676 [^\\\x80-\xff\n\015()] *                             #     normal*
677 (?:                                 #       (
678 (?:  \\ [^\x80-\xff]  |
679 \(                            #  (
680 [^\\\x80-\xff\n\015()] *                            #     normal*
681 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
682 \)                           #                       )
683 )    #         special
684 [^\\\x80-\xff\n\015()] *                         #         normal*
685 )*                                  #            )*
686 \)                             #                )
687 [\040\t]* )*    # If comment found, allow more spaces.
688 # optional leading comment
691 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
692 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
693 # Atom
694 |                       #  or
695 "                                     # "
696 [^\\\x80-\xff\n\015"] *                            #   normal
697 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
698 "                                     #        "
699 # Quoted string
701 [\040\t]*                    # Nab whitespace.
703 \(                              #  (
704 [^\\\x80-\xff\n\015()] *                             #     normal*
705 (?:                                 #       (
706 (?:  \\ [^\x80-\xff]  |
707 \(                            #  (
708 [^\\\x80-\xff\n\015()] *                            #     normal*
709 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
710 \)                           #                       )
711 )    #         special
712 [^\\\x80-\xff\n\015()] *                         #         normal*
713 )*                                  #            )*
714 \)                             #                )
715 [\040\t]* )*    # If comment found, allow more spaces.
718 [\040\t]*                    # Nab whitespace.
720 \(                              #  (
721 [^\\\x80-\xff\n\015()] *                             #     normal*
722 (?:                                 #       (
723 (?:  \\ [^\x80-\xff]  |
724 \(                            #  (
725 [^\\\x80-\xff\n\015()] *                            #     normal*
726 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
727 \)                           #                       )
728 )    #         special
729 [^\\\x80-\xff\n\015()] *                         #         normal*
730 )*                                  #            )*
731 \)                             #                )
732 [\040\t]* )*    # If comment found, allow more spaces.
734 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
735 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
736 # Atom
737 |                       #  or
738 "                                     # "
739 [^\\\x80-\xff\n\015"] *                            #   normal
740 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
741 "                                     #        "
742 # Quoted string
744 [\040\t]*                    # Nab whitespace.
746 \(                              #  (
747 [^\\\x80-\xff\n\015()] *                             #     normal*
748 (?:                                 #       (
749 (?:  \\ [^\x80-\xff]  |
750 \(                            #  (
751 [^\\\x80-\xff\n\015()] *                            #     normal*
752 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
753 \)                           #                       )
754 )    #         special
755 [^\\\x80-\xff\n\015()] *                         #         normal*
756 )*                                  #            )*
757 \)                             #                )
758 [\040\t]* )*    # If comment found, allow more spaces.
759 # additional words
762 [\040\t]*                    # Nab whitespace.
764 \(                              #  (
765 [^\\\x80-\xff\n\015()] *                             #     normal*
766 (?:                                 #       (
767 (?:  \\ [^\x80-\xff]  |
768 \(                            #  (
769 [^\\\x80-\xff\n\015()] *                            #     normal*
770 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
771 \)                           #                       )
772 )    #         special
773 [^\\\x80-\xff\n\015()] *                         #         normal*
774 )*                                  #            )*
775 \)                             #                )
776 [\040\t]* )*    # If comment found, allow more spaces.
778 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
779 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
781 \[                            # [
782 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
783 \]                           #           ]
785 [\040\t]*                    # Nab whitespace.
787 \(                              #  (
788 [^\\\x80-\xff\n\015()] *                             #     normal*
789 (?:                                 #       (
790 (?:  \\ [^\x80-\xff]  |
791 \(                            #  (
792 [^\\\x80-\xff\n\015()] *                            #     normal*
793 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
794 \)                           #                       )
795 )    #         special
796 [^\\\x80-\xff\n\015()] *                         #         normal*
797 )*                                  #            )*
798 \)                             #                )
799 [\040\t]* )*    # If comment found, allow more spaces.
800 # optional trailing comments
803 [\040\t]*                    # Nab whitespace.
805 \(                              #  (
806 [^\\\x80-\xff\n\015()] *                             #     normal*
807 (?:                                 #       (
808 (?:  \\ [^\x80-\xff]  |
809 \(                            #  (
810 [^\\\x80-\xff\n\015()] *                            #     normal*
811 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
812 \)                           #                       )
813 )    #         special
814 [^\\\x80-\xff\n\015()] *                         #         normal*
815 )*                                  #            )*
816 \)                             #                )
817 [\040\t]* )*    # If comment found, allow more spaces.
819 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
820 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
822 \[                            # [
823 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
824 \]                           #           ]
826 [\040\t]*                    # Nab whitespace.
828 \(                              #  (
829 [^\\\x80-\xff\n\015()] *                             #     normal*
830 (?:                                 #       (
831 (?:  \\ [^\x80-\xff]  |
832 \(                            #  (
833 [^\\\x80-\xff\n\015()] *                            #     normal*
834 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
835 \)                           #                       )
836 )    #         special
837 [^\\\x80-\xff\n\015()] *                         #         normal*
838 )*                                  #            )*
839 \)                             #                )
840 [\040\t]* )*    # If comment found, allow more spaces.
841 # optional trailing comments
843 # address
844 |                             #  or
846 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
847 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
848 # Atom
849 |                       #  or
850 "                                     # "
851 [^\\\x80-\xff\n\015"] *                            #   normal
852 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
853 "                                     #        "
854 # Quoted string
856 # leading word
857 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
860 \(                              #  (
861 [^\\\x80-\xff\n\015()] *                             #     normal*
862 (?:                                 #       (
863 (?:  \\ [^\x80-\xff]  |
864 \(                            #  (
865 [^\\\x80-\xff\n\015()] *                            #     normal*
866 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
867 \)                           #                       )
868 )    #         special
869 [^\\\x80-\xff\n\015()] *                         #         normal*
870 )*                                  #            )*
871 \)                             #                )
873 "                                     # "
874 [^\\\x80-\xff\n\015"] *                            #   normal
875 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
876 "                                     #        "
877 ) # "special" comment or quoted string
878 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
881 [\040\t]*                    # Nab whitespace.
883 \(                              #  (
884 [^\\\x80-\xff\n\015()] *                             #     normal*
885 (?:                                 #       (
886 (?:  \\ [^\x80-\xff]  |
887 \(                            #  (
888 [^\\\x80-\xff\n\015()] *                            #     normal*
889 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
890 \)                           #                       )
891 )    #         special
892 [^\\\x80-\xff\n\015()] *                         #         normal*
893 )*                                  #            )*
894 \)                             #                )
895 [\040\t]* )*    # If comment found, allow more spaces.
896 # <
899 [\040\t]*                    # Nab whitespace.
901 \(                              #  (
902 [^\\\x80-\xff\n\015()] *                             #     normal*
903 (?:                                 #       (
904 (?:  \\ [^\x80-\xff]  |
905 \(                            #  (
906 [^\\\x80-\xff\n\015()] *                            #     normal*
907 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
908 \)                           #                       )
909 )    #         special
910 [^\\\x80-\xff\n\015()] *                         #         normal*
911 )*                                  #            )*
912 \)                             #                )
913 [\040\t]* )*    # If comment found, allow more spaces.
915 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
916 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
918 \[                            # [
919 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
920 \]                           #           ]
922 [\040\t]*                    # Nab whitespace.
924 \(                              #  (
925 [^\\\x80-\xff\n\015()] *                             #     normal*
926 (?:                                 #       (
927 (?:  \\ [^\x80-\xff]  |
928 \(                            #  (
929 [^\\\x80-\xff\n\015()] *                            #     normal*
930 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
931 \)                           #                       )
932 )    #         special
933 [^\\\x80-\xff\n\015()] *                         #         normal*
934 )*                                  #            )*
935 \)                             #                )
936 [\040\t]* )*    # If comment found, allow more spaces.
937 # optional trailing comments
940 [\040\t]*                    # Nab whitespace.
942 \(                              #  (
943 [^\\\x80-\xff\n\015()] *                             #     normal*
944 (?:                                 #       (
945 (?:  \\ [^\x80-\xff]  |
946 \(                            #  (
947 [^\\\x80-\xff\n\015()] *                            #     normal*
948 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
949 \)                           #                       )
950 )    #         special
951 [^\\\x80-\xff\n\015()] *                         #         normal*
952 )*                                  #            )*
953 \)                             #                )
954 [\040\t]* )*    # If comment found, allow more spaces.
956 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
957 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
959 \[                            # [
960 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
961 \]                           #           ]
963 [\040\t]*                    # Nab whitespace.
965 \(                              #  (
966 [^\\\x80-\xff\n\015()] *                             #     normal*
967 (?:                                 #       (
968 (?:  \\ [^\x80-\xff]  |
969 \(                            #  (
970 [^\\\x80-\xff\n\015()] *                            #     normal*
971 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
972 \)                           #                       )
973 )    #         special
974 [^\\\x80-\xff\n\015()] *                         #         normal*
975 )*                                  #            )*
976 \)                             #                )
977 [\040\t]* )*    # If comment found, allow more spaces.
978 # optional trailing comments
980 (?: ,
981 [\040\t]*                    # Nab whitespace.
983 \(                              #  (
984 [^\\\x80-\xff\n\015()] *                             #     normal*
985 (?:                                 #       (
986 (?:  \\ [^\x80-\xff]  |
987 \(                            #  (
988 [^\\\x80-\xff\n\015()] *                            #     normal*
989 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
990 \)                           #                       )
991 )    #         special
992 [^\\\x80-\xff\n\015()] *                         #         normal*
993 )*                                  #            )*
994 \)                             #                )
995 [\040\t]* )*    # If comment found, allow more spaces.
997 [\040\t]*                    # Nab whitespace.
999 \(                              #  (
1000 [^\\\x80-\xff\n\015()] *                             #     normal*
1001 (?:                                 #       (
1002 (?:  \\ [^\x80-\xff]  |
1003 \(                            #  (
1004 [^\\\x80-\xff\n\015()] *                            #     normal*
1005 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1006 \)                           #                       )
1007 )    #         special
1008 [^\\\x80-\xff\n\015()] *                         #         normal*
1009 )*                                  #            )*
1010 \)                             #                )
1011 [\040\t]* )*    # If comment found, allow more spaces.
1013 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1014 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1016 \[                            # [
1017 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1018 \]                           #           ]
1020 [\040\t]*                    # Nab whitespace.
1022 \(                              #  (
1023 [^\\\x80-\xff\n\015()] *                             #     normal*
1024 (?:                                 #       (
1025 (?:  \\ [^\x80-\xff]  |
1026 \(                            #  (
1027 [^\\\x80-\xff\n\015()] *                            #     normal*
1028 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1029 \)                           #                       )
1030 )    #         special
1031 [^\\\x80-\xff\n\015()] *                         #         normal*
1032 )*                                  #            )*
1033 \)                             #                )
1034 [\040\t]* )*    # If comment found, allow more spaces.
1035 # optional trailing comments
1038 [\040\t]*                    # Nab whitespace.
1040 \(                              #  (
1041 [^\\\x80-\xff\n\015()] *                             #     normal*
1042 (?:                                 #       (
1043 (?:  \\ [^\x80-\xff]  |
1044 \(                            #  (
1045 [^\\\x80-\xff\n\015()] *                            #     normal*
1046 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1047 \)                           #                       )
1048 )    #         special
1049 [^\\\x80-\xff\n\015()] *                         #         normal*
1050 )*                                  #            )*
1051 \)                             #                )
1052 [\040\t]* )*    # If comment found, allow more spaces.
1054 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1055 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1057 \[                            # [
1058 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1059 \]                           #           ]
1061 [\040\t]*                    # Nab whitespace.
1063 \(                              #  (
1064 [^\\\x80-\xff\n\015()] *                             #     normal*
1065 (?:                                 #       (
1066 (?:  \\ [^\x80-\xff]  |
1067 \(                            #  (
1068 [^\\\x80-\xff\n\015()] *                            #     normal*
1069 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1070 \)                           #                       )
1071 )    #         special
1072 [^\\\x80-\xff\n\015()] *                         #         normal*
1073 )*                                  #            )*
1074 \)                             #                )
1075 [\040\t]* )*    # If comment found, allow more spaces.
1076 # optional trailing comments
1078 )*  # additional domains
1080 [\040\t]*                    # Nab whitespace.
1082 \(                              #  (
1083 [^\\\x80-\xff\n\015()] *                             #     normal*
1084 (?:                                 #       (
1085 (?:  \\ [^\x80-\xff]  |
1086 \(                            #  (
1087 [^\\\x80-\xff\n\015()] *                            #     normal*
1088 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1089 \)                           #                       )
1090 )    #         special
1091 [^\\\x80-\xff\n\015()] *                         #         normal*
1092 )*                                  #            )*
1093 \)                             #                )
1094 [\040\t]* )*    # If comment found, allow more spaces.
1095 # optional trailing comments
1096 )?     #       optional route
1098 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1099 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1100 # Atom
1101 |                       #  or
1102 "                                     # "
1103 [^\\\x80-\xff\n\015"] *                            #   normal
1104 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1105 "                                     #        "
1106 # Quoted string
1108 [\040\t]*                    # Nab whitespace.
1110 \(                              #  (
1111 [^\\\x80-\xff\n\015()] *                             #     normal*
1112 (?:                                 #       (
1113 (?:  \\ [^\x80-\xff]  |
1114 \(                            #  (
1115 [^\\\x80-\xff\n\015()] *                            #     normal*
1116 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1117 \)                           #                       )
1118 )    #         special
1119 [^\\\x80-\xff\n\015()] *                         #         normal*
1120 )*                                  #            )*
1121 \)                             #                )
1122 [\040\t]* )*    # If comment found, allow more spaces.
1125 [\040\t]*                    # Nab whitespace.
1127 \(                              #  (
1128 [^\\\x80-\xff\n\015()] *                             #     normal*
1129 (?:                                 #       (
1130 (?:  \\ [^\x80-\xff]  |
1131 \(                            #  (
1132 [^\\\x80-\xff\n\015()] *                            #     normal*
1133 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1134 \)                           #                       )
1135 )    #         special
1136 [^\\\x80-\xff\n\015()] *                         #         normal*
1137 )*                                  #            )*
1138 \)                             #                )
1139 [\040\t]* )*    # If comment found, allow more spaces.
1141 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1142 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1143 # Atom
1144 |                       #  or
1145 "                                     # "
1146 [^\\\x80-\xff\n\015"] *                            #   normal
1147 (?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1148 "                                     #        "
1149 # Quoted string
1151 [\040\t]*                    # Nab whitespace.
1153 \(                              #  (
1154 [^\\\x80-\xff\n\015()] *                             #     normal*
1155 (?:                                 #       (
1156 (?:  \\ [^\x80-\xff]  |
1157 \(                            #  (
1158 [^\\\x80-\xff\n\015()] *                            #     normal*
1159 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1160 \)                           #                       )
1161 )    #         special
1162 [^\\\x80-\xff\n\015()] *                         #         normal*
1163 )*                                  #            )*
1164 \)                             #                )
1165 [\040\t]* )*    # If comment found, allow more spaces.
1166 # additional words
1169 [\040\t]*                    # Nab whitespace.
1171 \(                              #  (
1172 [^\\\x80-\xff\n\015()] *                             #     normal*
1173 (?:                                 #       (
1174 (?:  \\ [^\x80-\xff]  |
1175 \(                            #  (
1176 [^\\\x80-\xff\n\015()] *                            #     normal*
1177 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1178 \)                           #                       )
1179 )    #         special
1180 [^\\\x80-\xff\n\015()] *                         #         normal*
1181 )*                                  #            )*
1182 \)                             #                )
1183 [\040\t]* )*    # If comment found, allow more spaces.
1185 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1186 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1188 \[                            # [
1189 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1190 \]                           #           ]
1192 [\040\t]*                    # Nab whitespace.
1194 \(                              #  (
1195 [^\\\x80-\xff\n\015()] *                             #     normal*
1196 (?:                                 #       (
1197 (?:  \\ [^\x80-\xff]  |
1198 \(                            #  (
1199 [^\\\x80-\xff\n\015()] *                            #     normal*
1200 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1201 \)                           #                       )
1202 )    #         special
1203 [^\\\x80-\xff\n\015()] *                         #         normal*
1204 )*                                  #            )*
1205 \)                             #                )
1206 [\040\t]* )*    # If comment found, allow more spaces.
1207 # optional trailing comments
1210 [\040\t]*                    # Nab whitespace.
1212 \(                              #  (
1213 [^\\\x80-\xff\n\015()] *                             #     normal*
1214 (?:                                 #       (
1215 (?:  \\ [^\x80-\xff]  |
1216 \(                            #  (
1217 [^\\\x80-\xff\n\015()] *                            #     normal*
1218 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1219 \)                           #                       )
1220 )    #         special
1221 [^\\\x80-\xff\n\015()] *                         #         normal*
1222 )*                                  #            )*
1223 \)                             #                )
1224 [\040\t]* )*    # If comment found, allow more spaces.
1226 [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1227 (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1229 \[                            # [
1230 (?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1231 \]                           #           ]
1233 [\040\t]*                    # Nab whitespace.
1235 \(                              #  (
1236 [^\\\x80-\xff\n\015()] *                             #     normal*
1237 (?:                                 #       (
1238 (?:  \\ [^\x80-\xff]  |
1239 \(                            #  (
1240 [^\\\x80-\xff\n\015()] *                            #     normal*
1241 (?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1242 \)                           #                       )
1243 )    #         special
1244 [^\\\x80-\xff\n\015()] *                         #         normal*
1245 )*                                  #            )*
1246 \)                             #                )
1247 [\040\t]* )*    # If comment found, allow more spaces.
1248 # optional trailing comments
1250 #       address spec
1251 >                    #                 >
1252 # name and address
1255     Alan Other <user\@dom.ain>
1256     <user\@dom.ain>
1257     user\@dom.ain
1258     \"A. Other\" <user.1234\@dom.ain> (a comment)
1259     A. Other <user.1234\@dom.ain> (a comment)
1260     \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1261     A missing angle <user\@some.where
1262     *** Failers
1263     The quick brown fox
1265 /abc\0def\00pqr\000xyz\0000AB/
1266     abc\0def\00pqr\000xyz\0000AB
1267     abc456 abc\0def\00pqr\000xyz\0000ABCDE
1269 /abc\x0def\x00pqr\x000xyz\x0000AB/
1270     abc\x0def\x00pqr\x000xyz\x0000AB
1271     abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1273 /^[\000-\037]/
1274     \0A
1275     \01B
1276     \037C
1278 /\0*/
1279     \0\0\0\0
1281 /A\x0{2,3}Z/
1282     The A\x0\x0Z
1283     An A\0\x0\0Z
1284     *** Failers
1285     A\0Z
1286     A\0\x0\0\x0Z
1288 /^(cow|)\1(bell)/
1289     cowcowbell
1290     bell
1291     *** Failers
1292     cowbell
1294 /^\s/
1295     \040abc
1296     \x0cabc
1297     \nabc
1298     \rabc
1299     \tabc
1300     *** Failers
1301     abc
1303 /^a     b
1304     \f  c/x
1305     abc
1307 /^(a|)\1*b/
1308     ab
1309     aaaab
1310     b
1311     *** Failers
1312     acb
1314 /^(a|)\1+b/
1315     aab
1316     aaaab
1317     b
1318     *** Failers
1319     ab
1321 /^(a|)\1?b/
1322     ab
1323     aab
1324     b
1325     *** Failers
1326     acb
1328 /^(a|)\1{2}b/
1329     aaab
1330     b
1331     *** Failers
1332     ab
1333     aab
1334     aaaab
1336 /^(a|)\1{2,3}b/
1337     aaab
1338     aaaab
1339     b
1340     *** Failers
1341     ab
1342     aab
1343     aaaaab
1345 /ab{1,3}bc/
1346     abbbbc
1347     abbbc
1348     abbc
1349     *** Failers
1350     abc
1351     abbbbbc
1353 /([^.]*)\.([^:]*):[T ]+(.*)/
1354     track1.title:TBlah blah blah
1356 /([^.]*)\.([^:]*):[T ]+(.*)/i
1357     track1.title:TBlah blah blah
1359 /([^.]*)\.([^:]*):[t ]+(.*)/i
1360     track1.title:TBlah blah blah
1362 /^[W-c]+$/
1363     WXY_^abc
1364     *** Failers
1365     wxy
1367 /^[W-c]+$/i
1368     WXY_^abc
1369     wxy_^ABC
1371 /^[\x3f-\x5F]+$/i
1372     WXY_^abc
1373     wxy_^ABC
1375 /^abc$/m
1376     abc
1377     qqq\nabc
1378     abc\nzzz
1379     qqq\nabc\nzzz
1381 /^abc$/
1382     abc
1383     *** Failers
1384     qqq\nabc
1385     abc\nzzz
1386     qqq\nabc\nzzz
1388 /\Aabc\Z/m
1389     abc
1390     abc\n 
1391     *** Failers
1392     qqq\nabc
1393     abc\nzzz
1394     qqq\nabc\nzzz
1395     
1396 /\A(.)*\Z/s
1397     abc\ndef
1399 /\A(.)*\Z/m
1400     *** Failers
1401     abc\ndef
1403 /(?:b)|(?::+)/
1404     b::c
1405     c::b
1407 /[-az]+/
1408     az-
1409     *** Failers
1410     b
1412 /[az-]+/
1413     za-
1414     *** Failers
1415     b
1417 /[a\-z]+/
1418     a-z
1419     *** Failers
1420     b
1422 /[a-z]+/
1423     abcdxyz
1425 /[\d-]+/
1426     12-34
1427     *** Failers
1428     aaa
1430 /[\d-z]+/
1431     12-34z
1432     *** Failers
1433     aaa
1435 /\x5c/
1436     \\
1438 /\x20Z/
1439     the Zoo
1440     *** Failers
1441     Zulu
1443 /(abc)\1/i
1444     abcabc
1445     ABCabc
1446     abcABC
1448 /ab{3cd/
1449     ab{3cd
1451 /ab{3,cd/
1452     ab{3,cd
1454 /ab{3,4a}cd/
1455     ab{3,4a}cd
1457 /{4,5a}bc/
1458     {4,5a}bc
1460 /abc$/
1461     abc
1462     abc\n
1463     *** Failers
1464     abc\ndef
1466 /(abc)\123/
1467     abc\x53
1469 /(abc)\223/
1470     abc\x93
1472 /(abc)\323/
1473     abc\xd3
1475 /(abc)\100/
1476     abc\x40
1477     abc\100
1479 /(abc)\1000/
1480     abc\x400
1481     abc\x40\x30
1482     abc\1000
1483     abc\100\x30
1484     abc\100\060
1485     abc\100\60
1487 /abc\81/
1488     abc\081
1489     abc\0\x38\x31
1491 /abc\91/
1492     abc\091
1493     abc\0\x39\x31
1495 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1496     abcdefghijkllS
1498 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1499     abcdefghijk\12S
1501 /ab\idef/
1502     abidef
1504 /a{0}bc/
1505     bc
1507 /(a|(bc)){0,0}?xyz/
1508     xyz
1510 /abc[\10]de/
1511     abc\010de
1513 /abc[\1]de/
1514     abc\1de
1516 /(abc)[\1]de/
1517     abc\1de
1519 /(?s)a.b/
1520     a\nb
1522 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1523     baNOTccccd
1524     baNOTcccd
1525     baNOTccd
1526     bacccd
1527     *** Failers
1528     anything
1529     b\bc   
1530     baccd
1532 /[^a]/
1533     Abc
1534   
1535 /[^a]/i
1536     Abc 
1538 /[^a]+/
1539     AAAaAbc
1540   
1541 /[^a]+/i
1542     AAAaAbc 
1544 /[^a]+/
1545     bbb\nccc
1546    
1547 /[^k]$/
1548     abc
1549     *** Failers
1550     abk   
1551    
1552 /[^k]{2,3}$/
1553     abc
1554     kbc
1555     kabc 
1556     *** Failers
1557     abk
1558     akb
1559     akk 
1561 /^\d{8,}\@.+[^k]$/
1562     12345678\@a.b.c.d
1563     123456789\@x.y.z
1564     *** Failers
1565     12345678\@x.y.uk
1566     1234567\@a.b.c.d       
1568 /(a)\1{8,}/
1569     aaaaaaaaa
1570     aaaaaaaaaa
1571     *** Failers
1572     aaaaaaa   
1574 /[^a]/
1575     aaaabcd
1576     aaAabcd 
1578 /[^a]/i
1579     aaaabcd
1580     aaAabcd 
1582 /[^az]/
1583     aaaabcd
1584     aaAabcd 
1586 /[^az]/i
1587     aaaabcd
1588     aaAabcd 
1590 /\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
1591  \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
1593 /P[^*]TAIRE[^*]{1,6}?LL/
1594     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1596 /P[^*]TAIRE[^*]{1,}?LL/
1597     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1599 /(\.\d\d[1-9]?)\d+/
1600     1.230003938
1601     1.875000282   
1602     1.235  
1603                   
1604 /(\.\d\d((?=0)|\d(?=\d)))/
1605     1.230003938      
1606     1.875000282
1607     *** Failers 
1608     1.235 
1609     
1610 /a(?)b/
1611     ab 
1613 /\b(foo)\s+(\w+)/i
1614     Food is on the foo table
1615     
1616 /foo(.*)bar/
1617     The food is under the bar in the barn.
1618     
1619 /foo(.*?)bar/  
1620     The food is under the bar in the barn.
1622 /(.*)(\d*)/
1623     I have 2 numbers: 53147
1624     
1625 /(.*)(\d+)/
1626     I have 2 numbers: 53147
1628 /(.*?)(\d*)/
1629     I have 2 numbers: 53147
1631 /(.*?)(\d+)/
1632     I have 2 numbers: 53147
1634 /(.*)(\d+)$/
1635     I have 2 numbers: 53147
1637 /(.*?)(\d+)$/
1638     I have 2 numbers: 53147
1640 /(.*)\b(\d+)$/
1641     I have 2 numbers: 53147
1643 /(.*\D)(\d+)$/
1644     I have 2 numbers: 53147
1646 /^\D*(?!123)/
1647     ABC123
1648      
1649 /^(\D*)(?=\d)(?!123)/
1650     ABC445
1651     *** Failers
1652     ABC123
1653     
1654 /^[W-]46]/
1655     W46]789 
1656     -46]789
1657     *** Failers
1658     Wall
1659     Zebra
1660     42
1661     [abcd] 
1662     ]abcd[
1663        
1664 /^[W-\]46]/
1665     W46]789 
1666     Wall
1667     Zebra
1668     Xylophone  
1669     42
1670     [abcd] 
1671     ]abcd[
1672     \\backslash 
1673     *** Failers
1674     -46]789
1675     well
1676     
1677 /\d\d\/\d\d\/\d\d\d\d/
1678     01/01/2000
1680 /word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1681   word cat dog elephant mussel cow horse canary baboon snake shark otherword
1682   word cat dog elephant mussel cow horse canary baboon snake shark
1684 /word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1685   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
1687 /^(a){0,0}/
1688     bcd
1689     abc
1690     aab     
1692 /^(a){0,1}/
1693     bcd
1694     abc
1695     aab  
1697 /^(a){0,2}/
1698     bcd
1699     abc
1700     aab  
1702 /^(a){0,3}/
1703     bcd
1704     abc
1705     aab
1706     aaa   
1708 /^(a){0,}/
1709     bcd
1710     abc
1711     aab
1712     aaa
1713     aaaaaaaa    
1715 /^(a){1,1}/
1716     bcd
1717     abc
1718     aab  
1720 /^(a){1,2}/
1721     bcd
1722     abc
1723     aab  
1725 /^(a){1,3}/
1726     bcd
1727     abc
1728     aab
1729     aaa   
1731 /^(a){1,}/
1732     bcd
1733     abc
1734     aab
1735     aaa
1736     aaaaaaaa    
1738 /.*\.gif/
1739     borfle\nbib.gif\nno
1741 /.{0,}\.gif/
1742     borfle\nbib.gif\nno
1744 /.*\.gif/m
1745     borfle\nbib.gif\nno
1747 /.*\.gif/s
1748     borfle\nbib.gif\nno
1750 /.*\.gif/ms
1751     borfle\nbib.gif\nno
1752     
1753 /.*$/
1754     borfle\nbib.gif\nno
1756 /.*$/m
1757     borfle\nbib.gif\nno
1759 /.*$/s
1760     borfle\nbib.gif\nno
1762 /.*$/ms
1763     borfle\nbib.gif\nno
1764     
1765 /.*$/
1766     borfle\nbib.gif\nno\n
1768 /.*$/m
1769     borfle\nbib.gif\nno\n
1771 /.*$/s
1772     borfle\nbib.gif\nno\n
1774 /.*$/ms
1775     borfle\nbib.gif\nno\n
1776     
1777 /(.*X|^B)/
1778     abcde\n1234Xyz
1779     BarFoo 
1780     *** Failers
1781     abcde\nBar  
1783 /(.*X|^B)/m
1784     abcde\n1234Xyz
1785     BarFoo 
1786     abcde\nBar  
1788 /(.*X|^B)/s
1789     abcde\n1234Xyz
1790     BarFoo 
1791     *** Failers
1792     abcde\nBar  
1794 /(.*X|^B)/ms
1795     abcde\n1234Xyz
1796     BarFoo 
1797     abcde\nBar  
1799 /(?s)(.*X|^B)/
1800     abcde\n1234Xyz
1801     BarFoo 
1802     *** Failers 
1803     abcde\nBar  
1805 /(?s:.*X|^B)/
1806     abcde\n1234Xyz
1807     BarFoo 
1808     *** Failers 
1809     abcde\nBar  
1811 /^.*B/
1812     **** Failers
1813     abc\nB
1814      
1815 /(?s)^.*B/
1816     abc\nB
1818 /(?m)^.*B/
1819     abc\nB
1820      
1821 /(?ms)^.*B/
1822     abc\nB
1824 /(?ms)^B/
1825     abc\nB
1827 /(?s)B$/
1828     B\n
1830 /^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
1831     123456654321
1832   
1833 /^\d\d\d\d\d\d\d\d\d\d\d\d/
1834     123456654321 
1836 /^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1837     123456654321
1838   
1839 /^[abc]{12}/
1840     abcabcabcabc
1841     
1842 /^[a-c]{12}/
1843     abcabcabcabc
1844     
1845 /^(a|b|c){12}/
1846     abcabcabcabc 
1848 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1849     n
1850     *** Failers 
1851     z 
1853 /abcde{0,0}/
1854     abcd
1855     *** Failers
1856     abce  
1858 /ab[cd]{0,0}e/
1859     abe
1860     *** Failers
1861     abcde 
1862     
1863 /ab(c){0,0}d/
1864     abd
1865     *** Failers
1866     abcd   
1868 /a(b*)/
1869     a
1870     ab
1871     abbbb
1872     *** Failers
1873     bbbbb    
1874     
1875 /ab\d{0}e/
1876     abe
1877     *** Failers
1878     ab1e   
1879     
1880 /"([^\\"]+|\\.)*"/
1881     the \"quick\" brown fox
1882     \"the \\\"quick\\\" brown fox\" 
1884 /.*?/g+
1885     abc
1886   
1887 /\b/g+
1888     abc 
1890 /\b/+g
1891     abc 
1894     abc
1896 /<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>/is
1897   <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
1899 /a[^a]b/
1900     acb
1901     a\nb
1902     
1903 /a.b/
1904     acb
1905     *** Failers 
1906     a\nb   
1907     
1908 /a[^a]b/s
1909     acb
1910     a\nb  
1911     
1912 /a.b/s
1913     acb
1914     a\nb  
1916 /^(b+?|a){1,2}?c/
1917     bac
1918     bbac
1919     bbbac
1920     bbbbac
1921     bbbbbac 
1923 /^(b+|a){1,2}?c/
1924     bac
1925     bbac
1926     bbbac
1927     bbbbac
1928     bbbbbac 
1929     
1930 /(?!\A)x/m
1931     x\nb\n
1932     a\bx\n  
1933     
1934 /\x0{ab}/
1935     \0{ab} 
1937 /(A|B)*?CD/
1938     CD 
1939     
1940 /(A|B)*CD/
1941     CD 
1943 /(AB)*?\1/
1944     ABABAB
1946 /(AB)*\1/
1947     ABABAB
1948     
1949 /(?<!bar)foo/
1950     foo
1951     catfood
1952     arfootle
1953     rfoosh
1954     *** Failers
1955     barfoo
1956     towbarfoo
1958 /\w{3}(?<!bar)foo/
1959     catfood
1960     *** Failers
1961     foo
1962     barfoo
1963     towbarfoo
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
1979 "(?>.*/)foo"
1980     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1982 "(?>.*/)foo"
1983     /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1985 /(?>(\.\d\d[1-9]?))\d+/
1986     1.230003938
1987     1.875000282
1988     *** Failers 
1989     1.235 
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+ 
2000 /((?>\d+))(\w)/
2001     12345a
2002     *** Failers
2003     12345+ 
2005 /(?>a+)b/
2006     aaab
2008 /((?>a+)b)/
2009     aaab
2011 /(?>(a+))b/
2012     aaab
2014 /(?>b)+/
2015     aaabbbccc
2017 /(?>a+|b+|c+)*c/
2018     aaabbbbccccd
2020 /((?>[^()]+)|\([^()]*\))+/
2021     ((abc(ade)ufh()()x
2022     
2023 /\(((?>[^()]+)|\([^()]+\))+\)/ 
2024     (abc)
2025     (abc(def)xyz)
2026     *** Failers
2027     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa   
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 
2043 /(a b(?x)c d (?-x)e f)/
2044     a bcde f
2045     *** Failers
2046     abcdef  
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 
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      
2122 /(?:(a)|b)(?(1)A|B)/
2123     aA
2124     bB
2125     *** Failers
2126     aB
2127     bA    
2129 /^(a)?(?(1)a|b)+$/
2130     aa
2131     b
2132     bb  
2133     *** Failers
2134     ab   
2136 /^(?(?=abc)\w{3}:|\d\d)$/
2137     abc:
2138     12
2139     *** Failers
2140     123
2141     xyz    
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  
2158 /(?(?<!foo)cat|bar)/
2159     foobar
2160     cat
2161     fcat
2162     focat   
2163     *** Failers
2164     foocat  
2166 /( \( )? [^()]+ (?(1) \) |) /x
2167     abcd
2168     (abcd)
2169     the quick (abcd) fox
2170     (abcd   
2172 /( \( )? [^()]+ (?(1) \) ) /x
2173     abcd
2174     (abcd)
2175     the quick (abcd) fox
2176     (abcd   
2178 /^(?(2)a|(1)(2))+$/
2179     12
2180     12a
2181     12aa
2182     *** Failers
2183     1234    
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 
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 
2204 /(?>a*)*/
2205     a
2206     aa
2207     aaaa
2208     
2209 /(abc|)+/
2210     abc
2211     abcabc
2212     abcabcabc
2213     xyz      
2215 /([a]*)*/
2216     a
2217     aaaaa 
2219 /([ab]*)*/
2220     a
2221     b
2222     ababab
2223     aaaabcde
2224     bbbb    
2226 /([^a]*)*/
2227     b
2228     bbbb
2229     aaa   
2231 /([^ab]*)*/
2232     cccc
2233     abab  
2235 /([a]*?)*/
2236     a
2237     aaaa 
2239 /([ab]*?)*/
2240     a
2241     b
2242     abab
2243     baba   
2245 /([^a]*?)*/
2246     b
2247     bbbb
2248     aaa   
2250 /([^ab]*?)*/
2251     c
2252     cccc
2253     baba   
2255 /(?>a*)*/
2256     a
2257     aaabcde 
2259 /((?>a*))*/
2260     aaaaa
2261     aabbaa 
2263 /((?>a*?))*/
2264     aaaaa
2265     aabbaa 
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   
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               
2300 /^([ab](?i)[cd]|[ef])/
2301     ac
2302     aC
2303     bD
2304     elephant
2305     Europe 
2306     frog
2307     France
2308     *** Failers
2309     Africa     
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  
2322 /(?<=foo\n)^bar/m
2323     foo\nbar
2324     *** Failers
2325     bar
2326     baz\nbar   
2328 /(?<=(?<!foo)bar)baz/
2329     barbaz
2330     barbarbaz 
2331     koobarbaz 
2332     *** Failers
2333     baz
2334     foobarbaz 
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./
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               
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               
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./
2377 /abc/
2378     abc
2379     xabcy
2380     ababc
2381     *** Failers
2382     xbc
2383     axc
2384     abx
2386 /ab*c/
2387     abc
2389 /ab*bc/
2390     abc
2391     abbc
2392     abbbbc
2394 /.{1}/
2395     abbbbc
2397 /.{3,4}/
2398     abbbbc
2400 /ab{0,}bc/
2401     abbbbc
2403 /ab+bc/
2404     abbc
2405     *** Failers
2406     abc
2407     abq
2409 /ab{1,}bc/
2411 /ab+bc/
2412     abbbbc
2414 /ab{1,}bc/
2415     abbbbc
2417 /ab{1,3}bc/
2418     abbbbc
2420 /ab{3,4}bc/
2421     abbbbc
2423 /ab{4,5}bc/
2424     *** Failers
2425     abq
2426     abbbbc
2428 /ab?bc/
2429     abbc
2430     abc
2432 /ab{0,1}bc/
2433     abc
2435 /ab?bc/
2437 /ab?c/
2438     abc
2440 /ab{0,1}c/
2441     abc
2443 /^abc$/
2444     abc
2445     *** Failers
2446     abbbbc
2447     abcc
2449 /^abc/
2450     abcc
2452 /^abc$/
2454 /abc$/
2455     aabc
2456     *** Failers
2457     aabc
2458     aabcd
2461     abc
2464     abc
2466 /a.c/
2467     abc
2468     axc
2470 /a.*c/
2471     axyzc
2473 /a[bc]d/
2474     abd
2475     *** Failers
2476     axyzd
2477     abc
2479 /a[b-d]e/
2480     ace
2482 /a[b-d]/
2483     aac
2485 /a[-b]/
2486     a-
2488 /a[b-]/
2489     a-
2491 /a]/
2492     a]
2494 /a[]]b/
2495     a]b
2497 /a[^bc]d/
2498     aed
2499     *** Failers
2500     abd
2501     abd
2503 /a[^-b]c/
2504     adc
2506 /a[^]b]c/
2507     adc
2508     *** Failers
2509     a-c
2510     a]c
2512 /\ba\b/
2513     a-
2514     -a
2515     -a-
2517 /\by\b/
2518     *** Failers
2519     xy
2520     yz
2521     xyz
2523 /\Ba\B/
2524     *** Failers
2525     a-
2526     -a
2527     -a-
2529 /\By\b/
2530     xy
2532 /\by\B/
2533     yz
2535 /\By\B/
2536     xyz
2538 /\w/
2539     a
2541 /\W/
2542     -
2543     *** Failers
2544     -
2545     a
2547 /a\sb/
2548     a b
2550 /a\Sb/
2551     a-b
2552     *** Failers
2553     a-b
2554     a b
2556 /\d/
2557     1
2559 /\D/
2560     -
2561     *** Failers
2562     -
2563     1
2565 /[\w]/
2566     a
2568 /[\W]/
2569     -
2570     *** Failers
2571     -
2572     a
2574 /a[\s]b/
2575     a b
2577 /a[\S]b/
2578     a-b
2579     *** Failers
2580     a-b
2581     a b
2583 /[\d]/
2584     1
2586 /[\D]/
2587     -
2588     *** Failers
2589     -
2590     1
2592 /ab|cd/
2593     abc
2594     abcd
2596 /()ef/
2597     def
2599 /$b/
2601 /a\(b/
2602     a(b
2604 /a\(*b/
2605     ab
2606     a((b
2608 /a\\b/
2609     a\b
2611 /((a))/
2612     abc
2614 /(a)b(c)/
2615     abc
2617 /a+b+c/
2618     aabbabc
2620 /a{1,}b{1,}c/
2621     aabbabc
2623 /a.+?c/
2624     abcabc
2626 /(a+|b)*/
2627     ab
2629 /(a+|b){0,}/
2630     ab
2632 /(a+|b)+/
2633     ab
2635 /(a+|b){1,}/
2636     ab
2638 /(a+|b)?/
2639     ab
2641 /(a+|b){0,1}/
2642     ab
2644 /[^ab]*/
2645     cde
2647 /abc/
2648     *** Failers
2649     b
2650     
2652 /a*/
2653     
2655 /([abc])*d/
2656     abbbcd
2658 /([abc])*bcd/
2659     abcd
2661 /a|b|c|d|e/
2662     e
2664 /(a|b|c|d|e)f/
2665     ef
2667 /abcd*efg/
2668     abcdefg
2670 /ab*/
2671     xabyabbbz
2672     xayabbbz
2674 /(ab|cd)e/
2675     abcde
2677 /[abhgefdc]ij/
2678     hij
2680 /^(ab|cd)e/
2682 /(abc|)ef/
2683     abcdef
2685 /(a|b)c*d/
2686     abcd
2688 /(ab|ab*)bc/
2689     abc
2691 /a([bc]*)c*/
2692     abc
2694 /a([bc]*)(c*d)/
2695     abcd
2697 /a([bc]+)(c*d)/
2698     abcd
2700 /a([bc]*)(c+d)/
2701     abcd
2703 /a[bcd]*dcdcde/
2704     adcdcde
2706 /a[bcd]+dcdcde/
2707     *** Failers
2708     abcde
2709     adcdcde
2711 /(ab|a)b*c/
2712     abc
2714 /((a)(b)c)(d)/
2715     abcd
2717 /[a-zA-Z_][a-zA-Z0-9_]*/
2718     alpha
2720 /^a(bc+|b[eh])g|.h$/
2721     abh
2723 /(bc+d$|ef*g.|h?i(j|k))/
2724     effgz
2725     ij
2726     reffgz
2727     *** Failers
2728     effg
2729     bcdd
2731 /((((((((((a))))))))))/
2732     a
2734 /((((((((((a))))))))))\10/
2735     aa
2737 /(((((((((a)))))))))/
2738     a
2740 /multiple words of text/
2741     *** Failers
2742     aa
2743     uh-uh
2745 /multiple words/
2746     multiple words, yeah
2748 /(.*)c(.*)/
2749     abcde
2751 /\((.*), (.*)\)/
2752     (a, b)
2754 /[k]/
2756 /abcd/
2757     abcd
2759 /a(bc)d/
2760     abcd
2762 /a[-]?c/
2763     ac
2765 /(abc)\1/
2766     abcabc
2768 /([a-c]*)\1/
2769     abcabc
2771 /(a)|\1/
2772     a
2773     *** Failers
2774     ab
2775     x
2777 /(([a-c])b*?\2)*/
2778     ababbbcbc
2780 /(([a-c])b*?\2){3}/
2781     ababbbcbc
2783 /((\3|b)\2(a)x)+/
2784     aaaxabaxbaaxbbax
2786 /((\3|b)\2(a)){2,}/
2787     bbaababbabaaaaabbaaaabba
2789 /abc/i
2790     ABC
2791     XABCY
2792     ABABC
2793     *** Failers
2794     aaxabxbaxbbx
2795     XBC
2796     AXC
2797     ABX
2799 /ab*c/i
2800     ABC
2802 /ab*bc/i
2803     ABC
2804     ABBC
2806 /ab*?bc/i
2807     ABBBBC
2809 /ab{0,}?bc/i
2810     ABBBBC
2812 /ab+?bc/i
2813     ABBC
2815 /ab+bc/i
2816     *** Failers
2817     ABC
2818     ABQ
2820 /ab{1,}bc/i
2822 /ab+bc/i
2823     ABBBBC
2825 /ab{1,}?bc/i
2826     ABBBBC
2828 /ab{1,3}?bc/i
2829     ABBBBC
2831 /ab{3,4}?bc/i
2832     ABBBBC
2834 /ab{4,5}?bc/i
2835     *** Failers
2836     ABQ
2837     ABBBBC
2839 /ab??bc/i
2840     ABBC
2841     ABC
2843 /ab{0,1}?bc/i
2844     ABC
2846 /ab??bc/i
2848 /ab??c/i
2849     ABC
2851 /ab{0,1}?c/i
2852     ABC
2854 /^abc$/i
2855     ABC
2856     *** Failers
2857     ABBBBC
2858     ABCC
2860 /^abc/i
2861     ABCC
2863 /^abc$/i
2865 /abc$/i
2866     AABC
2868 /^/i
2869     ABC
2871 /$/i
2872     ABC
2874 /a.c/i
2875     ABC
2876     AXC
2878 /a.*?c/i
2879     AXYZC
2881 /a.*c/i
2882     *** Failers
2883     AABC
2884     AXYZD
2886 /a[bc]d/i
2887     ABD
2889 /a[b-d]e/i
2890     ACE
2891     *** Failers
2892     ABC
2893     ABD
2895 /a[b-d]/i
2896     AAC
2898 /a[-b]/i
2899     A-
2901 /a[b-]/i
2902     A-
2904 /a]/i
2905     A]
2907 /a[]]b/i
2908     A]B
2910 /a[^bc]d/i
2911     AED
2913 /a[^-b]c/i
2914     ADC
2915     *** Failers
2916     ABD
2917     A-C
2919 /a[^]b]c/i
2920     ADC
2922 /ab|cd/i
2923     ABC
2924     ABCD
2926 /()ef/i
2927     DEF
2929 /$b/i
2930     *** Failers
2931     A]C
2932     B
2934 /a\(b/i
2935     A(B
2937 /a\(*b/i
2938     AB
2939     A((B
2941 /a\\b/i
2942     A\B
2944 /((a))/i
2945     ABC
2947 /(a)b(c)/i
2948     ABC
2950 /a+b+c/i
2951     AABBABC
2953 /a{1,}b{1,}c/i
2954     AABBABC
2956 /a.+?c/i
2957     ABCABC
2959 /a.*?c/i
2960     ABCABC
2962 /a.{0,5}?c/i
2963     ABCABC
2965 /(a+|b)*/i
2966     AB
2968 /(a+|b){0,}/i
2969     AB
2971 /(a+|b)+/i
2972     AB
2974 /(a+|b){1,}/i
2975     AB
2977 /(a+|b)?/i
2978     AB
2980 /(a+|b){0,1}/i
2981     AB
2983 /(a+|b){0,1}?/i
2984     AB
2986 /[^ab]*/i
2987     CDE
2989 /abc/i
2991 /a*/i
2992     
2994 /([abc])*d/i
2995     ABBBCD
2997 /([abc])*bcd/i
2998     ABCD
3000 /a|b|c|d|e/i
3001     E
3003 /(a|b|c|d|e)f/i
3004     EF
3006 /abcd*efg/i
3007     ABCDEFG
3009 /ab*/i
3010     XABYABBBZ
3011     XAYABBBZ
3013 /(ab|cd)e/i
3014     ABCDE
3016 /[abhgefdc]ij/i
3017     HIJ
3019 /^(ab|cd)e/i
3020     ABCDE
3022 /(abc|)ef/i
3023     ABCDEF
3025 /(a|b)c*d/i
3026     ABCD
3028 /(ab|ab*)bc/i
3029     ABC
3031 /a([bc]*)c*/i
3032     ABC
3034 /a([bc]*)(c*d)/i
3035     ABCD
3037 /a([bc]+)(c*d)/i
3038     ABCD
3040 /a([bc]*)(c+d)/i
3041     ABCD
3043 /a[bcd]*dcdcde/i
3044     ADCDCDE
3046 /a[bcd]+dcdcde/i
3048 /(ab|a)b*c/i
3049     ABC
3051 /((a)(b)c)(d)/i
3052     ABCD
3054 /[a-zA-Z_][a-zA-Z0-9_]*/i
3055     ALPHA
3057 /^a(bc+|b[eh])g|.h$/i
3058     ABH
3060 /(bc+d$|ef*g.|h?i(j|k))/i
3061     EFFGZ
3062     IJ
3063     REFFGZ
3064     *** Failers
3065     ADCDCDE
3066     EFFG
3067     BCDD
3069 /((((((((((a))))))))))/i
3070     A
3072 /((((((((((a))))))))))\10/i
3073     AA
3075 /(((((((((a)))))))))/i
3076     A
3078 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3079     A
3081 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3082     C
3084 /multiple words of text/i
3085     *** Failers
3086     AA
3087     UH-UH
3089 /multiple words/i
3090     MULTIPLE WORDS, YEAH
3092 /(.*)c(.*)/i
3093     ABCDE
3095 /\((.*), (.*)\)/i
3096     (A, B)
3098 /[k]/i
3100 /abcd/i
3101     ABCD
3103 /a(bc)d/i
3104     ABCD
3106 /a[-]?c/i
3107     AC
3109 /(abc)\1/i
3110     ABCABC
3112 /([a-c]*)\1/i
3113     ABCABC
3115 /a(?!b)./
3116     abad
3118 /a(?=d)./
3119     abad
3121 /a(?=c|d)./
3122     abad
3124 /a(?:b|c|d)(.)/
3125     ace
3127 /a(?:b|c|d)*(.)/
3128     ace
3130 /a(?:b|c|d)+?(.)/
3131     ace
3132     acdbcdbe
3134 /a(?:b|c|d)+(.)/
3135     acdbcdbe
3137 /a(?:b|c|d){2}(.)/
3138     acdbcdbe
3140 /a(?:b|c|d){4,5}(.)/
3141     acdbcdbe
3143 /a(?:b|c|d){4,5}?(.)/
3144     acdbcdbe
3146 /((foo)|(bar))*/
3147     foobar
3149 /a(?:b|c|d){6,7}(.)/
3150     acdbcdbe
3152 /a(?:b|c|d){6,7}?(.)/
3153     acdbcdbe
3155 /a(?:b|c|d){5,6}(.)/
3156     acdbcdbe
3158 /a(?:b|c|d){5,6}?(.)/
3159     acdbcdbe
3161 /a(?:b|c|d){5,7}(.)/
3162     acdbcdbe
3164 /a(?:b|c|d){5,7}?(.)/
3165     acdbcdbe
3167 /a(?:b|(c|e){1,2}?|d)+?(.)/
3168     ace
3170 /^(.+)?B/
3171     AB
3173 /^([^a-z])|(\^)$/
3174     .
3176 /^[<>]&/
3177     <&OUT
3179 /^(a\1?){4}$/
3180     aaaaaaaaaa
3181     *** Failers
3182     AB
3183     aaaaaaaaa
3184     aaaaaaaaaaa
3186 /^(a(?(1)\1)){4}$/
3187     aaaaaaaaaa
3188     *** Failers
3189     aaaaaaaaa
3190     aaaaaaaaaaa
3192 /(?:(f)(o)(o)|(b)(a)(r))*/
3193     foobar
3195 /(?<=a)b/
3196     ab
3197     *** Failers
3198     cb
3199     b
3201 /(?<!c)b/
3202     ab
3203     b
3204     b
3206 /(?:..)*a/
3207     aba
3209 /(?:..)*?a/
3210     aba
3212 /^(?:b|a(?=(.)))*\1/
3213     abc
3215 /^(){3,5}/
3216     abc
3218 /^(a+)*ax/
3219     aax
3221 /^((a|b)+)*ax/
3222     aax
3224 /^((a|bc)+)*ax/
3225     aax
3227 /(a|x)*ab/
3228     cab
3230 /(a)*ab/
3231     cab
3233 /(?:(?i)a)b/
3234     ab
3236 /((?i)a)b/
3237     ab
3239 /(?:(?i)a)b/
3240     Ab
3242 /((?i)a)b/
3243     Ab
3245 /(?:(?i)a)b/
3246     *** Failers
3247     cb
3248     aB
3250 /((?i)a)b/
3252 /(?i:a)b/
3253     ab
3255 /((?i:a))b/
3256     ab
3258 /(?i:a)b/
3259     Ab
3261 /((?i:a))b/
3262     Ab
3264 /(?i:a)b/
3265     *** Failers
3266     aB
3267     aB
3269 /((?i:a))b/
3271 /(?:(?-i)a)b/i
3272     ab
3274 /((?-i)a)b/i
3275     ab
3277 /(?:(?-i)a)b/i
3278     aB
3280 /((?-i)a)b/i
3281     aB
3283 /(?:(?-i)a)b/i
3284     *** Failers
3285     aB
3286     Ab
3288 /((?-i)a)b/i
3290 /(?:(?-i)a)b/i
3291     aB
3293 /((?-i)a)b/i
3294     aB
3296 /(?:(?-i)a)b/i
3297     *** Failers
3298     Ab
3299     AB
3301 /((?-i)a)b/i
3303 /(?-i:a)b/i
3304     ab
3306 /((?-i:a))b/i
3307     ab
3309 /(?-i:a)b/i
3310     aB
3312 /((?-i:a))b/i
3313     aB
3315 /(?-i:a)b/i
3316     *** Failers
3317     AB
3318     Ab
3320 /((?-i:a))b/i
3322 /(?-i:a)b/i
3323     aB
3325 /((?-i:a))b/i
3326     aB
3328 /(?-i:a)b/i
3329     *** Failers
3330     Ab
3331     AB
3333 /((?-i:a))b/i
3335 /((?-i:a.))b/i
3336     *** Failers
3337     AB
3338     a\nB
3340 /((?s-i:a.))b/i
3341     a\nB
3343 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3344     cabbbb
3346 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3347     caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3349 /(ab)\d\1/i
3350     Ab4ab
3351     ab4Ab
3353 /foo\w*\d{4}baz/
3354     foobar1234baz
3356 /x(~~)*(?:(?:F)?)?/
3357     x~~
3359 /^a(?#xxx){3}c/
3360     aaac
3362 /^a (?#xxx) (?#yyy) {3}c/x
3363     aaac
3365 /(?<![cd])b/
3366     *** Failers
3367     B\nB
3368     dbcb
3370 /(?<![cd])[ab]/
3371     dbaacb
3373 /(?<!(c|d))b/
3375 /(?<!(c|d))[ab]/
3376     dbaacb
3378 /(?<!cd)[ab]/
3379     cdaccb
3381 /^(?:a?b?)*$/
3382     \
3383     a
3384     ab
3385     aaa   
3386     *** Failers
3387     dbcb
3388     a--
3389     aa-- 
3391 /((?s)^a(.))((?m)^b$)/
3392     a\nb\nc\n
3394 /((?m)^b$)/
3395     a\nb\nc\n
3397 /(?m)^b/
3398     a\nb\n
3400 /(?m)^(b)/
3401     a\nb\n
3403 /((?m)^b)/
3404     a\nb\n
3406 /\n((?m)^b)/
3407     a\nb\n
3409 /((?s).)c(?!.)/
3410     a\nb\nc\n
3411     a\nb\nc\n
3413 /((?s)b.)c(?!.)/
3414     a\nb\nc\n
3415     a\nb\nc\n
3417 /^b/
3419 /()^b/
3420     *** Failers
3421     a\nb\nc\n
3422     a\nb\nc\n
3424 /((?m)^b)/
3425     a\nb\nc\n
3427 /(x)?(?(1)a|b)/
3428     *** Failers
3429     a
3430     a
3432 /(x)?(?(1)b|a)/
3433     a
3435 /()?(?(1)b|a)/
3436     a
3438 /()(?(1)b|a)/
3440 /()?(?(1)a|b)/
3441     a
3443 /^(\()?blah(?(1)(\)))$/
3444     (blah)
3445     blah
3446     *** Failers
3447     a
3448     blah)
3449     (blah
3451 /^(\(+)?blah(?(1)(\)))$/
3452     (blah)
3453     blah
3454     *** Failers
3455     blah)
3456     (blah
3458 /(?(?!a)a|b)/
3460 /(?(?!a)b|a)/
3461     a
3463 /(?(?=a)b|a)/
3464     *** Failers
3465     a
3466     a
3468 /(?(?=a)a|b)/
3469     a
3471 /(?=(a+?))(\1ab)/
3472     aaab
3474 /^(?=(a+?))\1ab/
3476 /(\w+:)+/
3477     one:
3479 /$(?<=^(a))/
3480     a
3482 /(?=(a+?))(\1ab)/
3483     aaab
3485 /^(?=(a+?))\1ab/
3486     *** Failers
3487     aaab
3488     aaab
3490 /([\w:]+::)?(\w+)$/
3491     abcd
3492     xy:z:::abcd
3494 /^[^bcd]*(c+)/
3495     aexycd
3497 /(a*)b+/
3498     caab
3500 /([\w:]+::)?(\w+)$/
3501     abcd
3502     xy:z:::abcd
3503     *** Failers
3504     abcd:
3505     abcd:
3507 /^[^bcd]*(c+)/
3508     aexycd
3510 /(>a+)ab/
3512 /(?>a+)b/
3513     aaab
3515 /([[:]+)/
3516     a:[b]:
3518 /([[=]+)/
3519     a=[b]=
3521 /([[.]+)/
3522     a.[b].
3524 /((?>a+)b)/
3525     aaab
3527 /(?>(a+))b/
3528     aaab
3530 /((?>[^()]+)|\([^()]*\))+/
3531     ((abc(ade)ufh()()x
3533 /a\Z/
3534     *** Failers
3535     aaab
3536     a\nb\n
3538 /b\Z/
3539     a\nb\n
3541 /b\z/
3543 /b\Z/
3544     a\nb
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+       
3575 /(?>.*)(?<=(abcd|wxyz))/
3576     alphabetabcd
3577     endingwxyz
3578     *** Failers
3579     a rather long string that doesn't end with one of them
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
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
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  
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
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
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
3639 /((Z)+|A)*/
3640     ZABCDEFG
3642 /(Z()|A)*/
3643     ZABCDEFG
3645 /(Z(())|A)*/
3646     ZABCDEFG
3648 /((?>Z)+|A)*/
3649     ZABCDEFG
3651 /((?>)+|A)*/
3652     ZABCDEFG
3654 /a*/g
3655     abbab
3657 /^[a-\d]/
3658     abcde
3659     -things
3660     0digit
3661     *** Failers
3662     bcdef    
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\vb/x
3684     ab
3686 /(?!\A)x/m
3687   a\nxb\n
3689 /(?!^)x/m
3690   a\nxb\n
3692 /abc\Qabc\Eabc/
3693     abcabcabc
3694     
3695 /abc\Q(*+|\Eabc/
3696     abc(*+|abc 
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     
3708 /abc#comment
3709     \Q#not comment
3710     literal/x
3711     abc#not comment\n    literal     
3713 /abc#comment
3714     \Q#not comment
3715     literal\E #more comment
3716     /x
3717     abc#not comment\n    literal     
3719 /abc#comment
3720     \Q#not comment
3721     literal\E #more comment/x
3722     abc#not comment\n    literal     
3724 /\Qabc\$xyz\E/
3725     abc\\\$xyz
3727 /\Qabc\E\$\Qxyz\E/
3728     abc\$xyz
3730 /\Gabc/
3731     abc
3732     *** Failers
3733     xyzabc  
3735 /\Gabc./g
3736     abc1abc2xyzabc3
3738 /abc./g
3739     abc1abc2xyzabc3 
3741 /a(?x: b c )d/
3742     XabcdY
3743     *** Failers 
3744     Xa b c d Y 
3746 /((?x)x y z | a b c)/
3747     XabcY
3748     AxyzB 
3750 /(?i)AB(?-i)C/
3751     XabCY
3752     *** Failers
3753     XabcY  
3755 /((?i)AB(?-i)C|D)E/
3756     abCE
3757     DE
3758     *** Failers
3759     abcE
3760     abCe  
3761     dE
3762     De    
3764 /(.*)\d+\1/
3765     abc123abc
3766     abc123bc 
3768 /(.*)\d+\1/s
3769     abc123abc
3770     abc123bc 
3771     
3772 /((.*))\d+\1/
3773     abc123abc
3774     abc123bc  
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. --/
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:  
3805 /[z\Qa-d]\E]/
3806     z
3807     a
3808     -
3809     d
3810     ] 
3811     *** Failers
3812     b     
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     regulär 
3830 /Åæåä[à-ÿÀ-ß]+/
3831     Åæåäà
3832     Åæåäÿ
3833     ÅæåäÀ
3834     Åæåäß
3836 /(?<=Z)X./
3837   \x84XAZXB
3839 /ab cd (?x) de fg/
3840     ab cd defg
3842 /ab cd(?x) de fg/
3843     ab cddefg
3844     ** Failers 
3845     abcddefg
3847 /(?<![^f]oo)(bar)/
3848     foobarX 
3849     ** Failers 
3850     boobarX
3852 /(?<![^f])X/
3853     offX
3854     ** Failers
3855     onyX  
3857 /(?<=[^f])X/
3858     onyX
3859     ** Failers
3860     offX 
3862 /^/mg
3863     a\nb\nc\n
3864     \ 
3865     
3866 /(?<=C\n)^/mg
3867     A\nC\nC\n 
3869 /(?:(?(1)a|b)(X))+/
3870     bXaX
3872 /(?:(?(1)\1a|b)(X|Y))+/
3873     bXXaYYaY
3874     bXYaXXaX  
3876 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
3877     bXXaYYaY
3879 /[[,abc,]+]/
3880     abc]
3881     a,b]
3882     [a,b,c]  
3884 /(?-x: )/x
3885     A\x20B
3886     
3887 "(?x)(?-x: \s*#\s*)"
3888     A # B
3889     ** Failers
3890     #  
3892 "(?x-is)(?:(?-ixs) \s*#\s*) include"
3893     A #include
3894     ** Failers
3895     A#include  
3896     A #Include
3898 /a*b*\w/
3899     aaabbbb
3900     aaaa
3901     a
3903 /a*b?\w/
3904     aaabbbb
3905     aaaa
3906     a
3908 /a*b{0,4}\w/
3909     aaabbbb
3910     aaaa
3911     a
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 
3925 /a*b#comment
3926   *\w/x
3927     a 
3929 /a* b *\w/x
3930     a 
3932 /^\w+=.*(\\\n.*)*/
3933     abc=xyz\\\npqr
3935 /(?=(\w+))\1:/
3936     abcd:
3938 /^(?=(\w+))\1:/
3939     abcd:
3941 /^\Eabc/
3942     abc
3943     
3944 /^[\Eabc]/
3945     a
3946     ** Failers 
3947     E 
3948     
3949 /^[a-\Ec]/
3950     b
3951     ** Failers
3952     -
3953     E    
3955 /^[a\E\E-\Ec]/
3956     b
3957     ** Failers
3958     -
3959     E    
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     -     
3975 /^(a()*)*/
3976     aaaa
3978 /^(?:a(?:(?:))*)*/
3979     aaaa
3981 /^(a()+)+/
3982     aaaa
3984 /^(?:a(?:(?:))+)+/
3985     aaaa
3987 /(a){0,3}(?(1)b|(c|))*D/
3988     abbD
3989     ccccD
3990     D  
3992 /(a|)*\d/
3993   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3994   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3996 /(?>a|)*\d/
3997   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3998   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4000 /(?:a|)*\d/
4001   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4002   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4004 /\Z/g
4005   abc\n
4006   
4007 /^(?s)(?>.*)(?<!\n)/
4008   abc
4009   abc\n  
4011 /^(?![^\n]*\n\z)/
4012   abc
4013   abc\n 
4014   
4015 /\z(?<!\n)/
4016   abc
4017   abc\n  
4019 /(.*(.)?)*/
4020     abcd
4022 /( (A | (?(1)0|) )*   )/x
4023     abcd
4025 /( ( (?(1)0|) )*   )/x
4026     abcd
4028 /(  (?(1)0|)*   )/x
4029     abcd
4031 /[[:abcd:xyz]]/
4032     a]
4033     :] 
4034     
4035 /[abc[:x\]pqr]/
4036     a
4037     [
4038     :
4039     ]
4040     p    
4042 /.*[op][xyz]/
4043     fooabcfoo
4045 /(?(?=.*b)b|^)/
4046    adc
4047    abc 
4049 /(?(?=^.*b)b|^)/
4050    adc
4051    abc 
4053 /(?(?=.*b)b|^)*/
4054    adc
4055    abc 
4057 /(?(?=.*b)b|^)+/
4058    adc
4059    abc 
4061 /(?(?=b).*b|^d)/
4062     abc
4064 /(?(?=.*b).*b|^d)/
4065     abc
4067 /^%((?(?=[a])[^%])|b)*%$/
4068     %ab%
4070 /(?i)a(?-i)b|c/
4071     XabX
4072     XAbX
4073     CcC 
4074     ** Failers
4075     XABX   
4077 /[\x00-\xff\s]+/
4078     \x0a\x0b\x0c\x0d
4080 /^\c\x7f/
4081     ?
4083 /(abc)\1/i
4084    abc
4086 /(abc)\1/
4087    abc
4089 /[^a]*/i
4090     12abc
4091     12ABC
4093 /[^a]*+/i
4094     12abc
4095     12ABC
4097 /[^a]*?X/i
4098     ** Failers
4099     12abc
4100     12ABC
4101     
4102 /[^a]+?X/i   
4103     ** Failers
4104     12abc
4105     12ABC
4107 /[^a]?X/i
4108     12aXbcX
4109     12AXBCX
4110     BCX 
4112 /[^a]??X/i
4113     12aXbcX
4114     12AXBCX
4115     BCX
4116     
4117 /[^a]?+X/i
4118     12aXbcX
4119     12AXBCX
4120     BCX 
4122 /[^a]{2,3}/i
4123     abcdef
4124     ABCDEF  
4126 /[^a]{2,3}?/i
4127     abcdef
4128     ABCDEF  
4130 /[^a]{2,3}+/i
4131     abcdef
4132     ABCDEF  
4134 /((a|)+)+Z/
4135     Z
4137 /(a)b|(a)c/
4138     ac
4140 /(?>(a))b|(a)c/
4141     ac
4143 /(?=(a))ab|(a)c/
4144     ac
4146 /((?>(a))b|(a)c)/
4147     ac
4149 /((?>(a))b|(a)c)++/
4150     ac
4152 /(?:(?>(a))b|(a)c)++/
4153     ac
4155 /(?=(?>(a))b|(a)c)(..)/
4156     ac
4158 /(?>(?>(a))b|(a)c)/
4159     ac
4161 /(?:(?>([ab])))+a=/+
4162     =ba=
4164 /(?>([ab]))+a=/+
4165     =ba=
4167 /((?>(a+)b)+(aabab))/
4168     aaaabaaabaabab
4170 /(?>a+|ab)+?c/
4171     aabc
4173 /(?>a+|ab)+c/
4174     aabc
4176 /(?:a+|ab)+c/
4177     aabc
4179 /(?(?=(a))a)/
4180     a
4182 /(?(?=(a))a)(b)/
4183     ab
4185 /^(?:a|ab)++c/
4186     aaaabc
4188 /^(?>a|ab)++c/
4189     aaaabc
4191 /^(?:a|ab)+c/
4192     aaaabc
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 
4212 /(?=abc){1}xyz/
4213     ** Failers
4214     xyz 
4215     
4216 /(?=(a))?./
4217     ab
4218     bc
4219       
4220 /(?=(a))??./
4221     ab
4222     bc
4224 /^(?=(a)){0}b(?1)/
4225     backgammon
4227 /^(?=(?1))?[az]([abc])d/
4228     abd 
4229     zcdxx 
4231 /^(?!a){0}\w+/
4232     aaaaa
4234 /(?<=(abc))?xyz/
4235     abcxyz
4236     pqrxyz 
4238 /^[\g<a>]+/
4239     ggg<<<aaa>>>
4240     ** Failers
4241     \\ga  
4242     
4243 /^[\ga]+/
4244     gggagagaxyz 
4245     
4246 /^[:a[:digit:]]+/
4247     aaaa444:::Z 
4249 /^[:a[:digit:]:b]+/
4250     aaaa444:::bbbZ 
4252 /[:a]xxx[b:]/
4253      :xxx:
4254      
4255 /(?<=a{2})b/i
4256     xaabc
4257     ** Failers
4258     xabc  
4260 /(?<!a{2})b/i
4261     xabc
4262     ** Failers
4263     xaabc  
4265 /(?<=a\h)c/
4266     xa c
4267     
4268 /(?<=[^a]{2})b/
4269     axxbc
4270     aAAbc 
4271     ** Failers
4272     xaabc    
4274 /(?<=[^a]{2})b/i
4275     axxbc  
4276     ** Failers
4277     aAAbc 
4278     xaabc    
4280 /(?<=a\H)c/
4281     abc
4283 /(?<=a\V)c/
4284     abc
4285     
4286 /(?<=a\v)c/
4287     a\nc
4289 /(?(?=c)c|d)++Y/
4290     XcccddYX
4292 /(?(?=c)c|d)*+Y/
4293     XcccddYX
4295 /^(a{2,3}){2,}+a/
4296     aaaaaaa
4297     ** Failers
4298     aaaaaa
4299     aaaaaaaaa 
4301 /^(a{2,3})++a/
4302     ** Failers
4303     aaaaaa
4305 /^(a{2,3})*+a/
4306     ** Failers
4307     aaaaaa
4309 /ab\Cde/
4310     abXde
4311     
4312 /(?<=ab\Cde)X/
4313     abZdeX
4315 /a[\CD]b/
4316     aCb
4317     aDb 
4319 /a[\C-X]b/
4320     aJb
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
4342 /\h*X\h?\H+Y\H?Z/
4343     >XNNNYZ
4344     >  X NYQZ
4345     ** Failers
4346     >XYZ   
4347     >  X NY Z
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
4353 /(foo)\Kbar/
4354     foobar
4355    
4356 /(foo)(\Kbar|baz)/
4357     foobar
4358     foobaz 
4360 /(foo\Kbar)baz/
4361     foobarbaz
4363 /abc\K|def\K/g+
4364     Xabcdefghi
4366 /ab\Kc|de\Kf/g+
4367     Xabcdefghi
4368     
4369 /(?=C)/g+
4370     ABCDECBA
4371     
4372 /^abc\K/+
4373     abcdef
4374     ** Failers
4375     defabcxyz   
4377 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
4378     ababababbbabZXXXX
4380 /(?<A>tom|bon)-\g{A}/
4381     tom-tom
4382     bon-bon 
4383     
4384 /(^(a|b\g{-1}))/
4385     bacxxx
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 
4400 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
4401     XYabcdY
4403 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
4404     XYabcdY
4406 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
4407     XYabcdY
4409 /(?'abc'\w+):\k<abc>{2}/
4410     a:aaxyz
4411     ab:ababxyz
4412     ** Failers
4413     a:axyz
4414     ab:abxyz
4416 /(?'abc'\w+):\g{abc}{2}/
4417     a:aaxyz
4418     ab:ababxyz
4419     ** Failers
4420     a:axyz
4421     ab:abxyz
4423 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
4424     abd
4425     ce
4427 /^(a.)\g-1Z/
4428     aXaXZ
4430 /^(a.)\g{-1}Z/
4431     aXaXZ
4433 /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
4434     abcd
4436 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
4437   (?(DEFINE)
4438   (?<NAME_PAT>[a-z]+)
4439   (?<ADDRESS_PAT>\d+)
4440   )/x
4441     metcalfe 33
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
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
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!
4464 /(\d++)(\w)/
4465     12345a
4466     *** Failers
4467     12345+
4469 /a++b/
4470     aaab
4472 /(a++b)/
4473     aaab
4475 /(a++)b/
4476     aaab
4478 /([^()]++|\([^()]*\))+/
4479     ((abc(ade)ufh()()x
4481 /\(([^()]++|\([^()]+\))+\)/
4482     (abc)
4483     (abc(def)xyz)
4484     *** Failers
4485     ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4487 /^([^()]|\((?1)*\))*$/
4488     abc
4489     a(b)c
4490     a(b(c))d
4491     *** Failers)
4492     a(b(c)d
4494 /^>abc>([^()]|\((?1)*\))*<xyz<$/
4495    >abc>123<xyz<
4496    >abc>1(2)3<xyz<
4497    >abc>(1(2)3)<xyz<
4499 /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
4500     1221
4501     Satanoscillatemymetallicsonatas
4502     AmanaplanacanalPanama
4503     AblewasIereIsawElba
4504     *** Failers
4505     Thequickbrownfox
4507 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
4508     12
4509     (((2+2)*-3)-7)
4510     -12
4511     *** Failers
4512     ((2+2)*-3)-7)
4514 /^(x(y|(?1){2})z)/
4515     xyz
4516     xxyzxyzz
4517     *** Failers
4518     xxyzz
4519     xxyzxyzxyzz
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
4531 /^a+(*FAIL)/
4532     aaaaaa
4533     
4534 /a+b?c+(*FAIL)/
4535     aaabccc
4537 /a+b?(*PRUNE)c+(*FAIL)/
4538     aaabccc
4540 /a+b?(*COMMIT)c+(*FAIL)/
4541     aaabccc
4542     
4543 /a+b?(*SKIP)c+(*FAIL)/
4544     aaabcccaaabccc
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   
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   
4564 /a+b?(*THEN)c+(*FAIL)/
4565     aaabccc
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
4583 /^((.)(?1)\2|.)$/
4584     a
4585     aba
4586     aabaa  
4587     abcdcba 
4588     pqaabaaqp  
4589     ablewasiereisawelba
4590     rhubarb
4591     the quick brown fox  
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
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    
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
4626 /(?:(?1)|B)(A(*F)|C)/
4627     ABCD
4628     CCD
4629     ** Failers
4630     CAD   
4632 /^(?:(?1)|B)(A(*F)|C)/
4633     CCD
4634     BCD 
4635     ** Failers
4636     ABCD
4637     CAD
4638     BAD    
4640 /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
4641     AAD
4642     ACD
4643     BAD
4644     BCD
4645     BAX  
4646     ** Failers
4647     ACX
4648     ABC   
4650 /(?(DEFINE)(A))B(?1)C/
4651     BAC
4653 /(?(DEFINE)((A)\2))B(?1)C/
4654     BAAC
4656 /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
4657     (ab(cd)ef)
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
4674 /^(?=a(*ACCEPT)b)/
4675     ac
4677 /^(?(?!a(*SKIP)b))/
4678     ac
4680 /(?>a\Kb)/
4681     ab
4683 /((?>a\Kb))/
4684     ab
4686 /(a\Kb)/
4687     ab
4688     
4689 /^a\Kcz|ac/
4690     ac
4691     
4692 /(?>a\Kbz|ab)/
4693     ab 
4695 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4696     ab
4698 /^([^()]|\((?1)*\))*$/
4699     a(b)c
4700     a(b(c)d)e 
4702 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4703     0
4704     00
4705     0000  
4707 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4708     0
4709     00
4710     0000  
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. --- /
4716 /A(*COMMIT)(B|D)/
4717     ACABX
4719 /--- Check the use of names for failure ---/
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. ---/
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    
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. ---/
4748 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
4749     AAAC
4750     
4751 /--- Test skipping over a non-matching mark. ---/
4753 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
4754     AAAC
4755     
4756 /--- Check shorthand for MARK ---/
4758 /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
4759     AAAC
4761 /--- Don't loop! Force no study, otherwise mark is not seen. ---/
4763 /(*:A)A+(*SKIP:A)(B|Z)/KSS
4764     AAAC
4766 /--- This should succeed, as a non-existent skip name disables the skip ---/ 
4768 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
4769     AAAC
4771 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
4772     AAAC
4774 /--- COMMIT at the start of a pattern should act like an anchor. Again, 
4775 however, we need the complication for Perl. ---/
4777 /(*COMMIT)(A|P)(B|P)(C|P)/
4778     ABCDEFG
4779     ** Failers
4780     DEFGABC  
4782 /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
4784 /(\w+)(?>b(*COMMIT))\w{2}/
4785     abbb
4787 /(\w+)b(*COMMIT)\w{2}/
4788     abbb
4790 /--- Check opening parens in comment when seeking forward reference. ---/ 
4792 /(?&t)(?#()(?(DEFINE)(?<t>a))/
4793     bac
4795 /--- COMMIT should override THEN ---/
4797 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4798   yes
4800 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4801   yes
4803 /b?(*SKIP)c/
4804     bc
4805     abc
4806    
4807 /(*SKIP)bc/
4808     a
4810 /(*SKIP)b/
4811     a 
4813 /(?P<abn>(?P=abn)xxx|)+/
4814     xxx
4816 /(?i:([^b]))(?1)/
4817     aa
4818     aA     
4819     ** Failers
4820     ab
4821     aB
4822     Ba
4823     ba
4825 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4826     aaaaaaX
4827     ** Failers 
4828     aaaaaa 
4830 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
4831     aaaaaaX
4832     aaaaaa 
4834 /^(a)*+(\w)/
4835     aaaaX
4836     YZ 
4837     ** Failers 
4838     aaaa
4840 /^(?:a)*+(\w)/
4841     aaaaX
4842     YZ 
4843     ** Failers 
4844     aaaa
4846 /^(a)++(\w)/
4847     aaaaX
4848     ** Failers 
4849     aaaa
4850     YZ 
4852 /^(?:a)++(\w)/
4853     aaaaX
4854     ** Failers 
4855     aaaa
4856     YZ 
4858 /^(a)?+(\w)/
4859     aaaaX
4860     YZ 
4862 /^(?:a)?+(\w)/
4863     aaaaX
4864     YZ 
4866 /^(a){2,}+(\w)/
4867     aaaaX
4868     ** Failers
4869     aaa
4870     YZ 
4872 /^(?:a){2,}+(\w)/
4873     aaaaX
4874     ** Failers
4875     aaa
4876     YZ 
4878 /(a|)*(?1)b/
4879     b
4880     ab
4881     aab  
4883 /(a)++(?1)b/
4884     ** Failers
4885     ab 
4886     aab
4888 /(a)*+(?1)b/
4889     ** Failers
4890     ab
4891     aab  
4893 /(?1)(?:(b)){0}/
4894     b
4896 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4897     foo(bar(baz)+baz(bop))
4899 /(A (A|B(*ACCEPT)|C) D)(E)/x
4900     AB
4902 /\A.*?(?:a|b(*THEN)c)/
4903     ba
4905 /\A.*?(?:a|bc)/
4906     ba
4908 /\A.*?(a|b(*THEN)c)/
4909     ba
4911 /\A.*?(a|bc)/
4912     ba
4914 /\A.*?(?:a|b(*THEN)c)++/
4915     ba
4917 /\A.*?(?:a|bc)++/
4918     ba
4920 /\A.*?(a|b(*THEN)c)++/
4921     ba
4923 /\A.*?(a|bc)++/
4924     ba
4926 /\A.*?(?:a|b(*THEN)c|d)/
4927     ba
4929 /\A.*?(?:a|bc|d)/
4930     ba
4932 /(?:(b))++/
4933     beetle
4935 /(?(?=(a(*ACCEPT)z))a)/
4936     a
4938 /^(a)(?1)+ab/
4939     aaaab
4940     
4941 /^(a)(?1)++ab/
4942     aaaab
4944 /^(?=a(*:M))aZ/K
4945     aZbc
4947 /^(?!(*:M)b)aZ/K
4948     aZbc
4950 /(?(DEFINE)(a))?b(?1)/
4951     backgammon
4953 /^\N+/
4954     abc\ndef
4955     
4956 /^\N{1,}/
4957     abc\ndef 
4959 /(?(R)a+|(?R)b)/
4960     aaaabcde
4962 /(?(R)a+|((?R))b)/
4963     aaaabcde
4965 /((?(R)a+|(?1)b))/
4966     aaaabcde
4968 /((?(R1)a+|(?1)b))/
4969     aaaabcde
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 ---/ 
4982 /--- Capture ---/
4984 /^.*? (a(*THEN)b) c/x
4985     aabc
4987 /^.*? (a(*THEN)b|(*F)) c/x
4988     aabc
4990 /^.*? ( (a(*THEN)b) | (*F) ) c/x
4991     aabc
4993 /^.*? ( (a(*THEN)b) ) c/x
4994     aabc
4996 /--- Non-capture ---/
4998 /^.*? (?:a(*THEN)b) c/x
4999     aabc
5001 /^.*? (?:a(*THEN)b|(*F)) c/x
5002     aabc
5004 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
5005     aabc
5007 /^.*? (?: (?:a(*THEN)b) ) c/x
5008     aabc
5010 /--- Atomic ---/
5012 /^.*? (?>a(*THEN)b) c/x
5013     aabc
5015 /^.*? (?>a(*THEN)b|(*F)) c/x
5016     aabc
5018 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
5019     aabc
5021 /^.*? (?> (?>a(*THEN)b) ) c/x
5022     aabc
5024 /--- Possessive capture ---/
5026 /^.*? (a(*THEN)b)++ c/x
5027     aabc
5029 /^.*? (a(*THEN)b|(*F))++ c/x
5030     aabc
5032 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
5033     aabc
5035 /^.*? ( (a(*THEN)b)++ )++ c/x
5036     aabc
5038 /--- Possessive non-capture ---/
5040 /^.*? (?:a(*THEN)b)++ c/x
5041     aabc
5043 /^.*? (?:a(*THEN)b|(*F))++ c/x
5044     aabc
5046 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
5047     aabc
5049 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
5050     aabc
5051     
5052 /--- Condition assertion ---/
5054 /^(?(?=a(*THEN)b)ab|ac)/
5055     ac
5057 /--- Condition ---/
5059 /^.*?(?(?=a)a|b(*THEN)c)/
5060     ba
5062 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5063     ba
5065 /^.*?(?(?=a)a(*THEN)b|c)/
5066     ac
5068 /--- Assertion ---/
5070 /^.*(?=a(*THEN)b)/ 
5071     aabc
5073 /------------------------------/
5075 /(?>a(*:m))/imsxSK 
5076     a
5078 /(?>(a)(*:m))/imsxSK 
5079     a
5081 /(?<=a(*ACCEPT)b)c/
5082     xacd
5084 /(?<=(a(*ACCEPT)b))c/
5085     xacd
5087 /(?<=(a(*COMMIT)b))c/
5088     xabcd
5089     ** Failers 
5090     xacd
5091     
5092 /(?<!a(*FAIL)b)c/
5093     xcd
5094     acd 
5096 /(?<=a(*:N)b)c/K
5097     xabcd
5098     
5099 /(?<=a(*PRUNE)b)c/
5100     xabcd 
5102 /(?<=a(*SKIP)b)c/
5103     xabcd 
5105 /(?<=a(*THEN)b)c/
5106     xabcd 
5108 /(a)(?2){2}(.)/
5109     abcd
5111 /(*MARK:A)(*PRUNE:B)(C|X)/KS
5112     C
5113     D 
5115 /(*MARK:A)(*PRUNE:B)(C|X)/KSS
5116     C
5117     D 
5119 /(*MARK:A)(*THEN:B)(C|X)/KS
5120     C
5121     D 
5123 /(*MARK:A)(*THEN:B)(C|X)/KSY
5124     C
5125     D 
5127 /(*MARK:A)(*THEN:B)(C|X)/KSS
5128     C
5129     D 
5131 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
5133 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
5134     AAAC
5136 /--- Same --/
5138 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
5139     AAAC
5141 /A(*:A)A+(*SKIP)(B|Z) | AC/xK
5142     AAAC
5144 /--- This should fail, as a null name is the same as no name ---/
5146 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
5147     AAAC
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. ---/
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. ---/ 
5180 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
5181     AB
5182     CD 
5184 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
5185     
5186 /A(*PRUNE:A)B/K
5187     ACAB
5189 /--- Mark names can be duplicated ---/
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
5200 /b(*:m)f|aw/K
5201     abaw
5202     ** Failers 
5203     abc
5204     abax 
5206 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
5207     AAAC
5209 /a(*PRUNE:X)bc|qq/KY
5210     ** Failers
5211     axy
5213 /a(*THEN:X)bc|qq/KY
5214     ** Failers
5215     axy
5217 /(?=a(*MARK:A)b)..x/K
5218     abxy
5219     ** Failers
5220     abpq  
5222 /(?=a(*MARK:A)b)..(*:Y)x/K
5223     abxy
5224     ** Failers
5225     abpq  
5227 /(?=a(*PRUNE:A)b)..x/K
5228     abxy
5229     ** Failers
5230     abpq  
5232 /(?=a(*PRUNE:A)b)..(*:Y)x/K
5233     abxy
5234     ** Failers
5235     abpq  
5237 /(?=a(*THEN:A)b)..x/K
5238     abxy
5239     ** Failers
5240     abpq  
5242 /(?=a(*THEN:A)b)..(*:Y)x/K
5243     abxy
5244     ** Failers
5245     abpq  
5247 /(another)?(\1?)test/
5248     hello world test
5250 /(another)?(\1+)test/
5251     hello world test
5253 /(a(*COMMIT)b){0}a(?1)|aac/
5254     aac
5256 /(?!a(*COMMIT)b)ac|cd/
5257     ac
5259 /((?:a?)*)*c/
5260   aac   
5262 /((?>a?)*)*c/
5263   aac   
5265 /(?>.*?a)(?<=ba)/
5266     aba
5268 /(?:.*?a)(?<=ba)/
5269     aba
5271 /.*?a(*PRUNE)b/
5272     aab
5274 /.*?a(*PRUNE)b/s
5275     aab
5277 /^a(*PRUNE)b/s
5278     aab
5280 /.*?a(*SKIP)b/
5281     aab
5283 /(?>.*?a)b/s
5284     aab
5286 /(?>.*?a)b/
5287     aab
5289 /(?>^a)b/s
5290     aab
5292 /(?>.*?)(?<=(abcd)|(wxyz))/
5293     alphabetabcd
5294     endingwxyz 
5296 /(?>.*)(?<=(abcd)|(wxyz))/
5297     alphabetabcd
5298     endingwxyz 
5300 "(?>.*)foo"
5301     abcdfooxyz
5302     
5303 "(?>.*?)foo"
5304     abcdfooxyz
5306 /-- End of testinput1 --/