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 --/
720