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

Contents of /code/trunk/testdata/testinput1

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1305 - (show annotations)
Mon Apr 1 14:50:45 2013 UTC (6 years, 4 months ago) by ph10
File size: 97484 byte(s)
Fix open parens in MAKE/SKIP/PRUNE/THEN name bug.
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|ac)/
4660 ** Failers
4661 ac
4662
4663 /^(?=a(*PRUNE)b)/
4664 ab
4665 ** Failers
4666 ac
4667
4668 /^(?=a(*ACCEPT)b)/
4669 ac
4670
4671 /(?>a\Kb)/
4672 ab
4673
4674 /((?>a\Kb))/
4675 ab
4676
4677 /(a\Kb)/
4678 ab
4679
4680 /^a\Kcz|ac/
4681 ac
4682
4683 /(?>a\Kbz|ab)/
4684 ab
4685
4686 /^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4687 ab
4688
4689 /^([^()]|\((?1)*\))*$/
4690 a(b)c
4691 a(b(c)d)e
4692
4693 /(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4694 0
4695 00
4696 0000
4697
4698 /(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4699 0
4700 00
4701 0000
4702
4703 /--- This one does fail, as expected, in Perl. It needs the complex item at the
4704 end of the pattern. A single letter instead of (B|D) makes it not fail,
4705 which I think is a Perl bug. --- /
4706
4707 /A(*COMMIT)(B|D)/
4708 ACABX
4709
4710 /--- Check the use of names for failure ---/
4711
4712 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
4713 ** Failers
4714 AC
4715 CB
4716
4717 /--- Force no study, otherwise mark is not seen. The studied version is in
4718 test 2 because it isn't Perl-compatible. ---/
4719
4720 /(*MARK:A)(*SKIP:B)(C|X)/KSS
4721 C
4722 D
4723
4724 /^(A(*THEN:A)B|C(*THEN:B)D)/K
4725 ** Failers
4726 CB
4727
4728 /^(?:A(*THEN:A)B|C(*THEN:B)D)/K
4729 CB
4730
4731 /^(?>A(*THEN:A)B|C(*THEN:B)D)/K
4732 CB
4733
4734 /--- This should succeed, as the skip causes bump to offset 1 (the mark). Note
4735 that we have to have something complicated such as (B|Z) at the end because,
4736 for Perl, a simple character somehow causes an unwanted optimization to mess
4737 with the handling of backtracking verbs. ---/
4738
4739 /A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK
4740 AAAC
4741
4742 /--- Test skipping over a non-matching mark. ---/
4743
4744 /A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK
4745 AAAC
4746
4747 /--- Check shorthand for MARK ---/
4748
4749 /A(*:A)A+(*SKIP:A)(B|Z) | AC/xK
4750 AAAC
4751
4752 /--- Don't loop! Force no study, otherwise mark is not seen. ---/
4753
4754 /(*:A)A+(*SKIP:A)(B|Z)/KSS
4755 AAAC
4756
4757 /--- This should succeed, as a non-existent skip name disables the skip ---/
4758
4759 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
4760 AAAC
4761
4762 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK
4763 AAAC
4764
4765 /--- COMMIT at the start of a pattern should act like an anchor. Again,
4766 however, we need the complication for Perl. ---/
4767
4768 /(*COMMIT)(A|P)(B|P)(C|P)/
4769 ABCDEFG
4770 ** Failers
4771 DEFGABC
4772
4773 /--- COMMIT inside an atomic group can't stop backtracking over the group. ---/
4774
4775 /(\w+)(?>b(*COMMIT))\w{2}/
4776 abbb
4777
4778 /(\w+)b(*COMMIT)\w{2}/
4779 abbb
4780
4781 /--- Check opening parens in comment when seeking forward reference. ---/
4782
4783 /(?&t)(?#()(?(DEFINE)(?<t>a))/
4784 bac
4785
4786 /--- COMMIT should override THEN ---/
4787
4788 /(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4789 yes
4790
4791 /(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4792 yes
4793
4794 /b?(*SKIP)c/
4795 bc
4796 abc
4797
4798 /(*SKIP)bc/
4799 a
4800
4801 /(*SKIP)b/
4802 a
4803
4804 /(?P<abn>(?P=abn)xxx|)+/
4805 xxx
4806
4807 /(?i:([^b]))(?1)/
4808 aa
4809 aA
4810 ** Failers
4811 ab
4812 aB
4813 Ba
4814 ba
4815
4816 /^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4817 aaaaaaX
4818 ** Failers
4819 aaaaaa
4820
4821 /^(?&t)*(?(DEFINE)(?<t>a))\w$/
4822 aaaaaaX
4823 aaaaaa
4824
4825 /^(a)*+(\w)/
4826 aaaaX
4827 YZ
4828 ** Failers
4829 aaaa
4830
4831 /^(?:a)*+(\w)/
4832 aaaaX
4833 YZ
4834 ** Failers
4835 aaaa
4836
4837 /^(a)++(\w)/
4838 aaaaX
4839 ** Failers
4840 aaaa
4841 YZ
4842
4843 /^(?:a)++(\w)/
4844 aaaaX
4845 ** Failers
4846 aaaa
4847 YZ
4848
4849 /^(a)?+(\w)/
4850 aaaaX
4851 YZ
4852
4853 /^(?:a)?+(\w)/
4854 aaaaX
4855 YZ
4856
4857 /^(a){2,}+(\w)/
4858 aaaaX
4859 ** Failers
4860 aaa
4861 YZ
4862
4863 /^(?:a){2,}+(\w)/
4864 aaaaX
4865 ** Failers
4866 aaa
4867 YZ
4868
4869 /(a|)*(?1)b/
4870 b
4871 ab
4872 aab
4873
4874 /(a)++(?1)b/
4875 ** Failers
4876 ab
4877 aab
4878
4879 /(a)*+(?1)b/
4880 ** Failers
4881 ab
4882 aab
4883
4884 /(?1)(?:(b)){0}/
4885 b
4886
4887 /(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4888 foo(bar(baz)+baz(bop))
4889
4890 /(A (A|B(*ACCEPT)|C) D)(E)/x
4891 AB
4892
4893 /\A.*?(a|bc)/
4894 ba
4895
4896 /\A.*?(?:a|bc)++/
4897 ba
4898
4899 /\A.*?(a|bc)++/
4900 ba
4901
4902 /\A.*?(?:a|bc|d)/
4903 ba
4904
4905 /(?:(b))++/
4906 beetle
4907
4908 /(?(?=(a(*ACCEPT)z))a)/
4909 a
4910
4911 /^(a)(?1)+ab/
4912 aaaab
4913
4914 /^(a)(?1)++ab/
4915 aaaab
4916
4917 /^(?=a(*:M))aZ/K
4918 aZbc
4919
4920 /^(?!(*:M)b)aZ/K
4921 aZbc
4922
4923 /(?(DEFINE)(a))?b(?1)/
4924 backgammon
4925
4926 /^\N+/
4927 abc\ndef
4928
4929 /^\N{1,}/
4930 abc\ndef
4931
4932 /(?(R)a+|(?R)b)/
4933 aaaabcde
4934
4935 /(?(R)a+|((?R))b)/
4936 aaaabcde
4937
4938 /((?(R)a+|(?1)b))/
4939 aaaabcde
4940
4941 /((?(R1)a+|(?1)b))/
4942 aaaabcde
4943
4944 /a(*:any
4945 name)/K
4946 abc
4947
4948 /(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
4949 a
4950 ba
4951 bba
4952
4953 /--- Checking revised (*THEN) handling ---/
4954
4955 /--- Capture ---/
4956
4957 /^.*? (a(*THEN)b) c/x
4958 aabc
4959
4960 /^.*? (a(*THEN)b|(*F)) c/x
4961 aabc
4962
4963 /^.*? ( (a(*THEN)b) | (*F) ) c/x
4964 aabc
4965
4966 /^.*? ( (a(*THEN)b) ) c/x
4967 aabc
4968
4969 /--- Non-capture ---/
4970
4971 /^.*? (?:a(*THEN)b) c/x
4972 aabc
4973
4974 /^.*? (?:a(*THEN)b|(*F)) c/x
4975 aabc
4976
4977 /^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
4978 aabc
4979
4980 /^.*? (?: (?:a(*THEN)b) ) c/x
4981 aabc
4982
4983 /--- Atomic ---/
4984
4985 /^.*? (?>a(*THEN)b) c/x
4986 aabc
4987
4988 /^.*? (?>a(*THEN)b|(*F)) c/x
4989 aabc
4990
4991 /^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
4992 aabc
4993
4994 /^.*? (?> (?>a(*THEN)b) ) c/x
4995 aabc
4996
4997 /--- Possessive capture ---/
4998
4999 /^.*? (a(*THEN)b)++ c/x
5000 aabc
5001
5002 /^.*? (a(*THEN)b|(*F))++ c/x
5003 aabc
5004
5005 /^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
5006 aabc
5007
5008 /^.*? ( (a(*THEN)b)++ )++ c/x
5009 aabc
5010
5011 /--- Possessive non-capture ---/
5012
5013 /^.*? (?:a(*THEN)b)++ c/x
5014 aabc
5015
5016 /^.*? (?:a(*THEN)b|(*F))++ c/x
5017 aabc
5018
5019 /^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
5020 aabc
5021
5022 /^.*? (?: (?:a(*THEN)b)++ )++ c/x
5023 aabc
5024
5025 /--- Condition assertion ---/
5026
5027 /^(?(?=a(*THEN)b)ab|ac)/
5028 ac
5029
5030 /--- Condition ---/
5031
5032 /^.*?(?(?=a)a|b(*THEN)c)/
5033 ba
5034
5035 /^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5036 ba
5037
5038 /^.*?(?(?=a)a(*THEN)b|c)/
5039 ac
5040
5041 /--- Assertion ---/
5042
5043 /^.*(?=a(*THEN)b)/
5044 aabc
5045
5046 /------------------------------/
5047
5048 /(?>a(*:m))/imsxSK
5049 a
5050
5051 /(?>(a)(*:m))/imsxSK
5052 a
5053
5054 /(?<=a(*ACCEPT)b)c/
5055 xacd
5056
5057 /(?<=(a(*ACCEPT)b))c/
5058 xacd
5059
5060 /(?<=(a(*COMMIT)b))c/
5061 xabcd
5062 ** Failers
5063 xacd
5064
5065 /(?<!a(*FAIL)b)c/
5066 xcd
5067 acd
5068
5069 /(?<=a(*:N)b)c/K
5070 xabcd
5071
5072 /(?<=a(*PRUNE)b)c/
5073 xabcd
5074
5075 /(?<=a(*SKIP)b)c/
5076 xabcd
5077
5078 /(?<=a(*THEN)b)c/
5079 xabcd
5080
5081 /(a)(?2){2}(.)/
5082 abcd
5083
5084 /(*MARK:A)(*PRUNE:B)(C|X)/KS
5085 C
5086 D
5087
5088 /(*MARK:A)(*PRUNE:B)(C|X)/KSS
5089 C
5090 D
5091
5092 /(*MARK:A)(*THEN:B)(C|X)/KS
5093 C
5094 D
5095
5096 /(*MARK:A)(*THEN:B)(C|X)/KSY
5097 C
5098 D
5099
5100 /(*MARK:A)(*THEN:B)(C|X)/KSS
5101 C
5102 D
5103
5104 /--- This should fail, as the skip causes a bump to offset 3 (the skip) ---/
5105
5106 /A(*MARK:A)A+(*SKIP)(B|Z) | AC/xK
5107 AAAC
5108
5109 /--- Same --/
5110
5111 /A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/xK
5112 AAAC
5113
5114 /A(*:A)A+(*SKIP)(B|Z) | AC/xK
5115 AAAC
5116
5117 /--- This should fail, as a null name is the same as no name ---/
5118
5119 /A(*MARK:A)A+(*SKIP:)(B|Z) | AC/xK
5120 AAAC
5121
5122 /--- A check on what happens after hitting a mark and them bumping along to
5123 something that does not even start. Perl reports tags after the failures here,
5124 though it does not when the individual letters are made into something
5125 more complicated. ---/
5126
5127 /A(*:A)B|XX(*:B)Y/K
5128 AABC
5129 XXYZ
5130 ** Failers
5131 XAQQ
5132 XAQQXZZ
5133 AXQQQ
5134 AXXQQQ
5135
5136 /^(A(*THEN:A)B|C(*THEN:B)D)/K
5137 AB
5138 CD
5139 ** Failers
5140 AC
5141 CB
5142
5143 /^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K
5144 AB
5145 CD
5146 ** Failers
5147 AC
5148 CB
5149
5150 /--- An empty name does not pass back an empty string. It is the same as if no
5151 name were given. ---/
5152
5153 /^(A(*PRUNE:)B|C(*PRUNE:B)D)/K
5154 AB
5155 CD
5156
5157 /--- PRUNE goes to next bumpalong; COMMIT does not. ---/
5158
5159 /A(*PRUNE:A)B/K
5160 ACAB
5161
5162 /--- Mark names can be duplicated ---/
5163
5164 /A(*:A)B|X(*:A)Y/K
5165 AABC
5166 XXYZ
5167
5168 /b(*:m)f|a(*:n)w/K
5169 aw
5170 ** Failers
5171 abc
5172
5173 /b(*:m)f|aw/K
5174 abaw
5175 ** Failers
5176 abc
5177 abax
5178
5179 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/xK
5180 AAAC
5181
5182 /a(*PRUNE:X)bc|qq/KY
5183 ** Failers
5184 axy
5185
5186 /a(*THEN:X)bc|qq/KY
5187 ** Failers
5188 axy
5189
5190 /(?=a(*MARK:A)b)..x/K
5191 abxy
5192 ** Failers
5193 abpq
5194
5195 /(?=a(*MARK:A)b)..(*:Y)x/K
5196 abxy
5197 ** Failers
5198 abpq
5199
5200 /(?=a(*PRUNE:A)b)..x/K
5201 abxy
5202 ** Failers
5203 abpq
5204
5205 /(?=a(*PRUNE:A)b)..(*:Y)x/K
5206 abxy
5207 ** Failers
5208 abpq
5209
5210 /(?=a(*THEN:A)b)..x/K
5211 abxy
5212 ** Failers
5213 abpq
5214
5215 /(?=a(*THEN:A)b)..(*:Y)x/K
5216 abxy
5217 ** Failers
5218 abpq
5219
5220 /(another)?(\1?)test/
5221 hello world test
5222
5223 /(another)?(\1+)test/
5224 hello world test
5225
5226 /(a(*COMMIT)b){0}a(?1)|aac/
5227 aac
5228
5229 /((?:a?)*)*c/
5230 aac
5231
5232 /((?>a?)*)*c/
5233 aac
5234
5235 /(?>.*?a)(?<=ba)/
5236 aba
5237
5238 /(?:.*?a)(?<=ba)/
5239 aba
5240
5241 /.*?a(*PRUNE)b/
5242 aab
5243
5244 /.*?a(*PRUNE)b/s
5245 aab
5246
5247 /^a(*PRUNE)b/s
5248 aab
5249
5250 /.*?a(*SKIP)b/
5251 aab
5252
5253 /(?>.*?a)b/s
5254 aab
5255
5256 /(?>.*?a)b/
5257 aab
5258
5259 /(?>^a)b/s
5260 aab
5261
5262 /(?>.*?)(?<=(abcd)|(wxyz))/
5263 alphabetabcd
5264 endingwxyz
5265
5266 /(?>.*)(?<=(abcd)|(wxyz))/
5267 alphabetabcd
5268 endingwxyz
5269
5270 "(?>.*)foo"
5271 abcdfooxyz
5272
5273 "(?>.*?)foo"
5274 abcdfooxyz
5275
5276 /(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
5277 ac
5278
5279 /(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
5280 ac
5281
5282 /(?<=(*SKIP)ac)a/
5283 aa
5284
5285 /A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK
5286 AAAC
5287
5288 /a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/K
5289 acacd
5290
5291 /A(*SKIP:m)x|A(*SKIP:n)x|AB/K
5292 AB
5293
5294 /((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/K
5295 acacd
5296
5297 /-- Tests that try to figure out how Perl works. My hypothesis is that the
5298 first verb that is backtracked onto is the one that acts. This seems to be
5299 the case almost all the time, but there is one exception that is perhaps a
5300 bug. --/
5301
5302 /-- This matches "aaaac"; each PRUNE advances one character until the subject
5303 no longer starts with 5 'a's. --/
5304
5305 /aaaaa(*PRUNE)b|a+c/
5306 aaaaaac
5307
5308 /-- Putting SKIP in front of PRUNE makes no difference, as it is never
5309 backtracked onto, whether or not it has a label. --/
5310
5311 /aaaaa(*SKIP)(*PRUNE)b|a+c/
5312 aaaaaac
5313
5314 /aaaaa(*SKIP:N)(*PRUNE)b|a+c/
5315 aaaaaac
5316
5317 /aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
5318 aaaaaac
5319
5320 /-- Putting THEN in front makes no difference. */
5321
5322 /aaaaa(*THEN)(*PRUNE)b|a+c/
5323 aaaaaac
5324
5325 /-- However, putting COMMIT in front of the prune changes it to "no match". I
5326 think this is inconsistent and possibly a bug. For the moment, running this
5327 test is moved out of the Perl-compatible file. --/
5328
5329 /aaaaa(*COMMIT)(*PRUNE)b|a+c/
5330
5331
5332 /---- OK, lets play the same game again using SKIP instead of PRUNE. ----/
5333
5334 /-- This matches "ac" because SKIP forces the next match to start on the
5335 sixth "a". --/
5336
5337 /aaaaa(*SKIP)b|a+c/
5338 aaaaaac
5339
5340 /-- Putting PRUNE in front makes no difference. --/
5341
5342 /aaaaa(*PRUNE)(*SKIP)b|a+c/
5343 aaaaaac
5344
5345 /-- Putting THEN in front makes no difference. --/
5346
5347 /aaaaa(*THEN)(*SKIP)b|a+c/
5348 aaaaaac
5349
5350 /-- In this case, neither does COMMIT. This still matches "ac". --/
5351
5352 /aaaaa(*COMMIT)(*SKIP)b|a+c/
5353 aaaaaac
5354
5355 /-- This gives "no match", as expected. --/
5356
5357 /aaaaa(*COMMIT)b|a+c/
5358 aaaaaac
5359
5360
5361 /------ Tests using THEN ------/
5362
5363 /-- This matches "aaaaaac", as expected. --/
5364
5365 /aaaaa(*THEN)b|a+c/
5366 aaaaaac
5367
5368 /-- Putting SKIP in front makes no difference. --/
5369
5370 /aaaaa(*SKIP)(*THEN)b|a+c/
5371 aaaaaac
5372
5373 /-- Putting PRUNE in front makes no difference. --/
5374
5375 /aaaaa(*PRUNE)(*THEN)b|a+c/
5376 aaaaaac
5377
5378 /-- Putting COMMIT in front makes no difference. --/
5379
5380 /aaaaa(*COMMIT)(*THEN)b|a+c/
5381 aaaaaac
5382
5383 /-- End of "priority" tests --/
5384
5385 /aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
5386 aaaaaa
5387
5388 /aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
5389 aaaaaa
5390
5391 /aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
5392 aaaaaa
5393
5394 /aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
5395 aaaaaa
5396
5397 /a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
5398 aaaac
5399
5400 /a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
5401 aaaac
5402
5403 /aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
5404 aaaac
5405
5406 /aaa(*MARK:A)a(*SKIP:A)b|a+c/
5407 aaaac
5408
5409 /a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/K
5410 aaaaaac
5411
5412 /.?(a|b(*THEN)c)/
5413 ba
5414
5415 /(a(*COMMIT)b)c|abd/
5416 abc
5417 abd
5418
5419 /(?=a(*COMMIT)b)abc|abd/
5420 abc
5421 abd
5422
5423 /(?>a(*COMMIT)b)c|abd/
5424 abc
5425 abd
5426
5427 /a(?=b(*COMMIT)c)[^d]|abd/
5428 abd
5429 abc
5430
5431 /a(?=bc).|abd/
5432 abd
5433 abc
5434
5435 /a(?>b(*COMMIT)c)d|abd/
5436 abceabd
5437
5438 /a(?>bc)d|abd/
5439 abceabd
5440
5441 /(?>a(*COMMIT)b)c|abd/
5442 abd
5443
5444 /(?>a(*COMMIT)c)d|abd/
5445 abd
5446
5447 /((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
5448 ac
5449
5450 /-- These tests were formerly in test 2, but changes in PCRE and Perl have
5451 made them compatible. --/
5452
5453 /^(a)?(?(1)a|b)+$/
5454 *** Failers
5455 a
5456
5457 /(?=a\Kb)ab/
5458 ab
5459
5460 /(?!a\Kb)ac/
5461 ac
5462
5463 /^abc(?<=b\Kc)d/
5464 abcd
5465
5466 /^abc(?<!b\Kq)d/
5467 abcd
5468
5469
5470 /A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/xK
5471 AAAC
5472
5473 /^((abc|abcx)(*THEN)y|abcd)/
5474 abcd
5475 *** Failers
5476 abcxy
5477
5478 /^((yes|no)(*THEN)(*F))?/
5479 yes
5480
5481 /(A (.*) C? (*THEN) | A D) (*FAIL)/x
5482 AbcdCBefgBhiBqz
5483
5484 /(A (.*) C? (*THEN) | A D) z/x
5485 AbcdCBefgBhiBqz
5486
5487 /(A (.*) C? (*THEN) | A D) \s* (*FAIL)/x
5488 AbcdCBefgBhiBqz
5489
5490 /(A (.*) C? (*THEN) | A D) \s* z/x
5491 AbcdCBefgBhiBqz
5492
5493 /(A (.*) (?:C|) (*THEN) | A D) (*FAIL)/x
5494 AbcdCBefgBhiBqz
5495
5496 /(A (.*) (?:C|) (*THEN) | A D) z/x
5497 AbcdCBefgBhiBqz
5498
5499 /(A (.*) C{0,6} (*THEN) | A D) (*FAIL)/x
5500 AbcdCBefgBhiBqz
5501
5502 /(A (.*) C{0,6} (*THEN) | A D) z/x
5503 AbcdCBefgBhiBqz
5504
5505 /(A (.*) (CE){0,6} (*THEN) | A D) (*FAIL)/x
5506 AbcdCEBefgBhiBqz
5507
5508 /(A (.*) (CE){0,6} (*THEN) | A D) z/x
5509 AbcdCEBefgBhiBqz
5510
5511 /(A (.*) (CE*){0,6} (*THEN) | A D) (*FAIL)/x
5512 AbcdCBefgBhiBqz
5513
5514 /(A (.*) (CE*){0,6} (*THEN) | A D) z/x
5515 AbcdCBefgBhiBqz
5516
5517 /(?=a(*COMMIT)b|ac)ac|ac/
5518 ac
5519
5520 /(?=a(*COMMIT)b|(ac)) ac | (a)c/x
5521 ac
5522
5523 /--------/
5524
5525 /(?(?!b(*THEN)a)bn|bnn)/
5526 bnn
5527
5528 /(?!b(*SKIP)a)bn|bnn/
5529 bnn
5530
5531 /(?(?!b(*SKIP)a)bn|bnn)/
5532 bnn
5533
5534 /(?!b(*PRUNE)a)bn|bnn/
5535 bnn
5536
5537 /(?(?!b(*PRUNE)a)bn|bnn)/
5538 bnn
5539
5540 /(?!b(*COMMIT)a)bn|bnn/
5541 bnn
5542
5543 /(?(?!b(*COMMIT)a)bn|bnn)/
5544 bnn
5545
5546 /(?=b(*SKIP)a)bn|bnn/
5547 bnn
5548
5549 /(?=b(*THEN)a)bn|bnn/
5550 bnn
5551
5552 /^(?!a(*SKIP)b)/
5553 ac
5554
5555 /^(?!a(*SKIP)b)../
5556 acd
5557
5558 /(?!a(*SKIP)b)../
5559 acd
5560
5561 /^(?(?!a(*SKIP)b))/
5562 ac
5563
5564 /^(?!a(*PRUNE)b)../
5565 acd
5566
5567 /(?!a(*PRUNE)b)../
5568 acd
5569
5570 /(?!a(*COMMIT)b)ac|cd/
5571 ac
5572
5573 /\A.*?(?:a|bc)/
5574 ba
5575
5576 /^(A(*THEN)B|C(*THEN)D)/
5577 CD
5578
5579 /(*:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5580 abc
5581
5582 /(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5583 abc
5584
5585 /(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5586 abc
5587
5588 /(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/K
5589 abc
5590
5591 /-- End of testinput1 --/

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.5