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

Contents of /code/trunk/testdata/testinput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 976 - (show annotations)
Sat Jun 16 17:53:17 2012 UTC (7 years, 5 months ago) by ph10
File size: 92232 byte(s)
Fix capture problem with repeated, empty-string-matching groups.
1 /-- This set of tests is for features that are compatible with all versions of
2 Perl >= 5.10, in non-UTF-8 mode. It should run clean for both the 8-bit and
3 16-bit PCRE libraries. --/
4
5 /the quick brown fox/
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?
10
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?
16
17 /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
18 abcd\t\n\r\f\a\e9;\$\\?caxyz
19
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
58
59 /^(abc){1,2}zz/
60 abczz
61 abcabczz
62 *** Failers
63 zz
64 abcabcabczz
65 >>abczz
66
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
79
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
92
93 /^(b+|a){1,2}?bc/
94 bbc
95
96 /^(b*|ba){1,2}?bc/
97 babc
98 bbabc
99 bababc
100 *** Failers
101 bababbc
102 babababc
103
104 /^(ba|b*){1,2}?bc/
105 babc
106 bbabc
107 bababc
108 *** Failers
109 bababbc
110 babababc
111
112 /^\ca\cA\c[\c{\c:/
113 \x01\x01\e;z
114
115 /^[ab\]cde]/
116 athing
117 bthing
118 ]thing
119 cthing
120 dthing
121 ething
122 *** Failers
123 fthing
124 [thing
125 \\thing
126
127 /^[]cde]/
128 ]thing
129 cthing
130 dthing
131 ething
132 *** Failers
133 athing
134 fthing
135
136 /^[^ab\]cde]/
137 fthing
138 [thing
139 \\thing
140 *** Failers
141 athing
142 bthing
143 ]thing
144 cthing
145 dthing
146 ething
147
148 /^[^]cde]/
149 athing
150 fthing
151 *** Failers
152 ]thing
153 cthing
154 dthing
155 ething
156
157 /^\/
158
159
160 /^/
161
162
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
178
179 /^.*nter/
180 enter
181 inter
182 uponter
183
184 /^xxx[0-9]+$/
185 xxx0
186 xxx1234
187 *** Failers
188 xxx
189
190 /^.+[0-9][0-9][0-9]$/
191 x123
192 xx123
193 123456
194 *** Failers
195 123
196 x1234
197
198 /^.+?[0-9][0-9][0-9]$/
199 x123
200 xx123
201 123456
202 *** Failers
203 123
204 x1234
205
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
213
214 /:/
215 Well, we need a colon: somewhere
216 *** Fail if we don't
217
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
232
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
240
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(
246
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.
256
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
267
268 /^(?=ab(de))(abd)(e)/
269 abde
270
271 /^(?!(ab)de|x)(abd)(f)/
272 abdf
273
274 /^(?=(ab(cd)))(ab)/
275 abcd
276
277 /^[\da-f](\.[\da-f])*$/i
278 a.b.c.d
279 A.B.C.D
280 a.b.c.1.2.3.C
281
282 /^\".*\"\s*(;.*)?$/
283 \"1234\"
284 \"abcd\" ;
285 \"\" ; rhubarb
286 *** Failers
287 \"1234\" : things
288
289 /^$/
290 \
291 *** Failers
292
293 / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
294 ab c
295 *** Failers
296 abc
297 ab cde
298
299 /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
300 ab c
301 *** Failers
302 abc
303 ab cde
304
305 /^ a\ b[c ]d $/x
306 a bcd
307 a b d
308 *** Failers
309 abcd
310 ab d
311
312 /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
313 abcdefhijklm
314
315 /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
316 abcdefhijklm
317
318 /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
319 a+ Z0+\x08\n\x1d\x12
320
321 /^[.^$|()*+?{,}]+/
322 .^\$(*+)|{?,?}
323
324 /^a*\w/
325 z
326 az
327 aaaz
328 a
329 aa
330 aaaa
331 a+
332 aa+
333
334 /^a*?\w/
335 z
336 az
337 aaaz
338 a
339 aa
340 aaaa
341 a+
342 aa+
343
344 /^a+\w/
345 az
346 aaaz
347 aa
348 aaaa
349 aa+
350
351 /^a+?\w/
352 az
353 aaaz
354 aa
355 aaaa
356 aa+
357
358 /^\d{8}\w{2,}/
359 1234567890
360 12345678ab
361 12345678__
362 *** Failers
363 1234567
364
365 /^[aeiou\d]{4,5}$/
366 uoie
367 1234
368 12345
369 aaaaa
370 *** Failers
371 123456
372
373 /^[aeiou\d]{4,5}?/
374 uoie
375 1234
376 12345
377 aaaaa
378 123456
379
380 /\A(abc|def)=(\1){2,3}\Z/
381 abc=abcabc
382 def=defdefdef
383 *** Failers
384 abc=defdef
385
386 /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
387 abcdefghijkcda2
388 abcdefghijkkkkcda2
389
390 /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
391 cataract cataract23
392 catatonic catatonic23
393 caterpillar caterpillar23
394
395
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
398
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
404
405 /^12.34/s
406 12\n34
407 12\r34
408
409 /\w+(?=\t)/
410 the quick brown\t fox
411
412 /foo(?!bar)(.*)/
413 foobar is foolish see?
414
415 /(?:(?!foo)...|^.{0,2})bar(.*)/
416 foobar crowbar etc
417 barrel
418 2barrel
419 A barrel
420
421 /^(\D*)(?=\d)(?!123)/
422 abc456
423 *** Failers
424 abc123
425
426 /^1234(?# test newlines
427 inside)/
428 1234
429
430 /^1234 #comment in extended re
431 /x
432 1234
433
434 /#rhubarb
435 abcd/x
436 abcd
437
438 /^abcd#rhubarb/x
439 abcd
440
441 /^(a)\1{2,3}(.)/
442 aaab
443 aaaab
444 aaaaab
445 aaaaaab
446
447 /(?!^)abc/
448 the abc
449 *** Failers
450 abc
451
452 /(?=^)abc/
453 abc
454 *** Failers
455 the abc
456
457 /^[ab]{1,3}(ab*|b)/
458 aabbbbb
459
460 /^[ab]{1,3}?(ab*|b)/
461 aabbbbb
462
463 /^[ab]{1,3}?(ab*?|b)/
464 aabbbbb
465
466 /^[ab]{1,3}(ab*?|b)/
467 aabbbbb
468
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
475 |
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
489 |
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
520 )*
521 # address
522 | # or
523 (?:
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
526 |
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....
533 (?:
534 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
535 \(
536 (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
537 \) | # comments, or...
538
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
545 )*
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
571 )*
572
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
599 )*
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
605 (?:
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
608 |
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
622 |
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
653 )*
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
662 /x
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
672
673 /[\040\t]* # Nab whitespace.
674 (?:
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
689 (?:
690 (?:
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
700 )
701 [\040\t]* # Nab whitespace.
702 (?:
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.
716 (?:
717 \.
718 [\040\t]* # Nab whitespace.
719 (?:
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.
733 (?:
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
743 )
744 [\040\t]* # Nab whitespace.
745 (?:
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
760 )*
761 @
762 [\040\t]* # Nab whitespace.
763 (?:
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.
777 (?:
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
780 |
781 \[ # [
782 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
783 \] # ]
784 )
785 [\040\t]* # Nab whitespace.
786 (?:
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
801 (?:
802 \.
803 [\040\t]* # Nab whitespace.
804 (?:
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.
818 (?:
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
821 |
822 \[ # [
823 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
824 \] # ]
825 )
826 [\040\t]* # Nab whitespace.
827 (?:
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
842 )*
843 # address
844 | # or
845 (?:
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
855 )
856 # leading word
857 [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
858 (?:
859 (?:
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 \) # )
872 |
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"
879 )*
880 <
881 [\040\t]* # Nab whitespace.
882 (?:
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 # <
897 (?:
898 @
899 [\040\t]* # Nab whitespace.
900 (?:
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.
914 (?:
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
917 |
918 \[ # [
919 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
920 \] # ]
921 )
922 [\040\t]* # Nab whitespace.
923 (?:
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
938 (?:
939 \.
940 [\040\t]* # Nab whitespace.
941 (?:
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.
955 (?:
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
958 |
959 \[ # [
960 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
961 \] # ]
962 )
963 [\040\t]* # Nab whitespace.
964 (?:
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
979 )*
980 (?: ,
981 [\040\t]* # Nab whitespace.
982 (?:
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.
996 @
997 [\040\t]* # Nab whitespace.
998 (?:
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.
1012 (?:
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
1015 |
1016 \[ # [
1017 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1018 \] # ]
1019 )
1020 [\040\t]* # Nab whitespace.
1021 (?:
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
1036 (?:
1037 \.
1038 [\040\t]* # Nab whitespace.
1039 (?:
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.
1053 (?:
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
1056 |
1057 \[ # [
1058 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1059 \] # ]
1060 )
1061 [\040\t]* # Nab whitespace.
1062 (?:
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
1077 )*
1078 )* # additional domains
1079 :
1080 [\040\t]* # Nab whitespace.
1081 (?:
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
1097 (?:
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
1107 )
1108 [\040\t]* # Nab whitespace.
1109 (?:
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.
1123 (?:
1124 \.
1125 [\040\t]* # Nab whitespace.
1126 (?:
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.
1140 (?:
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
1150 )
1151 [\040\t]* # Nab whitespace.
1152 (?:
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
1167 )*
1168 @
1169 [\040\t]* # Nab whitespace.
1170 (?:
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.
1184 (?:
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
1187 |
1188 \[ # [
1189 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1190 \] # ]
1191 )
1192 [\040\t]* # Nab whitespace.
1193 (?:
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
1208 (?:
1209 \.
1210 [\040\t]* # Nab whitespace.
1211 (?:
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.
1225 (?:
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
1228 |
1229 \[ # [
1230 (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
1231 \] # ]
1232 )
1233 [\040\t]* # Nab whitespace.
1234 (?:
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
1249 )*
1250 # address spec
1251 > # >
1252 # name and address
1253 )
1254 /x
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
1264
1265 /abc\0def\00pqr\000xyz\0000AB/
1266 abc\0def\00pqr\000xyz\0000AB
1267 abc456 abc\0def\00pqr\000xyz\0000ABCDE
1268
1269 /abc\x0def\x00pqr\x000xyz\x0000AB/
1270 abc\x0def\x00pqr\x000xyz\x0000AB
1271 abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1272
1273 /^[\000-\037]/
1274 \0A
1275 \01B
1276 \037C
1277
1278 /\0*/
1279 \0\0\0\0
1280
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
1287
1288 /^(cow|)\1(bell)/
1289 cowcowbell
1290 bell
1291 *** Failers
1292 cowbell
1293
1294 /^\s/
1295 \040abc
1296 \x0cabc
1297 \nabc
1298 \rabc
1299 \tabc
1300 *** Failers
1301 abc
1302
1303 /^a b
1304 c/x
1305 abc
1306
1307 /^(a|)\1*b/
1308 ab
1309 aaaab
1310 b
1311 *** Failers
1312 acb
1313
1314 /^(a|)\1+b/
1315 aab
1316 aaaab
1317 b
1318 *** Failers
1319 ab
1320
1321 /^(a|)\1?b/
1322 ab
1323 aab
1324 b
1325 *** Failers
1326 acb
1327
1328 /^(a|)\1{2}b/
1329 aaab
1330 b
1331 *** Failers
1332 ab
1333 aab
1334 aaaab
1335
1336 /^(a|)\1{2,3}b/
1337 aaab
1338 aaaab
1339 b
1340 *** Failers
1341 ab
1342 aab
1343 aaaaab
1344
1345 /ab{1,3}bc/
1346 abbbbc
1347 abbbc
1348 abbc
1349 *** Failers
1350 abc
1351 abbbbbc
1352
1353 /([^.]*)\.([^:]*):[T ]+(.*)/
1354 track1.title:TBlah blah blah
1355
1356 /([^.]*)\.([^:]*):[T ]+(.*)/i
1357 track1.title:TBlah blah blah
1358
1359 /([^.]*)\.([^:]*):[t ]+(.*)/i
1360 track1.title:TBlah blah blah
1361
1362 /^[W-c]+$/
1363 WXY_^abc
1364 *** Failers
1365 wxy
1366
1367 /^[W-c]+$/i
1368 WXY_^abc
1369 wxy_^ABC
1370
1371 /^[\x3f-\x5F]+$/i
1372 WXY_^abc
1373 wxy_^ABC
1374
1375 /^abc$/m
1376 abc
1377 qqq\nabc
1378 abc\nzzz
1379 qqq\nabc\nzzz
1380
1381 /^abc$/
1382 abc
1383 *** Failers
1384 qqq\nabc
1385 abc\nzzz
1386 qqq\nabc\nzzz
1387
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
1398
1399 /\A(.)*\Z/m
1400 *** Failers
1401 abc\ndef
1402
1403 /(?:b)|(?::+)/
1404 b::c
1405 c::b
1406
1407 /[-az]+/
1408 az-
1409 *** Failers
1410 b
1411
1412 /[az-]+/
1413 za-
1414 *** Failers
1415 b
1416
1417 /[a\-z]+/
1418 a-z
1419 *** Failers
1420 b
1421
1422 /[a-z]+/
1423 abcdxyz
1424
1425 /[\d-]+/
1426 12-34
1427 *** Failers
1428 aaa
1429
1430 /[\d-z]+/
1431 12-34z
1432 *** Failers
1433 aaa
1434
1435 /\x5c/
1436 \\
1437
1438 /\x20Z/
1439 the Zoo
1440 *** Failers
1441 Zulu
1442
1443 /(abc)\1/i
1444 abcabc
1445 ABCabc
1446 abcABC
1447
1448 /ab{3cd/
1449 ab{3cd
1450
1451 /ab{3,cd/
1452 ab{3,cd
1453
1454 /ab{3,4a}cd/
1455 ab{3,4a}cd
1456
1457 /{4,5a}bc/
1458 {4,5a}bc
1459
1460 /abc$/
1461 abc
1462 abc\n
1463 *** Failers
1464 abc\ndef
1465
1466 /(abc)\123/
1467 abc\x53
1468
1469 /(abc)\223/
1470 abc\x93
1471
1472 /(abc)\323/
1473 abc\xd3
1474
1475 /(abc)\100/
1476 abc\x40
1477 abc\100
1478
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
1486
1487 /abc\81/
1488 abc\081
1489 abc\0\x38\x31
1490
1491 /abc\91/
1492 abc\091
1493 abc\0\x39\x31
1494
1495 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1496 abcdefghijkllS
1497
1498 /(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1499 abcdefghijk\12S
1500
1501 /ab\idef/
1502 abidef
1503
1504 /a{0}bc/
1505 bc
1506
1507 /(a|(bc)){0,0}?xyz/
1508 xyz
1509
1510 /abc[\10]de/
1511 abc\010de
1512
1513 /abc[\1]de/
1514 abc\1de
1515
1516 /(abc)[\1]de/
1517 abc\1de
1518
1519 /(?s)a.b/
1520 a\nb
1521
1522 /^([^a])([^\b])([^c]*)([^d]{3,4})/
1523 baNOTccccd
1524 baNOTcccd
1525 baNOTccd
1526 bacccd
1527 *** Failers
1528 anything
1529 b\bc
1530 baccd
1531
1532 /[^a]/
1533 Abc
1534
1535 /[^a]/i
1536 Abc
1537
1538 /[^a]+/
1539 AAAaAbc
1540
1541 /[^a]+/i
1542 AAAaAbc
1543
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
1560
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
1567
1568 /(a)\1{8,}/
1569 aaaaaaaaa
1570 aaaaaaaaaa
1571 *** Failers
1572 aaaaaaa
1573
1574 /[^a]/
1575 aaaabcd
1576 aaAabcd
1577
1578 /[^a]/i
1579 aaaabcd
1580 aaAabcd
1581
1582 /[^az]/
1583 aaaabcd
1584 aaAabcd
1585
1586 /[^az]/i
1587 aaaabcd
1588 aaAabcd
1589
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
1592
1593 /P[^*]TAIRE[^*]{1,6}?LL/
1594 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1595
1596 /P[^*]TAIRE[^*]{1,}?LL/
1597 xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1598
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
1612
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.
1621
1622 /(.*)(\d*)/
1623 I have 2 numbers: 53147
1624
1625 /(.*)(\d+)/
1626 I have 2 numbers: 53147
1627
1628 /(.*?)(\d*)/
1629 I have 2 numbers: 53147
1630
1631 /(.*?)(\d+)/
1632 I have 2 numbers: 53147
1633
1634 /(.*)(\d+)$/
1635 I have 2 numbers: 53147
1636
1637 /(.*?)(\d+)$/
1638 I have 2 numbers: 53147
1639
1640 /(.*)\b(\d+)$/
1641 I have 2 numbers: 53147
1642
1643 /(.*\D)(\d+)$/
1644 I have 2 numbers: 53147
1645
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
1679
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
1683
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
1686
1687 /^(a){0,0}/
1688 bcd
1689 abc
1690 aab
1691
1692 /^(a){0,1}/
1693 bcd
1694 abc
1695 aab
1696
1697 /^(a){0,2}/
1698 bcd
1699 abc
1700 aab
1701
1702 /^(a){0,3}/
1703 bcd
1704 abc
1705 aab
1706 aaa
1707
1708 /^(a){0,}/
1709 bcd
1710 abc
1711 aab
1712 aaa
1713 aaaaaaaa
1714
1715 /^(a){1,1}/
1716 bcd
1717 abc
1718 aab
1719
1720 /^(a){1,2}/
1721 bcd
1722 abc
1723 aab
1724
1725 /^(a){1,3}/
1726 bcd
1727 abc
1728 aab
1729 aaa
1730
1731 /^(a){1,}/
1732 bcd
1733 abc
1734 aab
1735 aaa
1736 aaaaaaaa
1737
1738 /.*\.gif/
1739 borfle\nbib.gif\nno
1740
1741 /.{0,}\.gif/
1742 borfle\nbib.gif\nno
1743
1744 /.*\.gif/m
1745 borfle\nbib.gif\nno
1746
1747 /.*\.gif/s
1748 borfle\nbib.gif\nno
1749
1750 /.*\.gif/ms
1751 borfle\nbib.gif\nno
1752
1753 /.*$/
1754 borfle\nbib.gif\nno
1755
1756 /.*$/m
1757 borfle\nbib.gif\nno
1758
1759 /.*$/s
1760 borfle\nbib.gif\nno
1761
1762 /.*$/ms
1763 borfle\nbib.gif\nno
1764
1765 /.*$/
1766 borfle\nbib.gif\nno\n
1767
1768 /.*$/m
1769 borfle\nbib.gif\nno\n
1770
1771 /.*$/s
1772 borfle\nbib.gif\nno\n
1773
1774 /.*$/ms
1775 borfle\nbib.gif\nno\n
1776
1777 /(.*X|^B)/
1778 abcde\n1234Xyz
1779 BarFoo
1780 *** Failers
1781 abcde\nBar
1782
1783 /(.*X|^B)/m
1784 abcde\n1234Xyz
1785 BarFoo
1786 abcde\nBar
1787
1788 /(.*X|^B)/s
1789 abcde\n1234Xyz
1790 BarFoo
1791 *** Failers
1792 abcde\nBar
1793
1794 /(.*X|^B)/ms
1795 abcde\n1234Xyz
1796 BarFoo
1797 abcde\nBar
1798
1799 /(?s)(.*X|^B)/
1800 abcde\n1234Xyz
1801 BarFoo
1802 *** Failers
1803 abcde\nBar
1804
1805 /(?s:.*X|^B)/
1806 abcde\n1234Xyz
1807 BarFoo
1808 *** Failers
1809 abcde\nBar
1810
1811 /^.*B/
1812 **** Failers
1813 abc\nB
1814
1815 /(?s)^.*B/
1816 abc\nB
1817
1818 /(?m)^.*B/
1819 abc\nB
1820
1821 /(?ms)^.*B/
1822 abc\nB
1823
1824 /(?ms)^B/
1825 abc\nB
1826
1827 /(?s)B$/
1828 B\n
1829
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
1835
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
1847
1848 /^[abcdefghijklmnopqrstuvwxy0123456789]/
1849 n
1850 *** Failers
1851 z
1852
1853 /abcde{0,0}/
1854 abcd
1855 *** Failers
1856 abce
1857
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
1867
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\"
1883
1884 /.*?/g+
1885 abc
1886
1887 /\b/g+
1888 abc
1889
1890 /\b/+g
1891 abc
1892
1893 //g
1894 abc
1895
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>
1898
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
1915
1916 /^(b+?|a){1,2}?c/
1917 bac
1918 bbac
1919 bbbac
1920 bbbbac
1921 bbbbbac
1922
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}
1936
1937 /(A|B)*?CD/
1938 CD
1939
1940 /(A|B)*CD/
1941 CD
1942
1943 /(AB)*?\1/
1944 ABABAB
1945
1946 /(AB)*\1/
1947 ABABAB
1948
1949 /(?<!bar)foo/
1950 foo
1951 catfood
1952 arfootle
1953 rfoosh
1954 *** Failers
1955 barfoo
1956 towbarfoo
1957
1958 /\w{3}(?<!bar)foo/
1959 catfood
1960 *** Failers
1961 foo
1962 barfoo
1963 towbarfoo
1964
1965 /(?<=(foo)a)bar/
1966 fooabar
1967 *** Failers
1968 bar
1969 foobbar
1970
1971 /\Aabc\z/m
1972 abc
1973 *** Failers
1974 abc\n
1975 qqq\nabc
1976 abc\nzzz
1977 qqq\nabc\nzzz
1978
1979 "(?>.*/)foo"
1980 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1981
1982 "(?>.*/)foo"
1983 /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1984
1985 /(?>(\.\d\d[1-9]?))\d+/
1986 1.230003938
1987 1.875000282
1988 *** Failers
1989 1.235
1990
1991 /^((?>\w+)|(?>\s+))*$/
1992 now is the time for all good men to come to the aid of the party
1993 *** Failers
1994 this is not a line with only words and spaces!
1995
1996 /(\d+)(\w)/
1997 12345a
1998 12345+
1999
2000 /((?>\d+))(\w)/
2001 12345a
2002 *** Failers
2003 12345+
2004
2005 /(?>a+)b/
2006 aaab
2007
2008 /((?>a+)b)/
2009 aaab
2010
2011 /(?>(a+))b/
2012 aaab
2013
2014 /(?>b)+/
2015 aaabbbccc
2016
2017 /(?>a+|b+|c+)*c/
2018 aaabbbbccccd
2019
2020 /((?>[^()]+)|\([^()]*\))+/
2021 ((abc(ade)ufh()()x
2022
2023 /\(((?>[^()]+)|\([^()]+\))+\)/
2024 (abc)
2025 (abc(def)xyz)
2026 *** Failers
2027 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2028
2029 /a(?-i)b/i
2030 ab
2031 Ab
2032 *** Failers
2033 aB
2034 AB
2035
2036 /(a (?x)b c)d e/
2037 a bcd e
2038 *** Failers
2039 a b cd e
2040 abcd e
2041 a bcde
2042
2043 /(a b(?x)c d (?-x)e f)/
2044 a bcde f
2045 *** Failers
2046 abcdef
2047
2048 /(a(?i)b)c/
2049 abc
2050 aBc
2051 *** Failers
2052 abC
2053 aBC
2054 Abc
2055 ABc
2056 ABC
2057 AbC
2058
2059 /a(?i:b)c/
2060 abc
2061 aBc
2062 *** Failers
2063 ABC
2064 abC
2065 aBC
2066
2067 /a(?i:b)*c/
2068 aBc
2069 aBBc
2070 *** Failers
2071 aBC
2072 aBBC
2073
2074 /a(?=b(?i)c)\w\wd/
2075 abcd
2076 abCd
2077 *** Failers
2078 aBCd
2079 abcD
2080
2081 /(?s-i:more.*than).*million/i
2082 more than million
2083 more than MILLION
2084 more \n than Million
2085 *** Failers
2086 MORE THAN MILLION
2087 more \n than \n million
2088
2089 /(?:(?s-i)more.*than).*million/i
2090 more than million
2091 more than MILLION
2092 more \n than Million
2093 *** Failers
2094 MORE THAN MILLION
2095 more \n than \n million
2096
2097 /(?>a(?i)b+)+c/
2098 abc
2099 aBbc
2100 aBBc
2101 *** Failers
2102 Abc
2103 abAb
2104 abbC
2105
2106 /(?=a(?i)b)\w\wc/
2107 abc
2108 aBc
2109 *** Failers
2110 Ab
2111 abC
2112 aBC
2113
2114 /(?<=a(?i)b)(\w\w)c/
2115 abxxc
2116 aBxxc
2117 *** Failers
2118 Abxxc
2119 ABxxc
2120 abxxC
2121
2122 /(?:(a)|b)(?(1)A|B)/
2123 aA
2124 bB
2125 *** Failers
2126 aB
2127 bA
2128
2129 /^(a)?(?(1)a|b)+$/
2130 aa
2131 b
2132 bb
2133 *** Failers
2134 ab
2135
2136 /^(?(?=abc)\w{3}:|\d\d)$/
2137 abc:
2138 12
2139 *** Failers
2140 123
2141 xyz
2142
2143 /^(?(?!abc)\d\d|\w{3}:)$/
2144 abc:
2145 12
2146 *** Failers
2147 123
2148 xyz
2149
2150 /(?(?<=foo)bar|cat)/
2151 foobar
2152 cat
2153 fcat
2154 focat
2155 *** Failers
2156 foocat
2157
2158 /(?(?<!foo)cat|bar)/
2159 foobar
2160 cat
2161 fcat
2162 focat
2163 *** Failers
2164 foocat
2165
2166 /( \( )? [^()]+ (?(1) \) |) /x
2167 abcd
2168 (abcd)
2169 the quick (abcd) fox
2170 (abcd
2171
2172 /( \( )? [^()]+ (?(1) \) ) /x
2173 abcd
2174 (abcd)
2175 the quick (abcd) fox
2176 (abcd
2177
2178 /^(?(2)a|(1)(2))+$/
2179 12
2180 12a
2181 12aa
2182 *** Failers
2183 1234
2184
2185 /((?i)blah)\s+\1/
2186 blah blah
2187 BLAH BLAH
2188 Blah Blah
2189 blaH blaH
2190 *** Failers
2191 blah BLAH
2192 Blah blah
2193 blaH blah
2194
2195 /((?i)blah)\s+(?i:\1)/
2196 blah blah
2197 BLAH BLAH
2198 Blah Blah
2199 blaH blaH
2200 blah BLAH
2201 Blah blah
2202 blaH blah
2203
2204 /(?>a*)*/
2205 a
2206 aa
2207 aaaa
2208
2209 /(abc|)+/
2210 abc
2211 abcabc
2212 abcabcabc
2213 xyz
2214
2215 /([a]*)*/
2216 a
2217 aaaaa
2218
2219 /([ab]*)*/
2220 a
2221 b
2222 ababab
2223 aaaabcde
2224 bbbb
2225
2226 /([^a]*)*/
2227 b
2228 bbbb
2229 aaa
2230
2231 /([^ab]*)*/
2232 cccc
2233 abab
2234
2235 /([a]*?)*/
2236 a
2237 aaaa
2238
2239 /([ab]*?)*/
2240 a
2241 b
2242 abab
2243 baba
2244
2245 /([^a]*?)*/
2246 b
2247 bbbb
2248 aaa
2249
2250 /([^ab]*?)*/
2251 c
2252 cccc
2253 baba
2254
2255 /(?>a*)*/
2256 a
2257 aaabcde
2258
2259 /((?>a*))*/
2260 aaaaa
2261 aabbaa
2262
2263 /((?>a*?))*/
2264 aaaaa
2265 aabbaa
2266
2267 /(?(?=[^a-z]+[a-z]) \d{2}-[a-z]{3}-\d{2} | \d{2}-\d{2}-\d{2} ) /x
2268 12-sep-98
2269 12-09-98
2270 *** Failers
2271 sep-12-98
2272
2273 /(?<=(foo))bar\1/
2274 foobarfoo
2275 foobarfootling
2276 *** Failers
2277 foobar
2278 barfoo
2279
2280 /(?i:saturday|sunday)/
2281 saturday
2282 sunday
2283 Saturday
2284 Sunday
2285 SATURDAY
2286 SUNDAY
2287 SunDay
2288
2289 /(a(?i)bc|BB)x/
2290 abcx
2291 aBCx
2292 bbx
2293 BBx
2294 *** Failers
2295 abcX
2296 aBCX
2297 bbX
2298 BBX
2299
2300 /^([ab](?i)[cd]|[ef])/
2301 ac
2302 aC
2303 bD
2304 elephant
2305 Europe
2306 frog
2307 France
2308 *** Failers
2309 Africa
2310
2311 /^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2312 ab
2313 aBd
2314 xy
2315 xY
2316 zebra
2317 Zambesi
2318 *** Failers
2319 aCD
2320 XY
2321
2322 /(?<=foo\n)^bar/m
2323 foo\nbar
2324 *** Failers
2325 bar
2326 baz\nbar
2327
2328 /(?<=(?<!foo)bar)baz/
2329 barbaz
2330 barbarbaz
2331 koobarbaz
2332 *** Failers
2333 baz
2334 foobarbaz
2335
2336 /The cases of aaaa and aaaaaa are missed out below because Perl does things/
2337 /differently. We know that odd, and maybe incorrect, things happen with/
2338 /recursive references in Perl, as far as 5.11.3 - see some stuff in test #2./
2339
2340 /^(a\1?){4}$/
2341 a
2342 aa
2343 aaa
2344 aaaaa
2345 aaaaaaa
2346 aaaaaaaa
2347 aaaaaaaaa
2348 aaaaaaaaaa
2349 aaaaaaaaaaa
2350 aaaaaaaaaaaa
2351 aaaaaaaaaaaaa
2352 aaaaaaaaaaaaaa
2353 aaaaaaaaaaaaaaa
2354 aaaaaaaaaaaaaaaa
2355
2356 /^(a\1?)(a\1?)(a\2?)(a\3?)$/
2357 a
2358 aa
2359 aaa
2360 aaaa
2361 aaaaa
2362 aaaaaa
2363 aaaaaaa
2364 aaaaaaaa
2365 aaaaaaaaa
2366 aaaaaaaaaa
2367 aaaaaaaaaaa
2368 aaaaaaaaaaaa
2369 aaaaaaaaaaaaa
2370 aaaaaaaaaaaaaa
2371 aaaaaaaaaaaaaaa
2372 aaaaaaaaaaaaaaaa
2373
2374 /The following tests are taken from the Perl 5.005 test suite; some of them/
2375 /are compatible with 5.004, but I'd rather not have to sort them out./
2376
2377 /abc/
2378 abc
2379 xabcy
2380 ababc
2381 *** Failers
2382 xbc
2383 axc
2384 abx
2385
2386 /ab*c/
2387 abc
2388
2389 /ab*bc/
2390 abc
2391 abbc
2392 abbbbc
2393
2394 /.{1}/
2395 abbbbc
2396
2397 /.{3,4}/
2398 abbbbc
2399
2400 /ab{0,}bc/
2401 abbbbc
2402
2403 /ab+bc/
2404 abbc
2405 *** Failers
2406 abc
2407 abq
2408
2409 /ab{1,}bc/
2410
2411 /ab+bc/
2412 abbbbc
2413
2414 /ab{1,}bc/
2415 abbbbc
2416
2417 /ab{1,3}bc/
2418 abbbbc
2419
2420 /ab{3,4}bc/
2421 abbbbc
2422
2423 /ab{4,5}bc/
2424 *** Failers
2425 abq
2426 abbbbc
2427
2428 /ab?bc/
2429 abbc
2430 abc
2431
2432 /ab{0,1}bc/
2433 abc
2434
2435 /ab?bc/
2436
2437 /ab?c/
2438 abc
2439
2440 /ab{0,1}c/
2441 abc
2442
2443 /^abc$/
2444 abc
2445 *** Failers
2446 abbbbc
2447 abcc
2448
2449 /^abc/
2450 abcc
2451
2452 /^abc$/
2453
2454 /abc$/
2455 aabc
2456 *** Failers
2457 aabc
2458 aabcd
2459
2460 /^/
2461 abc
2462
2463 /$/
2464 abc
2465
2466 /a.c/
2467 abc
2468 axc
2469
2470 /a.*c/
2471 axyzc
2472
2473 /a[bc]d/
2474 abd
2475 *** Failers
2476 axyzd
2477 abc
2478
2479 /a[b-d]e/
2480 ace
2481
2482 /a[b-d]/
2483 aac
2484
2485 /a[-b]/
2486 a-
2487
2488 /a[b-]/
2489 a-
2490
2491 /a]/
2492 a]
2493
2494 /a[]]b/
2495 a]b
2496
2497 /a[^bc]d/
2498 aed
2499 *** Failers
2500 abd
2501 abd
2502
2503 /a[^-b]c/
2504 adc
2505
2506 /a[^]b]c/
2507 adc
2508 *** Failers
2509 a-c
2510 a]c
2511
2512 /\ba\b/
2513 a-
2514 -a
2515 -a-
2516
2517 /\by\b/
2518 *** Failers
2519 xy
2520 yz
2521 xyz
2522
2523 /\Ba\B/
2524 *** Failers
2525 a-
2526 -a
2527 -a-
2528
2529 /\By\b/
2530 xy
2531
2532 /\by\B/
2533 yz
2534
2535 /\By\B/
2536 xyz
2537
2538 /\w/
2539 a
2540
2541 /\W/
2542 -
2543 *** Failers
2544 -
2545 a
2546
2547 /a\sb/
2548 a b
2549
2550 /a\Sb/
2551 a-b
2552 *** Failers
2553 a-b
2554 a b
2555
2556 /\d/
2557 1
2558
2559 /\D/
2560 -
2561 *** Failers
2562 -
2563 1
2564
2565 /[\w]/
2566 a
2567
2568 /[\W]/
2569 -
2570 *** Failers
2571 -
2572 a
2573
2574 /a[\s]b/
2575 a b
2576
2577 /a[\S]b/
2578 a-b
2579 *** Failers
2580 a-b
2581 a b
2582
2583 /[\d]/
2584 1
2585
2586 /[\D]/
2587 -
2588 *** Failers
2589 -
2590 1
2591
2592 /ab|cd/
2593 abc
2594 abcd
2595
2596 /()ef/
2597 def
2598
2599 /$b/
2600
2601 /a\(b/
2602 a(b
2603
2604 /a\(*b/
2605 ab
2606 a((b
2607
2608 /a\\b/
2609 a\b
2610
2611 /((a))/
2612 abc
2613
2614 /(a)b(c)/
2615 abc
2616
2617 /a+b+c/
2618 aabbabc
2619
2620 /a{1,}b{1,}c/
2621 aabbabc
2622
2623 /a.+?c/
2624 abcabc
2625
2626 /(a+|b)*/
2627 ab
2628
2629 /(a+|b){0,}/
2630 ab
2631
2632 /(a+|b)+/
2633 ab
2634
2635 /(a+|b){1,}/
2636 ab
2637
2638 /(a+|b)?/
2639 ab
2640
2641 /(a+|b){0,1}/
2642 ab
2643
2644 /[^ab]*/
2645 cde
2646
2647 /abc/
2648 *** Failers
2649 b
2650
2651
2652 /a*/
2653
2654
2655 /([abc])*d/
2656 abbbcd
2657
2658 /([abc])*bcd/
2659 abcd
2660
2661 /a|b|c|d|e/
2662 e
2663
2664 /(a|b|c|d|e)f/
2665 ef
2666
2667 /abcd*efg/
2668 abcdefg
2669
2670 /ab*/
2671 xabyabbbz
2672 xayabbbz
2673
2674 /(ab|cd)e/
2675 abcde
2676
2677 /[abhgefdc]ij/
2678 hij
2679
2680 /^(ab|cd)e/
2681
2682 /(abc|)ef/
2683 abcdef
2684
2685 /(a|b)c*d/
2686 abcd
2687
2688 /(ab|ab*)bc/
2689 abc
2690
2691 /a([bc]*)c*/
2692 abc
2693
2694 /a([bc]*)(c*d)/
2695 abcd
2696
2697 /a([bc]+)(c*d)/
2698 abcd
2699
2700 /a([bc]*)(c+d)/
2701 abcd
2702
2703 /a[bcd]*dcdcde/
2704 adcdcde
2705
2706 /a[bcd]+dcdcde/
2707 *** Failers
2708 abcde
2709 adcdcde
2710
2711 /(ab|a)b*c/
2712 abc
2713
2714 /((a)(b)c)(d)/
2715 abcd
2716
2717 /[a-zA-Z_][a-zA-Z0-9_]*/
2718 alpha
2719
2720 /^a(bc+|b[eh])g|.h$/
2721 abh
2722
2723 /(bc+d$|ef*g.|h?i(j|k))/
2724 effgz
2725 ij
2726 reffgz
2727 *** Failers
2728 effg
2729 bcdd
2730
2731 /((((((((((a))))))))))/
2732 a
2733
2734 /((((((((((a))))))))))\10/
2735 aa
2736
2737 /(((((((((a)))))))))/
2738 a
2739
2740 /multiple words of text/
2741 *** Failers
2742 aa
2743 uh-uh
2744
2745 /multiple words/
2746 multiple words, yeah
2747
2748 /(.*)c(.*)/
2749 abcde
2750
2751 /\((.*), (.*)\)/
2752 (a, b)
2753
2754 /[k]/
2755
2756 /abcd/
2757 abcd
2758
2759 /a(bc)d/
2760 abcd
2761
2762 /a[-]?c/
2763 ac
2764
2765 /(abc)\1/
2766 abcabc
2767
2768 /([a-c]*)\1/
2769 abcabc
2770
2771 /(a)|\1/
2772 a
2773 *** Failers
2774 ab
2775 x
2776
2777 /(([a-c])b*?\2)*/
2778 ababbbcbc
2779
2780 /(([a-c])b*?\2){3}/
2781 ababbbcbc
2782
2783 /((\3|b)\2(a)x)+/
2784 aaaxabaxbaaxbbax
2785
2786 /((\3|b)\2(a)){2,}/
2787 bbaababbabaaaaabbaaaabba
2788
2789 /abc/i
2790 ABC
2791 XABCY
2792 ABABC
2793 *** Failers
2794 aaxabxbaxbbx
2795 XBC
2796 AXC
2797 ABX
2798
2799 /ab*c/i
2800 ABC
2801
2802 /ab*bc/i
2803 ABC
2804 ABBC
2805
2806 /ab*?bc/i
2807 ABBBBC
2808
2809 /ab{0,}?bc/i
2810 ABBBBC
2811
2812 /ab+?bc/i
2813 ABBC
2814
2815 /ab+bc/i
2816 *** Failers
2817 ABC
2818 ABQ
2819
2820 /ab{1,}bc/i
2821
2822 /ab+bc/i
2823 ABBBBC
2824
2825 /ab{1,}?bc/i
2826 ABBBBC
2827
2828 /ab{1,3}?bc/i
2829 ABBBBC
2830
2831 /ab{3,4}?bc/i
2832 ABBBBC
2833
2834 /ab{4,5}?bc/i
2835 *** Failers
2836 ABQ
2837 ABBBBC
2838
2839 /ab??bc/i
2840 ABBC
2841 ABC
2842
2843 /ab{0,1}?bc/i
2844 ABC
2845
2846 /ab??bc/i
2847
2848 /ab??c/i
2849 ABC
2850
2851 /ab{0,1}?c/i
2852 ABC
2853
2854 /^abc$/i
2855 ABC
2856 *** Failers
2857 ABBBBC
2858 ABCC
2859
2860 /^abc/i
2861 ABCC
2862
2863 /^abc$/i
2864
2865 /abc$/i
2866 AABC
2867
2868 /^/i
2869 ABC
2870
2871 /$/i
2872 ABC
2873
2874 /a.c/i
2875 ABC
2876 AXC
2877
2878 /a.*?c/i
2879 AXYZC
2880
2881 /a.*c/i
2882 *** Failers
2883 AABC
2884 AXYZD
2885
2886 /a[bc]d/i
2887 ABD
2888
2889 /a[b-d]e/i
2890 ACE
2891 *** Failers
2892 ABC
2893 ABD
2894
2895 /a[b-d]/i
2896 AAC
2897
2898 /a[-b]/i
2899 A-
2900
2901 /a[b-]/i
2902 A-
2903
2904 /a]/i
2905 A]
2906
2907 /a[]]b/i
2908 A]B
2909
2910 /a[^bc]d/i
2911 AED
2912
2913 /a[^-b]c/i
2914 ADC
2915 *** Failers
2916 ABD
2917 A-C
2918
2919 /a[^]b]c/i
2920 ADC
2921
2922 /ab|cd/i
2923 ABC
2924 ABCD
2925
2926 /()ef/i
2927 DEF
2928
2929 /$b/i
2930 *** Failers
2931 A]C
2932 B
2933
2934 /a\(b/i
2935 A(B
2936
2937 /a\(*b/i
2938 AB
2939 A((B
2940
2941 /a\\b/i
2942 A\B
2943
2944 /((a))/i
2945 ABC
2946
2947 /(a)b(c)/i
2948 ABC
2949
2950 /a+b+c/i
2951 AABBABC
2952
2953 /a{1,}b{1,}c/i
2954 AABBABC
2955
2956 /a.+?c/i
2957 ABCABC
2958
2959 /a.*?c/i
2960 ABCABC
2961
2962 /a.{0,5}?c/i
2963 ABCABC
2964
2965 /(a+|b)*/i
2966 AB
2967
2968 /(a+|b){0,}/i
2969 AB
2970
2971 /(a+|b)+/i
2972 AB
2973
2974 /(a+|b){1,}/i
2975 AB
2976
2977 /(a+|b)?/i
2978 AB
2979
2980 /(a+|b){0,1}/i
2981 AB
2982
2983 /(a+|b){0,1}?/i
2984 AB
2985
2986 /[^ab]*/i
2987 CDE
2988
2989 /abc/i
2990
2991 /a*/i
2992
2993
2994 /([abc])*d/i
2995 ABBBCD
2996
2997 /([abc])*bcd/i
2998 ABCD
2999
3000 /a|b|c|d|e/i
3001 E
3002
3003 /(a|b|c|d|e)f/i
3004 EF
3005
3006 /abcd*efg/i
3007 ABCDEFG
3008
3009 /ab*/i
3010 XABYABBBZ
3011 XAYABBBZ
3012
3013 /(ab|cd)e/i
3014 ABCDE
3015
3016 /[abhgefdc]ij/i
3017 HIJ
3018
3019 /^(ab|cd)e/i
3020 ABCDE
3021
3022 /(abc|)ef/i
3023 ABCDEF
3024
3025 /(a|b)c*d/i
3026 ABCD
3027
3028 /(ab|ab*)bc/i
3029 ABC
3030
3031 /a([bc]*)c*/i
3032 ABC
3033
3034 /a([bc]*)(c*d)/i
3035 ABCD
3036
3037 /a([bc]+)(c*d)/i
3038 ABCD
3039
3040 /a([bc]*)(c+d)/i
3041 ABCD
3042
3043 /a[bcd]*dcdcde/i
3044 ADCDCDE
3045
3046 /a[bcd]+dcdcde/i
3047
3048 /(ab|a)b*c/i
3049 ABC
3050
3051 /((a)(b)c)(d)/i
3052 ABCD
3053
3054 /[a-zA-Z_][a-zA-Z0-9_]*/i
3055 ALPHA
3056
3057 /^a(bc+|b[eh])g|.h$/i
3058 ABH
3059
3060 /(bc+d$|ef*g.|h?i(j|k))/i
3061 EFFGZ
3062 IJ
3063 REFFGZ
3064 *** Failers
3065 ADCDCDE
3066 EFFG
3067 BCDD
3068
3069 /((((((((((a))))))))))/i
3070 A
3071
3072 /((((((((((a))))))))))\10/i
3073 AA
3074
3075 /(((((((((a)))))))))/i
3076 A
3077
3078 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3079 A
3080
3081 /(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3082 C
3083
3084 /multiple words of text/i
3085 *** Failers
3086 AA
3087 UH-UH
3088
3089 /multiple words/i
3090 MULTIPLE WORDS, YEAH
3091
3092 /(.*)c(.*)/i
3093 ABCDE
3094
3095 /\((.*), (.*)\)/i
3096 (A, B)
3097
3098 /[k]/i
3099
3100 /abcd/i
3101 ABCD
3102
3103 /a(bc)d/i
3104 ABCD
3105
3106 /a[-]?c/i
3107 AC
3108
3109 /(abc)\1/i
3110 ABCABC
3111
3112 /([a-c]*)\1/i
3113 ABCABC
3114
3115 /a(?!b)./
3116 abad
3117
3118 /a(?=d)./
3119 abad
3120
3121 /a(?=c|d)./
3122 abad
3123
3124 /a(?:b|c|d)(.)/
3125 ace
3126
3127 /a(?:b|c|d)*(.)/
3128 ace
3129
3130 /a(?:b|c|d)+?(.)/
3131 ace
3132 acdbcdbe
3133
3134 /a(?:b|c|d)+(.)/
3135 acdbcdbe
3136
3137 /a(?:b|c|d){2}(.)/
3138 acdbcdbe
3139
3140 /a(?:b|c|d){4,5}(.)/
3141 acdbcdbe
3142
3143 /a(?:b|c|d){4,5}?(.)/
3144 acdbcdbe
3145
3146 /((foo)|(bar))*/
3147 foobar
3148
3149 /a(?:b|c|d){6,7}(.)/
3150 acdbcdbe
3151
3152 /a(?:b|c|d){6,7}?(.)/
3153 acdbcdbe
3154
3155 /a(?:b|c|d){5,6}(.)/
3156 acdbcdbe
3157
3158 /a(?:b|c|d){5,6}?(.)/
3159 acdbcdbe
3160
3161 /a(?:b|c|d){5,7}(.)/
3162 acdbcdbe
3163
3164 /a(?:b|c|d){5,7}?(.)/
3165 acdbcdbe
3166
3167 /a(?:b|(c|e){1,2}?|d)+?(.)/
3168 ace
3169
3170 /^(.+)?B/
3171 AB
3172
3173 /^([^a-z])|(\^)$/
3174 .
3175
3176 /^[<>]&/
3177 <&OUT
3178
3179 /^(a\1?){4}$/
3180 aaaaaaaaaa
3181 *** Failers
3182 AB
3183 aaaaaaaaa
3184 aaaaaaaaaaa
3185
3186 /^(a(?(1)\1)){4}$/
3187 aaaaaaaaaa
3188 *** Failers
3189 aaaaaaaaa
3190 aaaaaaaaaaa
3191
3192 /(?:(f)(o)(o)|(b)(a)(r))*/
3193 foobar
3194
3195 /(?<=a)b/
3196 ab
3197 *** Failers
3198 cb
3199 b
3200
3201 /(?<!c)b/
3202 ab
3203 b
3204 b
3205
3206 /(?:..)*a/
3207 aba
3208
3209 /(?:..)*?a/
3210 aba
3211
3212 /^(?:b|a(?=(.)))*\1/
3213 abc
3214
3215 /^(){3,5}/
3216 abc
3217
3218 /^(a+)*ax/
3219 aax
3220
3221 /^((a|b)+)*ax/
3222 aax
3223
3224 /^((a|bc)+)*ax/
3225 aax
3226
3227 /(a|x)*ab/
3228 cab
3229
3230 /(a)*ab/
3231 cab
3232
3233 /(?:(?i)a)b/
3234 ab
3235
3236 /((?i)a)b/
3237 ab
3238
3239 /(?:(?i)a)b/
3240 Ab
3241
3242 /((?i)a)b/
3243 Ab
3244
3245 /(?:(?i)a)b/
3246 *** Failers
3247 cb
3248 aB
3249
3250 /((?i)a)b/
3251
3252 /(?i:a)b/
3253 ab
3254
3255 /((?i:a))b/
3256 ab
3257
3258 /(?i:a)b/
3259 Ab
3260
3261 /((?i:a))b/
3262 Ab
3263
3264 /(?i:a)b/
3265 *** Failers
3266 aB
3267 aB
3268
3269 /((?i:a))b/
3270
3271 /(?:(?-i)a)b/i
3272 ab
3273
3274 /((?-i)a)b/i
3275 ab
3276
3277 /(?:(?-i)a)b/i
3278 aB
3279
3280 /((?-i)a)b/i
3281 aB
3282
3283 /(?:(?-i)a)b/i
3284 *** Failers
3285 aB
3286 Ab
3287
3288 /((?-i)a)b/i
3289
3290 /(?:(?-i)a)b/i
3291 aB
3292
3293 /((?-i)a)b/i
3294 aB
3295
3296 /(?:(?-i)a)b/i
3297 *** Failers
3298 Ab
3299 AB
3300
3301 /((?-i)a)b/i
3302
3303 /(?-i:a)b/i
3304 ab
3305
3306 /((?-i:a))b/i
3307 ab
3308
3309 /(?-i:a)b/i
3310 aB
3311
3312 /((?-i:a))b/i
3313 aB
3314
3315 /(?-i:a)b/i
3316 *** Failers
3317 AB
3318 Ab
3319
3320 /((?-i:a))b/i
3321
3322 /(?-i:a)b/i
3323 aB
3324
3325 /((?-i:a))b/i
3326 aB
3327
3328 /(?-i:a)b/i
3329 *** Failers
3330 Ab
3331 AB
3332
3333 /((?-i:a))b/i
3334
3335 /((?-i:a.))b/i
3336 *** Failers
3337 AB
3338 a\nB
3339
3340 /((?s-i:a.))b/i
3341 a\nB
3342
3343 /(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3344 cabbbb
3345
3346 /(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3347 caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3348
3349 /(ab)\d\1/i
3350 Ab4ab
3351 ab4Ab
3352
3353 /foo\w*\d{4}baz/
3354 foobar1234baz
3355
3356 /x(~~)*(?:(?:F)?)?/
3357 x~~
3358
3359 /^a(?#xxx){3}c/
3360 aaac
3361
3362 /^a (?#xxx) (?#yyy) {3}c/x
3363 aaac
3364
3365 /(?<![cd])b/
3366 *** Failers
3367 B\nB
3368 dbcb
3369
3370 /(?<![cd])[ab]/
3371 dbaacb
3372
3373 /(?<!(c|d))b/
3374
3375 /(?<!(c|d))[ab]/
3376 dbaacb
3377
3378 /(?<!cd)[ab]/
3379 cdaccb
3380
3381 /^(?:a?b?)*$/
3382 \
3383 a
3384 ab
3385 aaa
3386 *** Failers
3387 dbcb
3388 a--
3389 aa--
3390
3391 /((?s)^a(.))((?m)^b$)/
3392 a\nb\nc\n
3393
3394 /((?m)^b$)/
3395 a\nb\nc\n
3396
3397 /(?m)^b/
3398 a\nb\n
3399
3400 /(?m)^(b)/
3401 a\nb\n
3402
3403 /((?m)^b)/
3404 a\nb\n
3405
3406 /\n((?m)^b)/
3407 a\nb\n
3408
3409 /((?s).)c(?!.)/
3410 a\nb\nc\n
3411 a\nb\nc\n
3412
3413 /((?s)b.)c(?!.)/
3414 a\nb\nc\n
3415 a\nb\nc\n
3416
3417 /^b/
3418
3419 /()^b/
3420 *** Failers
3421 a\nb\nc\n
3422 a\nb\nc\n
3423
3424 /((?m)^b)/
3425 a\nb\nc\n
3426
3427 /(x)?(?(1)a|b)/
3428 *** Failers
3429 a
3430 a
3431
3432 /(x)?(?(1)b|a)/
3433 a
3434
3435 /()?(?(1)b|a)/
3436 a
3437
3438 /()(?(1)b|a)/
3439
3440 /()?(?(1)a|b)/
3441 a
3442
3443 /^(\()?blah(?(1)(\)))$/
3444 (blah)
3445 blah
3446 *** Failers
3447 a
3448 blah)
3449 (blah
3450
3451 /^(\(+)?blah(?(1)(\)))$/
3452 (blah)
3453 blah
3454 *** Failers
3455 blah)
3456 (blah
3457
3458 /(?(?!a)a|b)/
3459
3460 /(?(?!a)b|a)/
3461 a
3462
3463 /(?(?=a)b|a)/
3464 *** Failers
3465 a
3466 a
3467
3468 /(?(?=a)a|b)/
3469 a
3470
3471 /(?=(a+?))(\1ab)/
3472 aaab
3473
3474 /^(?=(a+?))\1ab/
3475
3476 /(\w+:)+/
3477 one:
3478
3479 /$(?<=^(a))/
3480 a
3481
3482 /(?=(a+?))(\1ab)/
3483 aaab
3484
3485 /^(?=(a+?))\1ab/
3486 *** Failers
3487 aaab
3488 aaab
3489
3490 /([\w:]+::)?(\w+)$/
3491 abcd
3492 xy:z:::abcd
3493
3494 /^[^bcd]*(c+)/
3495 aexycd
3496
3497 /(a*)b+/
3498 caab
3499
3500 /([\w:]+::)?(\w+)$/
3501 abcd
3502 xy:z:::abcd
3503 *** Failers
3504 abcd:
3505 abcd:
3506
3507 /^[^bcd]*(c+)/
3508 aexycd
3509
3510 /(>a+)ab/
3511
3512 /(?>a+)b/
3513 aaab
3514
3515 /([[:]+)/
3516 a:[b]:
3517
3518 /([[=]+)/
3519 a=[b]=
3520
3521 /([[.]+)/
3522 a.[b].
3523
3524 /((?>a+)b)/
3525 aaab
3526
3527 /(?>(a+))b/
3528 aaab
3529
3530 /((?>[^()]+)|\([^()]*\))+/
3531 ((abc(ade)ufh()()x
3532
3533 /a\Z/
3534 *** Failers
3535 aaab
3536 a\nb\n
3537
3538 /b\Z/
3539 a\nb\n
3540
3541 /b\z/
3542
3543 /b\Z/
3544 a\nb
3545
3546 /b\z/
3547 a\nb
3548 *** Failers
3549
3550 /^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
3551 a
3552 abc
3553 a-b
3554 0-9
3555 a.b
3556 5.6.7
3557 the.quick.brown.fox
3558 a100.b200.300c
3559 12-ab.1245
3560 *** Failers
3561 \
3562 .a
3563 -a
3564 a-
3565 a.
3566 a_b
3567 a.-
3568 a..
3569 ab..bc
3570 the.quick.brown.fox-
3571 the.quick.brown.fox.
3572 the.quick.brown.fox_
3573 the.quick.brown.fox+
3574
3575 /(?>.*)(?<=(abcd|wxyz))/
3576 alphabetabcd
3577 endingwxyz
3578 *** Failers
3579 a rather long string that doesn't end with one of them
3580
3581 /word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3582 word cat dog elephant mussel cow horse canary baboon snake shark otherword
3583 word cat dog elephant mussel cow horse canary baboon snake shark
3584
3585 /word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3586 word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
3587
3588 /(?<=\d{3}(?!999))foo/
3589 999foo
3590 123999foo
3591 *** Failers
3592 123abcfoo
3593
3594 /(?<=(?!...999)\d{3})foo/
3595 999foo
3596 123999foo
3597 *** Failers
3598 123abcfoo
3599
3600 /(?<=\d{3}(?!999)...)foo/
3601 123abcfoo
3602 123456foo
3603 *** Failers
3604 123999foo
3605
3606 /(?<=\d{3}...)(?<!999)foo/
3607 123abcfoo
3608 123456foo
3609 *** Failers
3610 123999foo
3611
3612 /<a[\s]+href[\s]*=[\s]* # find <a href=
3613 ([\"\'])? # find single or double quote
3614 (?(1) (.*?)\1 | ([^\s]+)) # if quote found, match up to next matching
3615 # quote, otherwise match up to next space
3616 /isx
3617 <a href=abcd xyz
3618 <a href=\"abcd xyz pqr\" cats
3619 <a href=\'abcd xyz pqr\' cats
3620
3621 /<a\s+href\s*=\s* # find <a href=
3622 (["'])? # find single or double quote
3623 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3624 # quote, otherwise match up to next space
3625 /isx
3626 <a href=abcd xyz
3627 <a href=\"abcd xyz pqr\" cats
3628 <a href = \'abcd xyz pqr\' cats
3629
3630 /<a\s+href(?>\s*)=(?>\s*) # find <a href=
3631 (["'])? # find single or double quote
3632 (?(1) (.*?)\1 | (\S+)) # if quote found, match up to next matching
3633 # quote, otherwise match up to next space
3634 /isx
3635 <a href=abcd xyz
3636 <a href=\"abcd xyz pqr\" cats
3637 <a href = \'abcd xyz pqr\' cats
3638
3639 /((Z)+|A)*/
3640 ZABCDEFG
3641
3642 /(Z()|A)*/
3643 ZABCDEFG
3644
3645 /(Z(())|A)*/
3646 ZABCDEFG
3647
3648 /((?>Z)+|A)*/
3649 ZABCDEFG
3650
3651 /((?>)+|A)*/
3652 ZABCDEFG
3653
3654 /a*/g
3655 abbab
3656
3657 /^[a-\d]/
3658 abcde
3659 -things
3660 0digit
3661 *** Failers
3662 bcdef
3663
3664 /^[\d-a]/
3665 abcde
3666 -things
3667 0digit
3668 *** Failers
3669 bcdef
3670
3671 /[[:space:]]+/
3672 > \x09\x0a\x0c\x0d\x0b<
3673
3674 /[[:blank:]]+/
3675 > \x09\x0a\x0c\x0d\x0b<
3676
3677 /[\s]+/
3678 > \x09\x0a\x0c\x0d\x0b<
3679
3680 /\s+/
3681 > \x09\x0a\x0c\x0d\x0b<
3682
3683 /a b/x
3684 ab
3685
3686 /(?!\A)x/m
3687 a\nxb\n
3688
3689 /(?!^)x/m
3690 a\nxb\n
3691
3692 /abc\Qabc\Eabc/
3693 abcabcabc
3694
3695 /abc\Q(*+|\Eabc/
3696 abc(*+|abc
3697
3698 / abc\Q abc\Eabc/x
3699 abc abcabc
3700 *** Failers
3701 abcabcabc
3702
3703 /abc#comment
3704 \Q#not comment
3705 literal\E/x
3706 abc#not comment\n literal
3707
3708 /abc#comment
3709 \Q#not comment
3710 literal/x
3711 abc#not comment\n literal
3712
3713 /abc#comment
3714 \Q#not comment
3715 literal\E #more comment
3716 /x
3717 abc#not comment\n literal
3718
3719 /abc#comment
3720 \Q#not comment
3721 literal\E #more comment/x
3722 abc#not comment\n literal
3723
3724 /\Qabc\$xyz\E/
3725 abc\\\$xyz
3726
3727 /\Qabc\E\$\Qxyz\E/
3728 abc\$xyz
3729
3730 /\Gabc/
3731 abc
3732 *** Failers
3733 xyzabc
3734
3735 /\Gabc./g
3736 abc1abc2xyzabc3
3737
3738 /abc./g
3739 abc1abc2xyzabc3
3740
3741 /a(?x: b c )d/
3742 XabcdY
3743 *** Failers
3744 Xa b c d Y
3745
3746 /((?x)x y z | a b c)/
3747 XabcY
3748 AxyzB
3749
3750 /(?i)AB(?-i)C/
3751 XabCY
3752 *** Failers
3753 XabcY
3754
3755 /((?i)AB(?-i)C|D)E/
3756 abCE
3757 DE
3758 *** Failers
3759 abcE
3760 abCe
3761 dE
3762 De
3763
3764 /(.*)\d+\1/
3765 abc123abc
3766 abc123bc
3767
3768 /(.*)\d+\1/s
3769 abc123abc
3770 abc123bc
3771
3772 /((.*))\d+\1/
3773 abc123abc
3774 abc123bc
3775
3776 /-- This tests for an IPv6 address in the form where it can have up to --/
3777 /-- eight components, one and only one of which is empty. This must be --/
3778 /-- an internal component. --/
3779
3780 /^(?!:) # colon disallowed at start
3781 (?: # start of item
3782 (?: [0-9a-f]{1,4} | # 1-4 hex digits or
3783 (?(1)0 | () ) ) # if null previously matched, fail; else null
3784 : # followed by colon
3785 ){1,7} # end item; 1-7 of them required
3786 [0-9a-f]{1,4} $ # final hex number at end of string
3787 (?(1)|.) # check that there was an empty component
3788 /xi
3789 a123::a123
3790 a123:b342::abcd
3791 a123:b342::324e:abcd
3792 a123:ddde:b342::324e:abcd
3793 a123:ddde:b342::324e:dcba:abcd
3794 a123:ddde:9999:b342::324e:dcba:abcd
3795 *** Failers
3796 1:2:3:4:5:6:7:8
3797 a123:bce:ddde:9999:b342::324e:dcba:abcd
3798 a123::9999:b342::324e:dcba:abcd
3799 abcde:2:3:4:5:6:7:8
3800 ::1
3801 abcd:fee0:123::
3802 :1
3803 1:
3804
3805 /[z\Qa-d]\E]/
3806 z
3807 a
3808 -
3809 d
3810 ]
3811 *** Failers
3812 b
3813
3814 /[\z\C]/
3815 z
3816 C
3817
3818 /\M/
3819 M
3820
3821 /(a+)*b/
3822 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3823
3824 /(?i)reg(?:ul(?:[a]|ae)r|ex)/
3825 REGular
3826 regulaer
3827 Regex
3828 regulr
3829
3830 /[--]+/
3831
3832
3833
3834
3835
3836 /(?<=Z)X./
3837 \x84XAZXB
3838
3839 /ab cd (?x) de fg/
3840 ab cd defg
3841
3842 /ab cd(?x) de fg/
3843 ab cddefg
3844 ** Failers
3845 abcddefg
3846
3847 /(?<![^f]oo)(bar)/
3848 foobarX
3849 ** Failers
3850 boobarX
3851
3852 /(?<![^f])X/
3853 offX
3854 ** Failers
3855 onyX
3856
3857 /(?<=[^f])X/
3858 onyX
3859 ** Failers
3860 offX
3861
3862 /^/mg
3863 a\nb\nc\n
3864 \
3865
3866 /(?<=C\n)^/mg
3867 A\nC\nC\n
3868
3869 /(?:(?(1)a|b)(X))+/
3870 bXaX
3871
3872 /(?:(?(1)\1a|b)(X|Y))+/
3873 bXXaYYaY
3874 bXYaXXaX
3875
3876 /()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
3877 bXXaYYaY
3878
3879 /[[,abc,]+]/
3880 abc]
3881 a,b]
3882 [a,b,c]
3883
3884 /(?-x: )/x
3885 A\x20B
3886
3887 "(?x)(?-x: \s*#\s*)"
3888 A # B
3889 ** Failers
3890 #
3891
3892 "(?x-is)(?:(?-ixs) \s*#\s*) include"
3893 A #include
3894 ** Failers
3895 A#include
3896 A #Include
3897
3898 /a*b*\w/
3899 aaabbbb
3900 aaaa
3901 a
3902
3903 /a*b?\w/
3904 aaabbbb
3905 aaaa
3906 a
3907
3908 /a*b{0,4}\w/
3909 aaabbbb
3910 aaaa
3911 a
3912
3913 /a*b{0,}\w/
3914 aaabbbb
3915 aaaa
3916 a
3917
3918 /a*\d*\w/
3919 0a
3920 a
3921
3922 /a*b *\w/x
3923 a
3924
3925 /a*b#comment
3926 *\w/x
3927 a
3928
3929 /a* b *\w/x
3930 a
3931
3932 /^\w+=.*(\\\n.*)*/
3933 abc=xyz\\\npqr
3934
3935 /(?=(\w+))\1:/
3936 abcd:
3937
3938 /^(?=(\w+))\1:/
3939 abcd:
3940
3941 /^\Eabc/
3942 abc
3943
3944 /^[\Eabc]/
3945 a
3946 ** Failers
3947 E
3948
3949 /^[a-\Ec]/
3950 b
3951 ** Failers
3952 -
3953 E
3954
3955 /^[a\E\E-\Ec]/
3956 b
3957 ** Failers
3958 -
3959 E
3960
3961 /^[\E\Qa\E-\Qz\E]+/
3962 b
3963 ** Failers
3964 -
3965
3966 /^[a\Q]bc\E]/
3967 a
3968 ]
3969 c
3970
3971 /^[a-\Q\E]/
3972 a
3973 -
3974
3975 /^(a()*)*/
3976 aaaa
3977
3978 /^(?:a(?:(?:))*)*/
3979 aaaa
3980
3981 /^(a()+)+/
3982 aaaa
3983
3984 /^(?:a(?:(?:))+)+/
3985 aaaa
3986
3987 /(a){0,3}(?(1)b|(c|))*D/
3988 abbD
3989 ccccD
3990 D
3991
3992 /(a|)*\d/
3993 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3994 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3995
3996 /(?>a|)*\d/
3997 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3998 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3999
4000 /(?:a|)*\d/
4001 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4002 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
4003
4004 /\Z/g
4005 abc\n
4006
4007 /^(?s)(?>.*)(?<!\n)/
4008 abc
4009 abc\n
4010
4011 /^(?![^\n]*\n\z)/
4012 abc
4013 abc\n
4014
4015 /\z(?<!\n)/
4016 abc
4017 abc\n
4018
4019 /(.*(.)?)*/
4020 abcd
4021
4022 /( (A | (?(1)0|) )* )/x
4023 abcd
4024
4025 /( ( (?(1)0|) )* )/x
4026 abcd
4027
4028 /( (?(1)0|)* )/x
4029 abcd
4030
4031 /[[:abcd:xyz]]/
4032 a]
4033 :]
4034
4035 /[abc[:x\]pqr]/
4036 a
4037 [
4038 :
4039 ]
4040 p
4041
4042 /.*[op][xyz]/
4043 fooabcfoo
4044
4045 /(?(?=.*b)b|^)/
4046 adc
4047 abc
4048
4049 /(?(?=^.*b)b|^)/
4050 adc
4051 abc
4052
4053 /(?(?=.*b)b|^)*/
4054 adc
4055 abc
4056
4057 /(?(?=.*b)b|^)+/
4058 adc
4059 abc
4060
4061 /(?(?=b).*b|^d)/
4062 abc
4063
4064 /(?(?=.*b).*b|^d)/
4065 abc
4066
4067 /^%((?(?=[a])[^%])|b)*%$/
4068 %ab%
4069
4070 /(?i)a(?-i)b|c/
4071 XabX
4072 XAbX
4073 CcC
4074 ** Failers
4075 XABX
4076
4077 /[\x00-\xff\s]+/
4078 \x0a\x0b\x0c\x0d
4079
4080 /^\c/
4081 ?
4082
4083 /(abc)\1/i
4084 abc
4085
4086 /(abc)\1/
4087 abc
4088
4089 /[^a]*/i
4090 12abc
4091 12ABC
4092
4093 /[^a]*+/i
4094 12abc
4095 12ABC
4096
4097 /[^a]*?X/i
4098 ** Failers
4099 12abc
4100 12ABC
4101
4102 /[^a]+?X/i
4103 ** Failers
4104 12abc
4105 12ABC
4106
4107 /[^a]?X/i
4108 12aXbcX
4109 12AXBCX
4110 BCX
4111
4112 /[^a]??X/i
4113 12aXbcX
4114 12AXBCX
4115 BCX
4116
4117 /[^a]?+X/i
4118 12aXbcX
4119 12AXBCX
4120 BCX
4121
4122 /[^a]{2,3}/i
4123 abcdef
4124 ABCDEF
4125
4126 /[^a]{2,3}?/i
4127 abcdef
4128 ABCDEF
4129
4130 /[^a]{2,3}+/i
4131 abcdef
4132 ABCDEF
4133
4134 /((a|)+)+Z/
4135 Z
4136
4137 /(a)b|(a)c/
4138 ac
4139
4140 /(?>(a))b|(a)c/
4141 ac
4142
4143 /(?=(a))ab|(a)c/
4144 ac
4145
4146 /((?>(a))b|(a)c)/
4147 ac
4148
4149 /((?>(a))b|(a)c)++/
4150 ac
4151
4152 /(?:(?>(a))b|(a)c)++/
4153 ac
4154
4155 /(?=(?>(a))b|(a)c)(..)/
4156 ac
4157
4158 /(?>(?>(a))b|(a)c)/
4159 ac
4160
4161 /(?:(?>([ab])))+a=/+
4162 =ba=
4163
4164 /(?>([ab]))+a=/+
4165 =ba=
4166
4167 /((?>(a+)b)+(aabab))/
4168 aaaabaaabaabab
4169
4170 /(?>a+|ab)+?c/
4171 aabc
4172
4173 /(?>a+|ab)+c/
4174 aabc
4175
4176 /(?:a+|ab)+c/
4177 aabc
4178
4179 /(?(?=(a))a)/
4180 a
4181
4182 /(?(?=(a))a)(b)/
4183 ab
4184
4185 /^(?:a|ab)++c/
4186 aaaabc
4187
4188 /^(?>a|ab)++c/
4189 aaaabc
4190
4191 /^(?:a|ab)+c/
4192 aaaabc
4193
4194 /(?=abc){3}abc/+
4195 abcabcabc
4196 ** Failers
4197 xyz
4198
4199 /(?=abc)+abc/+
4200 abcabcabc
4201 ** Failers
4202 xyz
4203
4204 /(?=abc)++abc/+
4205 abcabcabc
4206 ** Failers
4207 xyz
4208
4209 /(?=abc){0}xyz/
4210 xyz
4211
4212 /(?=abc){1}xyz/
4213 ** Failers
4214 xyz
4215
4216 /(?=(a))?./
4217 ab
4218 bc
4219
4220 /(?=(a))??./
4221 ab
4222 bc
4223
4224 /^(?=(a)){0}b(?1)/
4225 backgammon
4226
4227 /^(?=(?1))?[az]([abc])d/
4228 abd
4229 zcdxx
4230
4231 /^(?!a){0}\w+/
4232 aaaaa
4233
4234 /(?<=(abc))?xyz/
4235 abcxyz
4236 pqrxyz
4237
4238 /^[\g<a>]+/
4239 ggg<<<aaa>>>
4240 ** Failers
4241 \\ga
4242
4243 /^[\ga]+/
4244 gggagagaxyz
4245
4246 /^[:a[:digit:]]+/
4247 aaaa444:::Z
4248
4249 /^[:a[:digit:]:b]+/
4250 aaaa444:::bbbZ
4251
4252 /[:a]xxx[b:]/
4253 :xxx:
4254
4255 /(?<=a{2})b/i
4256 xaabc
4257 ** Failers
4258 xabc
4259
4260 /(?<!a{2})b/i
4261 xabc
4262 ** Failers
4263 xaabc
4264
4265 /(?<=a\h)c/
4266 xa c
4267
4268 /(?<=[^a]{2})b/
4269 axxbc
4270 aAAbc
4271 ** Failers
4272 xaabc
4273
4274 /(?<=[^a]{2})b/i
4275 axxbc
4276 ** Failers
4277 aAAbc
4278 xaabc
4279
4280 /(?<=a\H)c/
4281 abc
4282
4283 /(?<=a\V)c/
4284 abc
4285
4286 /(?<=a\v)c/
4287 a\nc
4288
4289 /(?(?=c)c|d)++Y/
4290 XcccddYX
4291
4292 /(?(?=c)c|d)*+Y/
4293 XcccddYX
4294
4295 /^(a{2,3}){2,}+a/
4296 aaaaaaa
4297 ** Failers
4298 aaaaaa
4299 aaaaaaaaa
4300
4301 /^(a{2,3})++a/
4302 ** Failers
4303 aaaaaa
4304
4305 /^(a{2,3})*+a/
4306 ** Failers
4307 aaaaaa
4308
4309 /ab\Cde/
4310 abXde
4311
4312 /(?<=ab\Cde)X/
4313 abZdeX
4314
4315 /a[\CD]b/
4316 aCb
4317 aDb
4318
4319 /a[\C-X]b/
4320 aJb
4321
4322 /\H\h\V\v/
4323 X X\x0a
4324 X\x09X\x0b
4325 ** Failers
4326 \xa0 X\x0a
4327
4328 /\H*\h+\V?\v{3,4}/
4329 \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4330 \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4331 \x09\x20\xa0\x0a\x0b\x0c
4332 ** Failers
4333 \x09\x20\xa0\x0a\x0b
4334
4335 /\H{3,4}/
4336 XY ABCDE
4337 XY PQR ST
4338
4339 /.\h{3,4}./
4340 XY AB PQRS
4341
4342 /\h*X\h?\H+Y\H?Z/
4343 >XNNNYZ
4344 > X NYQZ
4345 ** Failers
4346 >XYZ
4347 > X NY Z
4348
4349 /\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4350 >XY\x0aZ\x0aA\x0bNN\x0c
4351 >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4352
4353 /(foo)\Kbar/
4354 foobar
4355
4356 /(foo)(\Kbar|baz)/
4357 foobar
4358 foobaz
4359
4360 /(foo\Kbar)baz/
4361 foobarbaz
4362
4363 /abc\K|def\K/g+
4364 Xabcdefghi
4365
4366 /ab\Kc|de\Kf/g+
4367 Xabcdefghi
4368
4369 /(?=C)/g+
4370 ABCDECBA
4371
4372 /^abc\K/+
4373 abcdef
4374 ** Failers
4375 defabcxyz
4376
4377 /^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-02}Z/
4378 ababababbbabZXXXX
4379
4380 /(?<A>tom|bon)-\g{A}/
4381 tom-tom
4382 bon-bon
4383
4384 /(^(a|b\g{-1}))/
4385 bacxxx
4386
4387 /(?|(abc)|(xyz))\1/
4388 abcabc
4389 xyzxyz
4390 ** Failers
4391 abcxyz
4392 xyzabc
4393
4394 /(?|(abc)|(xyz))(?1)/
4395 abcabc
4396 xyzabc
4397 ** Failers
4398 xyzxyz
4399
4400 /^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
4401 XYabcdY
4402
4403 /^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
4404 XYabcdY
4405
4406 /^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
4407 XYabcdY
4408
4409 /(?'abc'\w+):\k<abc>{2}/
4410 a:aaxyz
4411 ab:ababxyz
4412 ** Failers
4413 a:axyz
4414 ab:abxyz
4415
4416 /(?'abc'\w+):\g{abc}{2}/
4417 a:aaxyz
4418 ab:ababxyz
4419 ** Failers
4420 a:axyz
4421 ab:abxyz
4422
4423 /^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
4424 abd
4425 ce
4426
4427 /^(a.)\g-1Z/
4428 aXaXZ
4429
4430 /^(a.)\g{-1}Z/
4431 aXaXZ
4432
4433 /^(?(DEFINE) (?<A> a) (?<B> b) ) (?&A) (?&B) /x
4434 abcd
4435
4436 /(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
4437 (?(DEFINE)
4438 (?<NAME_PAT>[a-z]+)
4439 (?<ADDRESS_PAT>\d+)
4440 )/x
4441 metcalfe 33
4442
4443 /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
4444 1.2.3.4
4445 131.111.10.206
4446 10.0.0.0
4447 ** Failers
4448 10.6
4449 455.3.4.5
4450
4451 /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
4452 1.2.3.4
4453 131.111.10.206
4454 10.0.0.0
4455 ** Failers
4456 10.6
4457 455.3.4.5
4458
4459 /^(\w++|\s++)*$/
4460 now is the time for all good men to come to the aid of the party
4461 *** Failers
4462 this is not a line with only words and spaces!
4463
4464 /(\d++)(\w)/
4465 12345a
4466 *** Failers
4467 12345+
4468
4469 /a++b/
4470 aaab
4471
4472 /(a++b)/
4473 aaab
4474
4475 /(a++)b/
4476 aaab
4477
4478 /([^()]++|\([^()]*\))+/
4479 ((abc(ade)ufh()()x
4480
4481 /\(([^()]++|\([^()]+\))+\)/
4482 (abc)
4483 (abc(def)xyz)
4484 *** Failers
4485 ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4486
4487 /^([^()]|\((?1)*\))*$/
4488 abc
4489 a(b)c
4490 a(b(c))d
4491 *** Failers)
4492 a(b(c)d
4493
4494 /^>abc>([^()]|\((?1)*\))*<xyz<$/
4495 >abc>123<xyz<
4496 >abc>1(2)3<xyz<
4497 >abc>(1(2)3)<xyz<
4498
4499 /^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
4500 1221
4501 Satanoscillatemymetallicsonatas
4502 AmanaplanacanalPanama
4503 AblewasIereIsawElba
4504 *** Failers
4505 Thequickbrownfox
4506
4507 /^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
4508 12
4509 (((2+2)*-3)-7)
4510 -12
4511 *** Failers
4512 ((2+2)*-3)-7)
4513
4514 /^(x(y|(?1){2})z)/
4515 xyz
4516 xxyzxyzz
4517 *** Failers
4518 xxyzz
4519 xxyzxyzxyzz
4520
4521 /((< (?: (?(R) \d++ | [^<>]*+) | (?2)) * >))/x
4522 <>
4523 <abcd>
4524 <abc <123> hij>
4525 <abc <def> hij>
4526 <abc<>def>
4527 <abc<>
4528 *** Failers
4529 <abc
4530
4531 /^a+(*FAIL)/
4532 aaaaaa
4533
4534 /a+b?c+(*FAIL)/
4535 aaabccc
4536
4537 /a+b?(*PRUNE)c+(*FAIL)/
4538 aaabccc
4539
4540 /a+b?(*COMMIT)c+(*FAIL)/
4541 aaabccc
4542
4543 /a+b?(*SKIP)c+(*FAIL)/
4544 aaabcccaaabccc
4545
4546 /^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4547 aaaxxxxxx
4548 aaa++++++
4549 bbbxxxxx
4550 bbb+++++
4551 cccxxxx
4552 ccc++++
4553 dddddddd
4554
4555 /^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4556 aaaxxxxxx
4557 aaa++++++
4558 bbbxxxxx
4559 bbb+++++
4560 cccxxxx
4561 ccc++++
4562 dddddddd
4563
4564 /a+b?(*THEN)c+(*FAIL)/
4565 aaabccc
4566
4567 /(A (A|B(*ACCEPT)|C) D)(E)/x
4568 AB
4569 ABX
4570 AADE
4571 ACDE
4572 ** Failers
4573 AD
4574
4575 /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
4576 1221
4577 Satan, oscillate my metallic sonatas!
4578 A man, a plan, a canal: Panama!
4579 Able was I ere I saw Elba.
4580 *** Failers
4581 The quick brown fox
4582
4583 /^((.)(?1)\2|.)$/
4584 a
4585 aba
4586 aabaa
4587 abcdcba
4588 pqaabaaqp
4589 ablewasiereisawelba
4590 rhubarb
4591 the quick brown fox
4592
4593 /(a)(?<=b(?1))/
4594 baz
4595 ** Failers
4596 caz
4597
4598 /(?<=b(?1))(a)/
4599 zbaaz
4600 ** Failers
4601 aaa
4602
4603 /(?<X>a)(?<=b(?&X))/
4604 baz
4605
4606 /^(?|(abc)|(def))\1/
4607 abcabc
4608 defdef
4609 ** Failers
4610 abcdef
4611 defabc
4612
4613 /^(?|(abc)|(def))(?1)/
4614 abcabc
4615 defabc
4616 ** Failers
4617 defdef
4618 abcdef
4619
4620 /(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/xJ
4621 a\"aaaaa
4622 b\"aaaaa
4623 ** Failers
4624 b\"11111
4625
4626 /(?:(?1)|B)(A(*F)|C)/
4627 ABCD
4628 CCD
4629 ** Failers
4630 CAD
4631
4632 /^(?:(?1)|B)(A(*F)|C)/
4633 CCD
4634 BCD
4635 ** Failers
4636 ABCD
4637 CAD
4638 BAD
4639
4640 /(?:(?1)|B)(A(*ACCEPT)XX|C)D/
4641 AAD
4642 ACD
4643 BAD
4644 BCD
4645 BAX
4646 ** Failers
4647 ACX
4648 ABC
4649
4650 /(?(DEFINE)(A))B(?1)C/
4651 BAC
4652
4653 /(?(DEFINE)((A)\2))B(?1)C/
4654 BAAC
4655
4656 /(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
4657 (ab(cd)ef)
4658
4659 /^(?!a(*SKIP)b)/
4660 ac
4661
4662 /^(?=a(*SKIP)b|ac)/
4663 ** Failers
4664 ac
4665
4666 /^(?=a(*THEN)b|ac)/
4667 ac
4668
4669 /^(?=a(*PRUNE)b)/
4670 ab
4671 ** Failers
4672 ac
4673
4674 /^(?=a(*ACCEPT)b)/
4675 ac
4676
4677 /^(?(?!a(*SKIP)b))/
4678 ac
4679
4680 /(?>a\Kb)/
4681 ab
4682
4683 /((?>a\Kb))/
4684 ab
4685
4686 /(a\Kb)/
4687 ab
4688
4689 /^a\Kcz|ac/
4690 ac
4691
4692 /(?>a\Kbz|ab)/
4693 ab
4694
4695 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4696 ab
4697
4698 /^([^()]|\((?1)*\))*$/
4699 a(b)c
4700 a(b(c)d)e
4701
4702 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4703 0
4704 00
4705 0000
4706
4707 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4708 0
4709 00
4710 0000
4711
4712 /--- This one does fail, as expected, in Perl. It needs the complex item at the
4713 end of the pattern. A single letter instead of (B|D) makes it not fail,
4714 which I think is a Perl bug. --- /
4715
4716 /A(*COMMIT)(B|D)/
4717 ACABX
4718
4719 /--- Check the use of names for failure ---/
4720
4721 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
4722 ** Failers
4723 AC
4724 CB
4725
4726 /--- Force no study, otherwise mark is not seen. The studied version is in
4727 test 2 because it isn't Perl-compatible. ---/
4728
4729 /(*MARK:A)(*SKIP:B)(C|X)/KSS
4730 C
4731 D
4732
4733 /^(A(*THEN:A)B|C(*THEN:B)D)/K
4734 ** Failers
4735 CB
4736
4737 /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
4738 CB
4739
4740 /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
4741 CB
4742
4743 /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
4744 that we have to have something complicated such as (B|Z) at the end because,
4745 for Perl, a simple character somehow causes an unwanted optimization to mess
4746 with the handling of backtracking verbs. ---/
4747
4748 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
4749 AAAC
4750
4751 /--- Test skipping over a non-matching mark. ---/
4752
4753 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
4754 AAAC
4755
4756 /--- Check shorthand for MARK ---/
4757
4758 /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
4759 AAAC
4760
4761 /--- Don't loop! Force no study, otherwise mark is not seen. ---/
4762
4763 /(*:A)A+(*SKIP:A)(B|Z)/KSS
4764 AAAC
4765
4766 /--- This should succeed, as a non-existent skip name disables the skip ---/
4767
4768 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
4769 AAAC
4770
4771 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
4772 AAAC
4773
4774 /--- COMMIT at the start of a pattern should act like an anchor. Again,
4775 however, we need the complication for Perl. ---/
4776
4777 /(*COMMIT)(A|P)(B|P)(C|P)/
4778 ABCDEFG
4779 ** Failers
4780 DEFGABC
4781
4782 /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
4783
4784 /(\w+)(?>b(*COMMIT))\w{2}/
4785 abbb
4786
4787 /(\w+)b(*COMMIT)\w{2}/
4788 abbb
4789
4790 /--- Check opening parens in comment when seeking forward reference. ---/
4791
4792 /(?&t)(?#()(?(DEFINE)(?<t>a))/
4793 bac
4794
4795 /--- COMMIT should override THEN ---/
4796
4797 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4798 yes
4799
4800 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4801 yes
4802
4803 /b?(*SKIP)c/
4804 bc
4805 abc
4806
4807 /(*SKIP)bc/
4808 a
4809
4810 /(*SKIP)b/
4811 a
4812
4813 /(?P<abn>(?P=abn)xxx|)+/
4814 xxx
4815
4816 /(?i:([^b]))(?1)/
4817 aa
4818 aA
4819 ** Failers
4820 ab
4821 aB
4822 Ba
4823 ba
4824
4825 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4826 aaaaaaX
4827 ** Failers
4828 aaaaaa
4829
4830 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
4831 aaaaaaX
4832 aaaaaa
4833
4834 /^(a)*+(\w)/
4835 aaaaX
4836 YZ
4837 ** Failers
4838 aaaa
4839
4840 /^(?:a)*+(\w)/
4841 aaaaX
4842 YZ
4843 ** Failers
4844 aaaa
4845
4846 /^(a)++(\w)/
4847 aaaaX
4848 ** Failers
4849 aaaa
4850 YZ
4851
4852 /^(?:a)++(\w)/
4853 aaaaX
4854 ** Failers
4855 aaaa
4856 YZ
4857
4858 /^(a)?+(\w)/
4859 aaaaX
4860 YZ
4861
4862 /^(?:a)?+(\w)/
4863 aaaaX
4864 YZ
4865
4866 /^(a){2,}+(\w)/
4867 aaaaX
4868 ** Failers
4869 aaa
4870 YZ
4871
4872 /^(?:a){2,}+(\w)/
4873 aaaaX
4874 ** Failers
4875 aaa
4876 YZ
4877
4878 /(a|)*(?1)b/
4879 b
4880 ab
4881 aab
4882
4883 /(a)++(?1)b/
4884 ** Failers
4885 ab
4886 aab
4887
4888 /(a)*+(?1)b/
4889 ** Failers
4890 ab
4891 aab
4892
4893 /(?1)(?:(b)){0}/
4894 b
4895
4896 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4897 foo(bar(baz)+baz(bop))
4898
4899 /(A (A|B(*ACCEPT)|C) D)(E)/x
4900 AB
4901
4902 /\A.*?(?:a|b(*THEN)c)/
4903 ba
4904
4905 /\A.*?(?:a|bc)/
4906 ba
4907
4908 /\A.*?(a|b(*THEN)c)/
4909 ba
4910
4911 /\A.*?(a|bc)/
4912 ba
4913
4914 /\A.*?(?:a|b(*THEN)c)++/
4915 ba
4916
4917 /\A.*?(?:a|bc)++/
4918 ba
4919
4920 /\A.*?(a|b(*THEN)c)++/
4921 ba
4922
4923 /\A.*?(a|bc)++/
4924 ba
4925
4926 /\A.*?(?:a|b(*THEN)c|d)/
4927 ba
4928
4929 /\A.*?(?:a|bc|d)/
4930 ba
4931
4932 /(?:(b))++/
4933 beetle
4934
4935 /(?(?=(a(*ACCEPT)z))a)/
4936 a
4937
4938 /^(a)(?1)+ab/
4939 aaaab
4940
4941 /^(a)(?1)++ab/
4942 aaaab
4943
4944 /^(?=a(*:M))aZ/K
4945 aZbc
4946
4947 /^(?!(*:M)b)aZ/K
4948 aZbc
4949
4950 /(?(DEFINE)(a))?b(?1)/
4951 backgammon
4952
4953 /^\N+/
4954 abc\ndef
4955
4956 /^\N{1,}/
4957 abc\ndef
4958
4959 /(?(R)a+|(?R)b)/
4960 aaaabcde
4961
4962 /(?(R)a+|((?R))b)/
4963 aaaabcde
4964
4965 /((?(R)a+|(?1)b))/
4966 aaaabcde
4967
4968 /((?(R1)a+|(?1)b))/
4969 aaaabcde
4970
4971 /a(*:any
4972 name)/K
4973 abc
4974
4975 /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
4976 a
4977 ba
4978 bba
4979
4980 /--- Checking revised (*THEN) handling ---/
4981
4982 /--- Capture ---/
4983
4984 /^.*? (a(*THEN)b) c/x
4985 aabc
4986
4987 /^.*? (a(*THEN)b|(*F)) c/x
4988 aabc
4989
4990 /^.*? ( (a(*THEN)b) | (*F) ) c/x
4991 aabc
4992
4993 /^.*? ( (a(*THEN)b) ) c/x
4994 aabc
4995
4996 /--- Non-capture ---/
4997
4998 /^.*? (?:a(*THEN)b) c/x
4999 aabc
5000
5001 /^.*? (?:a(*THEN)b|(*F)) c/x
5002 aabc
5003
5004 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
5005 aabc
5006
5007 /^.*? (?: (?:a(*THEN)b) ) c/x
5008 aabc
5009
5010 /--- Atomic ---/
5011
5012 /^.*? (?>a(*THEN)b) c/x
5013 aabc
5014
5015 /^.*? (?>a(*THEN)b|(*F)) c/x
5016 aabc
5017
5018 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
5019 aabc
5020
5021 /^.*? (?> (?>a(*THEN)b) ) c/x
5022 aabc
5023
5024 /--- Possessive capture ---/
5025
5026 /^.*? (a(*THEN)b)++ c/x
5027 aabc
5028
5029 /^.*? (a(*THEN)b|(*F))++ c/x
5030 aabc
5031
5032 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
5033 aabc
5034
5035 /^.*? ( (a(*THEN)b)++ )++ c/x
5036 aabc
5037
5038 /--- Possessive non-capture ---/
5039
5040 /^.*? (?:a(*THEN)b)++ c/x
5041 aabc
5042
5043 /^.*? (?:a(*THEN)b|(*F))++ c/x
5044 aabc
5045
5046 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
5047 aabc
5048
5049 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
5050 aabc
5051
5052 /--- Condition assertion ---/
5053
5054 /^(?(?=a(*THEN)b)ab|ac)/
5055 ac
5056
5057 /--- Condition ---/
5058
5059 /^.*?(?(?=a)a|b(*THEN)c)/
5060 ba
5061
5062 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5063 ba
5064
5065 /^.*?(?(?=a)a(*THEN)b|c)/
5066 ac
5067
5068 /--- Assertion ---/
5069
5070 /^.*(?=a(*THEN)b)/
5071 aabc
5072
5073 /------------------------------/
5074
5075 /(?>a(*:m))/imsxSK
5076 a
5077
5078 /(?>(a)(*:m))/imsxSK
5079 a
5080
5081 /(?<=a(*ACCEPT)b)c/
5082 xacd
5083
5084 /(?<=(a(*ACCEPT)b))c/
5085 xacd
5086
5087 /(?<=(a(*COMMIT)b))c/
5088 xabcd
5089 ** Failers
5090 xacd
5091
5092 /(?<!a(*FAIL)b)c/
5093 xcd
5094 acd
5095
5096 /(?<=a(*:N)b)c/K
5097 xabcd
5098
5099 /(?<=a(*PRUNE)b)c/
5100 xabcd
5101
5102 /(?<=a(*SKIP)b)c/
5103 xabcd
5104
5105 /(?<=a(*THEN)b)c/
5106 xabcd
5107
5108 /(a)(?2){2}(.)/
5109 abcd
5110
5111 /(*MARK:A)(*PRUNE:B)(C|X)/KS
5112 C
5113 D
5114
5115 /(*MARK:A)(*PRUNE:B)(C|X)/KSS
5116 C
5117 D
5118
5119 /(*MARK:A)(*THEN:B)(C|X)/KS
5120 C
5121 D
5122
5123 /(*MARK:A)(*THEN:B)(C|X)/KSY
5124 C
5125 D
5126
5127 /(*MARK:A)(*THEN:B)(C|X)/KSS
5128 C
5129 D
5130
5131 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
5132
5133 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
5134 AAAC
5135
5136 /--- Same --/
5137
5138 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
5139 AAAC
5140
5141 /A(*:A)A+(*SKIP)(B|Z) | AC/xK
5142 AAAC
5143
5144 /--- This should fail, as a null name is the same as no name ---/
5145
5146 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
5147 AAAC
5148
5149 /--- A check on what happens after hitting a mark and them bumping along to
5150 something that does not even start. Perl reports tags after the failures here,
5151 though it does not when the individual letters are made into something
5152 more complicated. ---/
5153
5154 /A(*:A)B|XX(*:B)Y/K
5155 AABC
5156 XXYZ
5157 ** Failers
5158 XAQQ
5159 XAQQXZZ
5160 AXQQQ
5161 AXXQQQ
5162
5163 /^(A(*THEN:A)B|C(*THEN:B)D)/K
5164 AB
5165 CD
5166 ** Failers
5167 AC
5168 CB
5169
5170 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
5171 AB
5172 CD
5173 ** Failers
5174 AC
5175 CB
5176
5177 /--- An empty name does not pass back an empty string. It is the same as if no
5178 name were given. ---/
5179
5180 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
5181 AB
5182 CD
5183
5184 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
5185
5186 /A(*PRUNE:A)B/K
5187 ACAB
5188
5189 /--- Mark names can be duplicated ---/
5190
5191 /A(*:A)B|X(*:A)Y/K
5192 AABC
5193 XXYZ
5194
5195 /b(*:m)f|a(*:n)w/K
5196 aw
5197 ** Failers
5198 abc
5199
5200 /b(*:m)f|aw/K
5201 abaw
5202 ** Failers
5203 abc
5204 abax
5205
5206 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
5207 AAAC
5208
5209 /a(*PRUNE:X)bc|qq/KY
5210 ** Failers
5211 axy
5212
5213 /a(*THEN:X)bc|qq/KY
5214 ** Failers
5215 axy
5216
5217 /(?=a(*MARK:A)b)..x/K
5218 abxy
5219 ** Failers
5220 abpq
5221
5222 /(?=a(*MARK:A)b)..(*:Y)x/K
5223 abxy
5224 ** Failers
5225 abpq
5226
5227 /(?=a(*PRUNE:A)b)..x/K
5228 abxy
5229 ** Failers
5230 abpq
5231
5232 /(?=a(*PRUNE:A)b)..(*:Y)x/K
5233 abxy
5234 ** Failers
5235 abpq
5236
5237 /(?=a(*THEN:A)b)..x/K
5238 abxy
5239 ** Failers
5240 abpq
5241
5242 /(?=a(*THEN:A)b)..(*:Y)x/K
5243 abxy
5244 ** Failers
5245 abpq
5246
5247 /(another)?(\1?)test/
5248 hello world test
5249
5250 /(another)?(\1+)test/
5251 hello world test
5252
5253 /(a(*COMMIT)b){0}a(?1)|aac/
5254 aac
5255
5256 /(?!a(*COMMIT)b)ac|cd/
5257 ac
5258
5259 /((?:a?)*)*c/
5260 aac
5261
5262 /((?>a?)*)*c/
5263 aac
5264
5265 /-- End of testinput1 --/

Properties

Name Value
svn:keywords "Author Date Id Revision Url"

  ViewVC Help
Powered by ViewVC 1.1.5