1: /-- This set of tests checks UTF-8 support with the DFA matching functionality
2: of pcre_dfa_exec(), excluding Unicode property support. The -dfa flag must
3: be used with pcretest when running it. --/
4:
5: < forbid W
6:
7: /\x{100}ab/8
8: \x{100}ab
9:
10: /a\x{100}*b/8
11: ab
12: a\x{100}b
13: a\x{100}\x{100}b
14:
15: /a\x{100}+b/8
16: a\x{100}b
17: a\x{100}\x{100}b
18: *** Failers
19: ab
20:
21: /\bX/8
22: Xoanon
23: +Xoanon
24: \x{300}Xoanon
25: *** Failers
26: YXoanon
27:
28: /\BX/8
29: YXoanon
30: *** Failers
31: Xoanon
32: +Xoanon
33: \x{300}Xoanon
34:
35: /X\b/8
36: X+oanon
37: ZX\x{300}oanon
38: FAX
39: *** Failers
40: Xoanon
41:
42: /X\B/8
43: Xoanon
44: *** Failers
45: X+oanon
46: ZX\x{300}oanon
47: FAX
48:
49: /[^a]/8
50: abcd
51: a\x{100}
52:
53: /^[abc\x{123}\x{400}-\x{402}]{2,3}\d/8
54: ab99
55: \x{123}\x{123}45
56: \x{400}\x{401}\x{402}6
57: *** Failers
58: d99
59: \x{123}\x{122}4
60: \x{400}\x{403}6
61: \x{400}\x{401}\x{402}\x{402}6
62:
63: /a.b/8
64: acb
65: a\x7fb
66: a\x{100}b
67: *** Failers
68: a\nb
69:
70: /a(.{3})b/8
71: a\x{4000}xyb
72: a\x{4000}\x7fyb
73: a\x{4000}\x{100}yb
74: *** Failers
75: a\x{4000}b
76: ac\ncb
77:
78: /a(.*?)(.)/
79: a\xc0\x88b
80:
81: /a(.*?)(.)/8
82: a\x{100}b
83:
84: /a(.*)(.)/
85: a\xc0\x88b
86:
87: /a(.*)(.)/8
88: a\x{100}b
89:
90: /a(.)(.)/
91: a\xc0\x92bcd
92:
93: /a(.)(.)/8
94: a\x{240}bcd
95:
96: /a(.?)(.)/
97: a\xc0\x92bcd
98:
99: /a(.?)(.)/8
100: a\x{240}bcd
101:
102: /a(.??)(.)/
103: a\xc0\x92bcd
104:
105: /a(.??)(.)/8
106: a\x{240}bcd
107:
108: /a(.{3})b/8
109: a\x{1234}xyb
110: a\x{1234}\x{4321}yb
111: a\x{1234}\x{4321}\x{3412}b
112: *** Failers
113: a\x{1234}b
114: ac\ncb
115:
116: /a(.{3,})b/8
117: a\x{1234}xyb
118: a\x{1234}\x{4321}yb
119: a\x{1234}\x{4321}\x{3412}b
120: axxxxbcdefghijb
121: a\x{1234}\x{4321}\x{3412}\x{3421}b
122: *** Failers
123: a\x{1234}b
124:
125: /a(.{3,}?)b/8
126: a\x{1234}xyb
127: a\x{1234}\x{4321}yb
128: a\x{1234}\x{4321}\x{3412}b
129: axxxxbcdefghijb
130: a\x{1234}\x{4321}\x{3412}\x{3421}b
131: *** Failers
132: a\x{1234}b
133:
134: /a(.{3,5})b/8
135: a\x{1234}xyb
136: a\x{1234}\x{4321}yb
137: a\x{1234}\x{4321}\x{3412}b
138: axxxxbcdefghijb
139: a\x{1234}\x{4321}\x{3412}\x{3421}b
140: axbxxbcdefghijb
141: axxxxxbcdefghijb
142: *** Failers
143: a\x{1234}b
144: axxxxxxbcdefghijb
145:
146: /a(.{3,5}?)b/8
147: a\x{1234}xyb
148: a\x{1234}\x{4321}yb
149: a\x{1234}\x{4321}\x{3412}b
150: axxxxbcdefghijb
151: a\x{1234}\x{4321}\x{3412}\x{3421}b
152: axbxxbcdefghijb
153: axxxxxbcdefghijb
154: *** Failers
155: a\x{1234}b
156: axxxxxxbcdefghijb
157:
158: /^[a\x{c0}]/8
159: *** Failers
160: \x{100}
161:
162: /(?<=aXb)cd/8
163: aXbcd
164:
165: /(?<=a\x{100}b)cd/8
166: a\x{100}bcd
167:
168: /(?<=a\x{100000}b)cd/8
169: a\x{100000}bcd
170:
171: /(?:\x{100}){3}b/8
172: \x{100}\x{100}\x{100}b
173: *** Failers
174: \x{100}\x{100}b
175:
176: /\x{ab}/8
177: \x{ab}
178: \xc2\xab
179: *** Failers
180: \x00{ab}
181:
182: /(?<=(.))X/8
183: WXYZ
184: \x{256}XYZ
185: *** Failers
186: XYZ
187:
188: /[^a]+/8g
189: bcd
190: \x{100}aY\x{256}Z
191:
192: /^[^a]{2}/8
193: \x{100}bc
194:
195: /^[^a]{2,}/8
196: \x{100}bcAa
197:
198: /^[^a]{2,}?/8
199: \x{100}bca
200:
201: /[^a]+/8ig
202: bcd
203: \x{100}aY\x{256}Z
204:
205: /^[^a]{2}/8i
206: \x{100}bc
207:
208: /^[^a]{2,}/8i
209: \x{100}bcAa
210:
211: /^[^a]{2,}?/8i
212: \x{100}bca
213:
214: /\x{100}{0,0}/8
215: abcd
216:
217: /\x{100}?/8
218: abcd
219: \x{100}\x{100}
220:
221: /\x{100}{0,3}/8
222: \x{100}\x{100}
223: \x{100}\x{100}\x{100}\x{100}
224:
225: /\x{100}*/8
226: abce
227: \x{100}\x{100}\x{100}\x{100}
228:
229: /\x{100}{1,1}/8
230: abcd\x{100}\x{100}\x{100}\x{100}
231:
232: /\x{100}{1,3}/8
233: abcd\x{100}\x{100}\x{100}\x{100}
234:
235: /\x{100}+/8
236: abcd\x{100}\x{100}\x{100}\x{100}
237:
238: /\x{100}{3}/8
239: abcd\x{100}\x{100}\x{100}XX
240:
241: /\x{100}{3,5}/8
242: abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
243:
244: /\x{100}{3,}/8O
245: abcd\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}XX
246:
247: /(?<=a\x{100}{2}b)X/8
248: Xyyya\x{100}\x{100}bXzzz
249:
250: /\D*/8O
251: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
252:
253: /\D*/8O
254: \x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}\x{100}
255:
256: /\D/8
257: 1X2
258: 1\x{100}2
259:
260: />\S/8
261: > >X Y
262: > >\x{100} Y
263:
264: /\d/8
265: \x{100}3
266:
267: /\s/8
268: \x{100} X
269:
270: /\D+/8
271: 12abcd34
272: *** Failers
273: 1234
274:
275: /\D{2,3}/8
276: 12abcd34
277: 12ab34
278: *** Failers
279: 1234
280: 12a34
281:
282: /\D{2,3}?/8
283: 12abcd34
284: 12ab34
285: *** Failers
286: 1234
287: 12a34
288:
289: /\d+/8
290: 12abcd34
291: *** Failers
292:
293: /\d{2,3}/8
294: 12abcd34
295: 1234abcd
296: *** Failers
297: 1.4
298:
299: /\d{2,3}?/8
300: 12abcd34
301: 1234abcd
302: *** Failers
303: 1.4
304:
305: /\S+/8
306: 12abcd34
307: *** Failers
308: \ \
309:
310: /\S{2,3}/8
311: 12abcd34
312: 1234abcd
313: *** Failers
314: \ \
315:
316: /\S{2,3}?/8
317: 12abcd34
318: 1234abcd
319: *** Failers
320: \ \
321:
322: />\s+</8
323: 12> <34
324: *** Failers
325:
326: />\s{2,3}</8
327: ab> <cd
328: ab> <ce
329: *** Failers
330: ab> <cd
331:
332: />\s{2,3}?</8
333: ab> <cd
334: ab> <ce
335: *** Failers
336: ab> <cd
337:
338: /\w+/8
339: 12 34
340: *** Failers
341: +++=*!
342:
343: /\w{2,3}/8
344: ab cd
345: abcd ce
346: *** Failers
347: a.b.c
348:
349: /\w{2,3}?/8
350: ab cd
351: abcd ce
352: *** Failers
353: a.b.c
354:
355: /\W+/8
356: 12====34
357: *** Failers
358: abcd
359:
360: /\W{2,3}/8
361: ab====cd
362: ab==cd
363: *** Failers
364: a.b.c
365:
366: /\W{2,3}?/8
367: ab====cd
368: ab==cd
369: *** Failers
370: a.b.c
371:
372: /[\x{100}]/8
373: \x{100}
374: Z\x{100}
375: \x{100}Z
376: *** Failers
377:
378: /[Z\x{100}]/8
379: Z\x{100}
380: \x{100}
381: \x{100}Z
382: *** Failers
383:
384: /[\x{100}\x{200}]/8
385: ab\x{100}cd
386: ab\x{200}cd
387: *** Failers
388:
389: /[\x{100}-\x{200}]/8
390: ab\x{100}cd
391: ab\x{200}cd
392: ab\x{111}cd
393: *** Failers
394:
395: /[z-\x{200}]/8
396: ab\x{100}cd
397: ab\x{200}cd
398: ab\x{111}cd
399: abzcd
400: ab|cd
401: *** Failers
402:
403: /[Q\x{100}\x{200}]/8
404: ab\x{100}cd
405: ab\x{200}cd
406: Q?
407: *** Failers
408:
409: /[Q\x{100}-\x{200}]/8
410: ab\x{100}cd
411: ab\x{200}cd
412: ab\x{111}cd
413: Q?
414: *** Failers
415:
416: /[Qz-\x{200}]/8
417: ab\x{100}cd
418: ab\x{200}cd
419: ab\x{111}cd
420: abzcd
421: ab|cd
422: Q?
423: *** Failers
424:
425: /[\x{100}\x{200}]{1,3}/8
426: ab\x{100}cd
427: ab\x{200}cd
428: ab\x{200}\x{100}\x{200}\x{100}cd
429: *** Failers
430:
431: /[\x{100}\x{200}]{1,3}?/8
432: ab\x{100}cd
433: ab\x{200}cd
434: ab\x{200}\x{100}\x{200}\x{100}cd
435: *** Failers
436:
437: /[Q\x{100}\x{200}]{1,3}/8
438: ab\x{100}cd
439: ab\x{200}cd
440: ab\x{200}\x{100}\x{200}\x{100}cd
441: *** Failers
442:
443: /[Q\x{100}\x{200}]{1,3}?/8
444: ab\x{100}cd
445: ab\x{200}cd
446: ab\x{200}\x{100}\x{200}\x{100}cd
447: *** Failers
448:
449: /(?<=[\x{100}\x{200}])X/8
450: abc\x{200}X
451: abc\x{100}X
452: *** Failers
453: X
454:
455: /(?<=[Q\x{100}\x{200}])X/8
456: abc\x{200}X
457: abc\x{100}X
458: abQX
459: *** Failers
460: X
461:
462: /(?<=[\x{100}\x{200}]{3})X/8
463: abc\x{100}\x{200}\x{100}X
464: *** Failers
465: abc\x{200}X
466: X
467:
468: /[^\x{100}\x{200}]X/8
469: AX
470: \x{150}X
471: \x{500}X
472: *** Failers
473: \x{100}X
474: \x{200}X
475:
476: /[^Q\x{100}\x{200}]X/8
477: AX
478: \x{150}X
479: \x{500}X
480: *** Failers
481: \x{100}X
482: \x{200}X
483: QX
484:
485: /[^\x{100}-\x{200}]X/8
486: AX
487: \x{500}X
488: *** Failers
489: \x{100}X
490: \x{150}X
491: \x{200}X
492:
493: /[z-\x{100}]/8i
494: z
495: Z
496: \x{100}
497: *** Failers
498: \x{102}
499: y
500:
501: /[\xFF]/
502: >\xff<
503:
504: /[\xff]/8
505: >\x{ff}<
506:
507: /[^\xFF]/
508: XYZ
509:
510: /[^\xff]/8
511: XYZ
512: \x{123}
513:
514: /^[ac]*b/8
515: xb
516:
517: /^[ac\x{100}]*b/8
518: xb
519:
520: /^[^x]*b/8i
521: xb
522:
523: /^[^x]*b/8
524: xb
525:
526: /^\d*b/8
527: xb
528:
529: /(|a)/g8
530: catac
531: a\x{256}a
532:
533: /^\x{85}$/8i
534: \x{85}
535:
536: /^abc./mgx8<any>
537: abc1 \x0aabc2 \x0babc3xx \x0cabc4 \x0dabc5xx \x0d\x0aabc6 \x{0085}abc7 \x{2028}abc8 \x{2029}abc9 JUNK
538:
539: /abc.$/mgx8<any>
540: abc1\x0a abc2\x0b abc3\x0c abc4\x0d abc5\x0d\x0a abc6\x{0085} abc7\x{2028} abc8\x{2029} abc9
541:
542: /^a\Rb/8<bsr_unicode>
543: a\nb
544: a\rb
545: a\r\nb
546: a\x0bb
547: a\x0cb
548: a\x{85}b
549: a\x{2028}b
550: a\x{2029}b
551: ** Failers
552: a\n\rb
553:
554: /^a\R*b/8<bsr_unicode>
555: ab
556: a\nb
557: a\rb
558: a\r\nb
559: a\x0bb
560: a\x0c\x{2028}\x{2029}b
561: a\x{85}b
562: a\n\rb
563: a\n\r\x{85}\x0cb
564:
565: /^a\R+b/8<bsr_unicode>
566: a\nb
567: a\rb
568: a\r\nb
569: a\x0bb
570: a\x0c\x{2028}\x{2029}b
571: a\x{85}b
572: a\n\rb
573: a\n\r\x{85}\x0cb
574: ** Failers
575: ab
576:
577: /^a\R{1,3}b/8<bsr_unicode>
578: a\nb
579: a\n\rb
580: a\n\r\x{85}b
581: a\r\n\r\nb
582: a\r\n\r\n\r\nb
583: a\n\r\n\rb
584: a\n\n\r\nb
585: ** Failers
586: a\n\n\n\rb
587: a\r
588:
589: /\h+\V?\v{3,4}/8O
590: \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
591:
592: /\V?\v{3,4}/8O
593: \x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
594:
595: /\h+\V?\v{3,4}/8O
596: >\x09\x20\x{a0}X\x0a\x0a\x0a<
597:
598: /\V?\v{3,4}/8O
599: >\x09\x20\x{a0}X\x0a\x0a\x0a<
600:
601: /\H\h\V\v/8
602: X X\x0a
603: X\x09X\x0b
604: ** Failers
605: \x{a0} X\x0a
606:
607: /\H*\h+\V?\v{3,4}/8O
608: \x09\x20\x{a0}X\x0a\x0b\x0c\x0d\x0a
609: \x09\x20\x{a0}\x0a\x0b\x0c\x0d\x0a
610: \x09\x20\x{a0}\x0a\x0b\x0c
611: ** Failers
612: \x09\x20\x{a0}\x0a\x0b
613:
614: /\H\h\V\v/8
615: \x{3001}\x{3000}\x{2030}\x{2028}
616: X\x{180e}X\x{85}
617: ** Failers
618: \x{2009} X\x0a
619:
620: /\H*\h+\V?\v{3,4}/8O
621: \x{1680}\x{180e}\x{2007}X\x{2028}\x{2029}\x0c\x0d\x0a
622: \x09\x{205f}\x{a0}\x0a\x{2029}\x0c\x{2028}\x0a
623: \x09\x20\x{202f}\x0a\x0b\x0c
624: ** Failers
625: \x09\x{200a}\x{a0}\x{2028}\x0b
626:
627: /a\Rb/I8<bsr_anycrlf>
628: a\rb
629: a\nb
630: a\r\nb
631: ** Failers
632: a\x{85}b
633: a\x0bb
634:
635: /a\Rb/I8<bsr_unicode>
636: a\rb
637: a\nb
638: a\r\nb
639: a\x{85}b
640: a\x0bb
641: ** Failers
642: a\x{85}b\<bsr_anycrlf>
643: a\x0bb\<bsr_anycrlf>
644:
645: /a\R?b/I8<bsr_anycrlf>
646: a\rb
647: a\nb
648: a\r\nb
649: ** Failers
650: a\x{85}b
651: a\x0bb
652:
653: /a\R?b/I8<bsr_unicode>
654: a\rb
655: a\nb
656: a\r\nb
657: a\x{85}b
658: a\x0bb
659: ** Failers
660: a\x{85}b\<bsr_anycrlf>
661: a\x0bb\<bsr_anycrlf>
662:
663: /X/8f<any>
664: A\x{1ec5}ABCXYZ
665:
666: /abcd*/8
667: xxxxabcd\P
668: xxxxabcd\P\P
669:
670: /abcd*/i8
671: xxxxabcd\P
672: xxxxabcd\P\P
673: XXXXABCD\P
674: XXXXABCD\P\P
675:
676: /abc\d*/8
677: xxxxabc1\P
678: xxxxabc1\P\P
679:
680: /abc[de]*/8
681: xxxxabcde\P
682: xxxxabcde\P\P
683:
684: /\bthe cat\b/8
685: the cat\P
686: the cat\P\P
687:
688: /ab\Cde/8
689: abXde
690:
691: /(?<=ab\Cde)X/8
692:
693: /./8<CRLF>
694: \r\P
695: \r\P\P
696:
697: /.{2,3}/8<CRLF>
698: \r\P
699: \r\P\P
700: \r\r\P
701: \r\r\P\P
702: \r\r\r\P
703: \r\r\r\P\P
704:
705: /.{2,3}?/8<CRLF>
706: \r\P
707: \r\P\P
708: \r\r\P
709: \r\r\P\P
710: \r\r\r\P
711: \r\r\r\P\P
712:
713: /[^\x{100}]/8
714: \x{100}\x{101}X
715:
716: /[^\x{100}]+/8
717: \x{100}\x{101}X
718:
719: /-- End of testinput9 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>