Annotation of embedaddon/pcre/testdata/testoutput13, revision 1.1.1.1
1.1 misho 1: /-- These tests for Unicode property support test PCRE's API and show some of
2: the compiled code. They are not Perl-compatible. --/
3:
4: /[\p{L}]/DZ
5: ------------------------------------------------------------------
6: Bra
7: [\p{L}]
8: Ket
9: End
10: ------------------------------------------------------------------
11: Capturing subpattern count = 0
12: No options
13: No first char
14: No need char
15:
16: /[\p{^L}]/DZ
17: ------------------------------------------------------------------
18: Bra
19: [\P{L}]
20: Ket
21: End
22: ------------------------------------------------------------------
23: Capturing subpattern count = 0
24: No options
25: No first char
26: No need char
27:
28: /[\P{L}]/DZ
29: ------------------------------------------------------------------
30: Bra
31: [\P{L}]
32: Ket
33: End
34: ------------------------------------------------------------------
35: Capturing subpattern count = 0
36: No options
37: No first char
38: No need char
39:
40: /[\P{^L}]/DZ
41: ------------------------------------------------------------------
42: Bra
43: [\p{L}]
44: Ket
45: End
46: ------------------------------------------------------------------
47: Capturing subpattern count = 0
48: No options
49: No first char
50: No need char
51:
52: /[abc\p{L}\x{0660}]/8DZ
53: ------------------------------------------------------------------
54: Bra
55: [a-c\p{L}\x{660}]
56: Ket
57: End
58: ------------------------------------------------------------------
59: Capturing subpattern count = 0
60: Options: utf8
61: No first char
62: No need char
63:
64: /[\p{Nd}]/8DZ
65: ------------------------------------------------------------------
66: Bra
67: [\p{Nd}]
68: Ket
69: End
70: ------------------------------------------------------------------
71: Capturing subpattern count = 0
72: Options: utf8
73: No first char
74: No need char
75: 1234
76: 0: 1
77:
78: /[\p{Nd}+-]+/8DZ
79: ------------------------------------------------------------------
80: Bra
81: [+\-\p{Nd}]+
82: Ket
83: End
84: ------------------------------------------------------------------
85: Capturing subpattern count = 0
86: Options: utf8
87: No first char
88: No need char
89: 1234
90: 0: 1234
91: 12-34
92: 0: 12-34
93: 12+\x{661}-34
94: 0: 12+\x{661}-34
95: ** Failers
96: No match
97: abcd
98: No match
99:
100: /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8iDZ
101: ------------------------------------------------------------------
102: Bra
103: /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
104: Ket
105: End
106: ------------------------------------------------------------------
107: Capturing subpattern count = 0
108: Options: caseless utf8
109: First char = 'A' (caseless)
110: No need char
111:
112: /A\x{391}\x{10427}\x{ff3a}\x{1fb0}/8DZ
113: ------------------------------------------------------------------
114: Bra
115: A\x{391}\x{10427}\x{ff3a}\x{1fb0}
116: Ket
117: End
118: ------------------------------------------------------------------
119: Capturing subpattern count = 0
120: Options: utf8
121: First char = 'A'
122: Need char = 176
123:
124: /AB\x{1fb0}/8DZ
125: ------------------------------------------------------------------
126: Bra
127: AB\x{1fb0}
128: Ket
129: End
130: ------------------------------------------------------------------
131: Capturing subpattern count = 0
132: Options: utf8
133: First char = 'A'
134: Need char = 176
135:
136: /AB\x{1fb0}/8DZi
137: ------------------------------------------------------------------
138: Bra
139: /i AB\x{1fb0}
140: Ket
141: End
142: ------------------------------------------------------------------
143: Capturing subpattern count = 0
144: Options: caseless utf8
145: First char = 'A' (caseless)
146: Need char = 'B' (caseless)
147:
148: /[\x{105}-\x{109}]/8iDZ
149: ------------------------------------------------------------------
150: Bra
151: [\x{104}-\x{109}]
152: Ket
153: End
154: ------------------------------------------------------------------
155: Capturing subpattern count = 0
156: Options: caseless utf8
157: No first char
158: No need char
159: \x{104}
160: 0: \x{104}
161: \x{105}
162: 0: \x{105}
163: \x{109}
164: 0: \x{109}
165: ** Failers
166: No match
167: \x{100}
168: No match
169: \x{10a}
170: No match
171:
172: /[z-\x{100}]/8iDZ
173: ------------------------------------------------------------------
174: Bra
175: [Z\x{39c}\x{178}z-\x{101}]
176: Ket
177: End
178: ------------------------------------------------------------------
179: Capturing subpattern count = 0
180: Options: caseless utf8
181: No first char
182: No need char
183: Z
184: 0: Z
185: z
186: 0: z
187: \x{39c}
188: 0: \x{39c}
189: \x{178}
190: 0: \x{178}
191: |
192: 0: |
193: \x{80}
194: 0: \x{80}
195: \x{ff}
196: 0: \x{ff}
197: \x{100}
198: 0: \x{100}
199: \x{101}
200: 0: \x{101}
201: ** Failers
202: No match
203: \x{102}
204: No match
205: Y
206: No match
207: y
208: No match
209:
210: /[z-\x{100}]/8DZi
211: ------------------------------------------------------------------
212: Bra
213: [Z\x{39c}\x{178}z-\x{101}]
214: Ket
215: End
216: ------------------------------------------------------------------
217: Capturing subpattern count = 0
218: Options: caseless utf8
219: No first char
220: No need char
221:
222: /(?:[\PPa*]*){8,}/
223:
224: /[\P{Any}]/BZ
225: ------------------------------------------------------------------
226: Bra
227: [\P{Any}]
228: Ket
229: End
230: ------------------------------------------------------------------
231:
232: /[\P{Any}\E]/BZ
233: ------------------------------------------------------------------
234: Bra
235: [\P{Any}]
236: Ket
237: End
238: ------------------------------------------------------------------
239:
240: /(\P{Yi}+\277)/
241:
242: /(\P{Yi}+\277)?/
243:
244: /(?<=\P{Yi}{3}A)X/
245:
246: /\p{Yi}+(\P{Yi}+)(?1)/
247:
248: /(\P{Yi}{2}\277)?/
249:
250: /[\P{Yi}A]/
251:
252: /[\P{Yi}\P{Yi}\P{Yi}A]/
253:
254: /[^\P{Yi}A]/
255:
256: /[^\P{Yi}\P{Yi}\P{Yi}A]/
257:
258: /(\P{Yi}*\277)*/
259:
260: /(\P{Yi}*?\277)*/
261:
262: /(\p{Yi}*+\277)*/
263:
264: /(\P{Yi}?\277)*/
265:
266: /(\P{Yi}??\277)*/
267:
268: /(\p{Yi}?+\277)*/
269:
270: /(\P{Yi}{0,3}\277)*/
271:
272: /(\P{Yi}{0,3}?\277)*/
273:
274: /(\p{Yi}{0,3}+\277)*/
275:
276: /\p{Zl}{2,3}+/8BZ
277: ------------------------------------------------------------------
278: Bra
279: prop Zl {2}
280: prop Zl ?+
281: Ket
282: End
283: ------------------------------------------------------------------
284: \xe2\x80\xa8\xe2\x80\xa8
285: 0: \x{2028}\x{2028}
286: \x{2028}\x{2028}\x{2028}
287: 0: \x{2028}\x{2028}\x{2028}
288:
289: /\p{Zl}/8BZ
290: ------------------------------------------------------------------
291: Bra
292: prop Zl
293: Ket
294: End
295: ------------------------------------------------------------------
296:
297: /\p{Lu}{3}+/8BZ
298: ------------------------------------------------------------------
299: Bra
300: prop Lu {3}
301: Ket
302: End
303: ------------------------------------------------------------------
304:
305: /\pL{2}+/8BZ
306: ------------------------------------------------------------------
307: Bra
308: prop L {2}
309: Ket
310: End
311: ------------------------------------------------------------------
312:
313: /\p{Cc}{2}+/8BZ
314: ------------------------------------------------------------------
315: Bra
316: prop Cc {2}
317: Ket
318: End
319: ------------------------------------------------------------------
320:
321: /^\p{Cs}/8
322: \?\x{dfff}
323: 0: \x{dfff}
324: ** Failers
325: No match
326: \x{09f}
327: No match
328:
329: /^\p{Sc}+/8
330: $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
331: 0: $\x{a2}\x{a3}\x{a4}\x{a5}
332: \x{9f2}
333: 0: \x{9f2}
334: ** Failers
335: No match
336: X
337: No match
338: \x{2c2}
339: No match
340:
341: /^\p{Zs}/8
342: \ \
343: 0:
344: \x{a0}
345: 0: \x{a0}
346: \x{1680}
347: 0: \x{1680}
348: \x{180e}
349: 0: \x{180e}
350: \x{2000}
351: 0: \x{2000}
352: \x{2001}
353: 0: \x{2001}
354: ** Failers
355: No match
356: \x{2028}
357: No match
358: \x{200d}
359: No match
360:
361: /-- These four are here rather than in test 6 because Perl has problems with
362: the negative versions of the properties. --/
363:
364: /\p{^Lu}/8i
365: 1234
366: 0: 1
367: ** Failers
368: 0: *
369: ABC
370: No match
371:
372: /\P{Lu}/8i
373: 1234
374: 0: 1
375: ** Failers
376: 0: *
377: ABC
378: No match
379:
380: /\p{Ll}/8i
381: a
382: 0: a
383: Az
384: 0: z
385: ** Failers
386: 0: a
387: ABC
388: No match
389:
390: /\p{Lu}/8i
391: A
392: 0: A
393: a\x{10a0}B
394: 0: \x{10a0}
395: ** Failers
396: 0: F
397: a
398: No match
399: \x{1d00}
400: No match
401:
402: /[\x{c0}\x{391}]/8i
403: \x{c0}
404: 0: \x{c0}
405: \x{e0}
406: 0: \x{e0}
407:
408: /-- The next two are special cases where the lengths of the different cases of
409: the same character differ. The first went wrong with heap frame storage; the
410: second was broken in all cases. --/
411:
412: /^\x{023a}+?(\x{0130}+)/8i
413: \x{023a}\x{2c65}\x{0130}
414: 0: \x{23a}\x{2c65}\x{130}
415: 1: \x{130}
416:
417: /^\x{023a}+([^X])/8i
418: \x{023a}\x{2c65}X
419: 0: \x{23a}\x{2c65}
420: 1: \x{2c65}
421:
422: /\x{c0}+\x{116}+/8i
423: \x{c0}\x{e0}\x{116}\x{117}
424: 0: \x{c0}\x{e0}\x{116}\x{117}
425:
426: /[\x{c0}\x{116}]+/8i
427: \x{c0}\x{e0}\x{116}\x{117}
428: 0: \x{c0}\x{e0}\x{116}\x{117}
429:
430: /(\x{de})\1/8i
431: \x{de}\x{de}
432: 0: \x{de}\x{de}
433: 1: \x{de}
434: \x{de}\x{fe}
435: 0: \x{de}\x{fe}
436: 1: \x{de}
437: \x{fe}\x{fe}
438: 0: \x{fe}\x{fe}
439: 1: \x{fe}
440: \x{fe}\x{de}
441: 0: \x{fe}\x{de}
442: 1: \x{fe}
443:
444: /^\x{c0}$/8i
445: \x{c0}
446: 0: \x{c0}
447: \x{e0}
448: 0: \x{e0}
449:
450: /^\x{e0}$/8i
451: \x{c0}
452: 0: \x{c0}
453: \x{e0}
454: 0: \x{e0}
455:
456: /-- The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
457: will match it only with UCP support, because without that it has no notion
458: of case for anything other than the ASCII letters. --/
459:
460: /((?i)[\x{c0}])/8
461: \x{c0}
462: 0: \x{c0}
463: 1: \x{c0}
464: \x{e0}
465: 0: \x{e0}
466: 1: \x{e0}
467:
468: /(?i:[\x{c0}])/8
469: \x{c0}
470: 0: \x{c0}
471: \x{e0}
472: 0: \x{e0}
473:
474: /-- This should be Perl-compatible but Perl 5.11 gets \x{300} wrong. --/8
475:
476: /^\X/8
477: A
478: 0: A
479: A\x{300}BC
480: 0: A\x{300}
481: A\x{300}\x{301}\x{302}BC
482: 0: A\x{300}\x{301}\x{302}
483: *** Failers
484: 0: *
485: \x{300}
486: No match
487:
488: /-- These are PCRE's extra properties to help with Unicodizing \d etc. --/
489:
490: /^\p{Xan}/8
491: ABCD
492: 0: A
493: 1234
494: 0: 1
495: \x{6ca}
496: 0: \x{6ca}
497: \x{a6c}
498: 0: \x{a6c}
499: \x{10a7}
500: 0: \x{10a7}
501: ** Failers
502: No match
503: _ABC
504: No match
505:
506: /^\p{Xan}+/8
507: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
508: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
509: ** Failers
510: No match
511: _ABC
512: No match
513:
514: /^\p{Xan}+?/8
515: \x{6ca}\x{a6c}\x{10a7}_
516: 0: \x{6ca}
517:
518: /^\p{Xan}*/8
519: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
520: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
521:
522: /^\p{Xan}{2,9}/8
523: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
524: 0: ABCD1234\x{6ca}
525:
526: /^\p{Xan}{2,9}?/8
527: \x{6ca}\x{a6c}\x{10a7}_
528: 0: \x{6ca}\x{a6c}
529:
530: /^[\p{Xan}]/8
531: ABCD1234_
532: 0: A
533: 1234abcd_
534: 0: 1
535: \x{6ca}
536: 0: \x{6ca}
537: \x{a6c}
538: 0: \x{a6c}
539: \x{10a7}
540: 0: \x{10a7}
541: ** Failers
542: No match
543: _ABC
544: No match
545:
546: /^[\p{Xan}]+/8
547: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
548: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
549: ** Failers
550: No match
551: _ABC
552: No match
553:
554: /^>\p{Xsp}/8
555: >\x{1680}\x{2028}\x{0b}
556: 0: >\x{1680}
557: >\x{a0}
558: 0: >\x{a0}
559: ** Failers
560: No match
561: \x{0b}
562: No match
563:
564: /^>\p{Xsp}+/8
565: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
566: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
567:
568: /^>\p{Xsp}+?/8
569: >\x{1680}\x{2028}\x{0b}
570: 0: >\x{1680}
571:
572: /^>\p{Xsp}*/8
573: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
574: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
575:
576: /^>\p{Xsp}{2,9}/8
577: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
578: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
579:
580: /^>\p{Xsp}{2,9}?/8
581: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
582: 0: > \x{09}
583:
584: /^>[\p{Xsp}]/8
585: >\x{2028}\x{0b}
586: 0: >\x{2028}
587:
588: /^>[\p{Xsp}]+/8
589: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
590: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}
591:
592: /^>\p{Xps}/8
593: >\x{1680}\x{2028}\x{0b}
594: 0: >\x{1680}
595: >\x{a0}
596: 0: >\x{a0}
597: ** Failers
598: No match
599: \x{0b}
600: No match
601:
602: /^>\p{Xps}+/8
603: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
604: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
605:
606: /^>\p{Xps}+?/8
607: >\x{1680}\x{2028}\x{0b}
608: 0: >\x{1680}
609:
610: /^>\p{Xps}*/8
611: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
612: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
613:
614: /^>\p{Xps}{2,9}/8
615: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
616: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
617:
618: /^>\p{Xps}{2,9}?/8
619: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
620: 0: > \x{09}
621:
622: /^>[\p{Xps}]/8
623: >\x{2028}\x{0b}
624: 0: >\x{2028}
625:
626: /^>[\p{Xps}]+/8
627: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
628: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
629:
630: /^\p{Xwd}/8
631: ABCD
632: 0: A
633: 1234
634: 0: 1
635: \x{6ca}
636: 0: \x{6ca}
637: \x{a6c}
638: 0: \x{a6c}
639: \x{10a7}
640: 0: \x{10a7}
641: _ABC
642: 0: _
643: ** Failers
644: No match
645: []
646: No match
647:
648: /^\p{Xwd}+/8
649: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
650: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
651:
652: /^\p{Xwd}+?/8
653: \x{6ca}\x{a6c}\x{10a7}_
654: 0: \x{6ca}
655:
656: /^\p{Xwd}*/8
657: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
658: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
659:
660: /^\p{Xwd}{2,9}/8
661: A_B12\x{6ca}\x{a6c}\x{10a7}
662: 0: A_B12\x{6ca}\x{a6c}\x{10a7}
663:
664: /^\p{Xwd}{2,9}?/8
665: \x{6ca}\x{a6c}\x{10a7}_
666: 0: \x{6ca}\x{a6c}
667:
668: /^[\p{Xwd}]/8
669: ABCD1234_
670: 0: A
671: 1234abcd_
672: 0: 1
673: \x{6ca}
674: 0: \x{6ca}
675: \x{a6c}
676: 0: \x{a6c}
677: \x{10a7}
678: 0: \x{10a7}
679: _ABC
680: 0: _
681: ** Failers
682: No match
683: []
684: No match
685:
686: /^[\p{Xwd}]+/8
687: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
688: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
689:
690: /-- A check not in UTF-8 mode --/
691:
692: /^[\p{Xwd}]+/
693: ABCD1234_
694: 0: ABCD1234_
695:
696: /-- Some negative checks --/
697:
698: /^[\P{Xwd}]+/8
699: !.+\x{019}\x{35a}AB
700: 0: !.+\x{19}\x{35a}
701:
702: /^[\p{^Xwd}]+/8
703: !.+\x{019}\x{35a}AB
704: 0: !.+\x{19}\x{35a}
705:
706: /[\D]/WBZ8
707: ------------------------------------------------------------------
708: Bra
709: [\P{Nd}]
710: Ket
711: End
712: ------------------------------------------------------------------
713: 1\x{3c8}2
714: 0: \x{3c8}
715:
716: /[\d]/WBZ8
717: ------------------------------------------------------------------
718: Bra
719: [\p{Nd}]
720: Ket
721: End
722: ------------------------------------------------------------------
723: >\x{6f4}<
724: 0: \x{6f4}
725:
726: /[\S]/WBZ8
727: ------------------------------------------------------------------
728: Bra
729: [\P{Xsp}]
730: Ket
731: End
732: ------------------------------------------------------------------
733: \x{1680}\x{6f4}\x{1680}
734: 0: \x{6f4}
735:
736: /[\s]/WBZ8
737: ------------------------------------------------------------------
738: Bra
739: [\p{Xsp}]
740: Ket
741: End
742: ------------------------------------------------------------------
743: >\x{1680}<
744: 0: \x{1680}
745:
746: /[\W]/WBZ8
747: ------------------------------------------------------------------
748: Bra
749: [\P{Xwd}]
750: Ket
751: End
752: ------------------------------------------------------------------
753: A\x{1712}B
754: 0: \x{1712}
755:
756: /[\w]/WBZ8
757: ------------------------------------------------------------------
758: Bra
759: [\p{Xwd}]
760: Ket
761: End
762: ------------------------------------------------------------------
763: >\x{1723}<
764: 0: \x{1723}
765:
766: /\D/WBZ8
767: ------------------------------------------------------------------
768: Bra
769: notprop Nd
770: Ket
771: End
772: ------------------------------------------------------------------
773: 1\x{3c8}2
774: 0: \x{3c8}
775:
776: /\d/WBZ8
777: ------------------------------------------------------------------
778: Bra
779: prop Nd
780: Ket
781: End
782: ------------------------------------------------------------------
783: >\x{6f4}<
784: 0: \x{6f4}
785:
786: /\S/WBZ8
787: ------------------------------------------------------------------
788: Bra
789: notprop Xsp
790: Ket
791: End
792: ------------------------------------------------------------------
793: \x{1680}\x{6f4}\x{1680}
794: 0: \x{6f4}
795:
796: /\s/WBZ8
797: ------------------------------------------------------------------
798: Bra
799: prop Xsp
800: Ket
801: End
802: ------------------------------------------------------------------
803: >\x{1680}>
804: 0: \x{1680}
805:
806: /\W/WBZ8
807: ------------------------------------------------------------------
808: Bra
809: notprop Xwd
810: Ket
811: End
812: ------------------------------------------------------------------
813: A\x{1712}B
814: 0: \x{1712}
815:
816: /\w/WBZ8
817: ------------------------------------------------------------------
818: Bra
819: prop Xwd
820: Ket
821: End
822: ------------------------------------------------------------------
823: >\x{1723}<
824: 0: \x{1723}
825:
826: /[[:alpha:]]/WBZ
827: ------------------------------------------------------------------
828: Bra
829: [\p{L}]
830: Ket
831: End
832: ------------------------------------------------------------------
833:
834: /[[:lower:]]/WBZ
835: ------------------------------------------------------------------
836: Bra
837: [\p{Ll}]
838: Ket
839: End
840: ------------------------------------------------------------------
841:
842: /[[:upper:]]/WBZ
843: ------------------------------------------------------------------
844: Bra
845: [\p{Lu}]
846: Ket
847: End
848: ------------------------------------------------------------------
849:
850: /[[:alnum:]]/WBZ
851: ------------------------------------------------------------------
852: Bra
853: [\p{Xan}]
854: Ket
855: End
856: ------------------------------------------------------------------
857:
858: /[[:ascii:]]/WBZ
859: ------------------------------------------------------------------
860: Bra
861: [\x00-\x7f]
862: Ket
863: End
864: ------------------------------------------------------------------
865:
866: /[[:blank:]]/WBZ
867: ------------------------------------------------------------------
868: Bra
869: [\x09 \xa0]
870: Ket
871: End
872: ------------------------------------------------------------------
873:
874: /[[:cntrl:]]/WBZ
875: ------------------------------------------------------------------
876: Bra
877: [\x00-\x1f\x7f]
878: Ket
879: End
880: ------------------------------------------------------------------
881:
882: /[[:digit:]]/WBZ
883: ------------------------------------------------------------------
884: Bra
885: [\p{Nd}]
886: Ket
887: End
888: ------------------------------------------------------------------
889:
890: /[[:graph:]]/WBZ
891: ------------------------------------------------------------------
892: Bra
893: [!-~]
894: Ket
895: End
896: ------------------------------------------------------------------
897:
898: /[[:print:]]/WBZ
899: ------------------------------------------------------------------
900: Bra
901: [ -~]
902: Ket
903: End
904: ------------------------------------------------------------------
905:
906: /[[:punct:]]/WBZ
907: ------------------------------------------------------------------
908: Bra
909: [!-/:-@[-`{-~]
910: Ket
911: End
912: ------------------------------------------------------------------
913:
914: /[[:space:]]/WBZ
915: ------------------------------------------------------------------
916: Bra
917: [\p{Xps}]
918: Ket
919: End
920: ------------------------------------------------------------------
921:
922: /[[:word:]]/WBZ
923: ------------------------------------------------------------------
924: Bra
925: [\p{Xwd}]
926: Ket
927: End
928: ------------------------------------------------------------------
929:
930: /[[:xdigit:]]/WBZ
931: ------------------------------------------------------------------
932: Bra
933: [0-9A-Fa-f]
934: Ket
935: End
936: ------------------------------------------------------------------
937:
938: /-- Unicode properties for \b abd \B --/
939:
940: /\b...\B/8W
941: abc_
942: 0: abc
943: \x{37e}abc\x{376}
944: 0: abc
945: \x{37e}\x{376}\x{371}\x{393}\x{394}
946: 0: \x{376}\x{371}\x{393}
947: !\x{c0}++\x{c1}\x{c2}
948: 0: ++\x{c1}
949: !\x{c0}+++++
950: 0: \x{c0}++
951:
952: /-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/
953:
954: /\b...\B/8
955: abc_
956: 0: abc
957: ** Failers
958: 0: Fai
959: \x{37e}abc\x{376}
960: No match
961: \x{37e}\x{376}\x{371}\x{393}\x{394}
962: No match
963: !\x{c0}++\x{c1}\x{c2}
964: No match
965: !\x{c0}+++++
966: No match
967:
968: /-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/
969:
970: /\b...\B/W
971: abc_
972: 0: abc
973: !\x{c0}++\x{c1}\x{c2}
974: 0: ++\xc1
975: !\x{c0}+++++
976: 0: \xc0++
977:
978: /-- POSIX interface --/
979:
980: /\w/P
981: +++\x{c2}
982: No match: POSIX code 17: match failed
983:
984: /\w/WP
985: +++\x{c2}
986: 0: \xc2
987:
988: /-- Some of these are silly, but they check various combinations --/
989:
990: /[[:^alpha:][:^cntrl:]]+/8WBZ
991: ------------------------------------------------------------------
992: Bra
993: [ -~\x80-\xff\P{L}]+
994: Ket
995: End
996: ------------------------------------------------------------------
997: 123
998: 0: 123
999: abc
1000: 0: abc
1001:
1002: /[[:^cntrl:][:^alpha:]]+/8WBZ
1003: ------------------------------------------------------------------
1004: Bra
1005: [ -~\x80-\xff\P{L}]+
1006: Ket
1007: End
1008: ------------------------------------------------------------------
1009: 123
1010: 0: 123
1011: abc
1012: 0: abc
1013:
1014: /[[:alpha:]]+/8WBZ
1015: ------------------------------------------------------------------
1016: Bra
1017: [\p{L}]+
1018: Ket
1019: End
1020: ------------------------------------------------------------------
1021: abc
1022: 0: abc
1023:
1024: /[[:^alpha:]\S]+/8WBZ
1025: ------------------------------------------------------------------
1026: Bra
1027: [\P{L}\P{Xsp}]+
1028: Ket
1029: End
1030: ------------------------------------------------------------------
1031: 123
1032: 0: 123
1033: abc
1034: 0: abc
1035:
1036: /[^\d]+/8WBZ
1037: ------------------------------------------------------------------
1038: Bra
1039: [^\p{Nd}]+
1040: Ket
1041: End
1042: ------------------------------------------------------------------
1043: abc123
1044: 0: abc
1045: abc\x{123}
1046: 0: abc\x{123}
1047: \x{660}abc
1048: 0: abc
1049:
1050: /\x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}/8iSI
1051: Capturing subpattern count = 0
1052: Options: caseless utf8
1053: No first char
1054: No need char
1055: Subject length lower bound = 17
1056: Starting byte set: \xd0 \xd1
1057: \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
1058: 0: \x{401}\x{420}\x{421}\x{422}\x{423}\x{424}\x{425}\x{426}\x{427}\x{428}\x{429}\x{42a}\x{42b}\x{42c}\x{42d}\x{42e}\x{42f}
1059: \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
1060: 0: \x{451}\x{440}\x{441}\x{442}\x{443}\x{444}\x{445}\x{446}\x{447}\x{448}\x{449}\x{44a}\x{44b}\x{44c}\x{44d}\x{44e}\x{44f}
1061:
1062: /\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ
1063: ------------------------------------------------------------------
1064: Bra
1065: prop Lu ++
1066: 9
1067: prop Lu +
1068: B
1069: prop Lu ++
1070: b
1071: Ket
1072: End
1073: ------------------------------------------------------------------
1074:
1075: /\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ
1076: ------------------------------------------------------------------
1077: Bra
1078: notprop Lu +
1079: 9
1080: notprop Lu ++
1081: B
1082: notprop Lu +
1083: b
1084: Ket
1085: End
1086: ------------------------------------------------------------------
1087:
1088: /\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ
1089: ------------------------------------------------------------------
1090: Bra
1091: notprop Lu +
1092: 9
1093: notprop Lu ++
1094: B
1095: notprop Lu +
1096: b
1097: Ket
1098: End
1099: ------------------------------------------------------------------
1100:
1101: /\p{Han}+X\p{Greek}+\x{370}/BZ8
1102: ------------------------------------------------------------------
1103: Bra
1104: prop Han ++
1105: X
1106: prop Greek +
1107: \x{370}
1108: Ket
1109: End
1110: ------------------------------------------------------------------
1111:
1112: /\p{Xan}+!\p{Xan}+A/BZ
1113: ------------------------------------------------------------------
1114: Bra
1115: prop Xan ++
1116: !
1117: prop Xan +
1118: A
1119: Ket
1120: End
1121: ------------------------------------------------------------------
1122:
1123: /\p{Xsp}+!\p{Xsp}\t/BZ
1124: ------------------------------------------------------------------
1125: Bra
1126: prop Xsp ++
1127: !
1128: prop Xsp
1129: \x09
1130: Ket
1131: End
1132: ------------------------------------------------------------------
1133:
1134: /\p{Xps}+!\p{Xps}\t/BZ
1135: ------------------------------------------------------------------
1136: Bra
1137: prop Xps ++
1138: !
1139: prop Xps
1140: \x09
1141: Ket
1142: End
1143: ------------------------------------------------------------------
1144:
1145: /\p{Xwd}+!\p{Xwd}_/BZ
1146: ------------------------------------------------------------------
1147: Bra
1148: prop Xwd ++
1149: !
1150: prop Xwd
1151: _
1152: Ket
1153: End
1154: ------------------------------------------------------------------
1155:
1156: /A+\p{N}A+\dB+\p{N}*B+\d*/WBZ
1157: ------------------------------------------------------------------
1158: Bra
1159: A++
1160: prop N
1161: A++
1162: prop Nd
1163: B+
1164: prop N *+
1165: B+
1166: prop Nd *
1167: Ket
1168: End
1169: ------------------------------------------------------------------
1170:
1171: /-- These behaved oddly in Perl, so they are kept in this test --/
1172:
1173: /(\x{23a}\x{23a}\x{23a})?\1/8i
1174: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
1175: No match
1176:
1177: /(ȺȺȺ)?\1/8i
1178: ȺȺȺⱥⱥ
1179: No match
1180:
1181: /(\x{23a}\x{23a}\x{23a})?\1/8i
1182: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1183: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1184: 1: \x{23a}\x{23a}\x{23a}
1185:
1186: /(ȺȺȺ)?\1/8i
1187: ȺȺȺⱥⱥⱥ
1188: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1189: 1: \x{23a}\x{23a}\x{23a}
1190:
1191: /(\x{23a}\x{23a}\x{23a})\1/8i
1192: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
1193: No match
1194:
1195: /(ȺȺȺ)\1/8i
1196: ȺȺȺⱥⱥ
1197: No match
1198:
1199: /(\x{23a}\x{23a}\x{23a})\1/8i
1200: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1201: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1202: 1: \x{23a}\x{23a}\x{23a}
1203:
1204: /(ȺȺȺ)\1/8i
1205: ȺȺȺⱥⱥⱥ
1206: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1207: 1: \x{23a}\x{23a}\x{23a}
1208:
1209: /(\x{2c65}\x{2c65})\1/8i
1210: \x{2c65}\x{2c65}\x{23a}\x{23a}
1211: 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
1212: 1: \x{2c65}\x{2c65}
1213:
1214: /(ⱥⱥ)\1/8i
1215: ⱥⱥȺȺ
1216: 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
1217: 1: \x{2c65}\x{2c65}
1218:
1219: /(\x{23a}\x{23a}\x{23a})\1Y/8i
1220: X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
1221: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y
1222: 1: \x{23a}\x{23a}\x{23a}
1223:
1224: /(\x{2c65}\x{2c65})\1Y/8i
1225: X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
1226: 0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y
1227: 1: \x{2c65}\x{2c65}
1228:
1229: /-- --/
1230:
1231: /-- These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE --/
1232:
1233: /^[\p{Batak}]/8
1234: \x{1bc0}
1235: 0: \x{1bc0}
1236: \x{1bff}
1237: 0: \x{1bff}
1238: ** Failers
1239: No match
1240: \x{1bf4}
1241: No match
1242:
1243: /^[\p{Brahmi}]/8
1244: \x{11000}
1245: 0: \x{11000}
1246: \x{1106f}
1247: 0: \x{1106f}
1248: ** Failers
1249: No match
1250: \x{1104e}
1251: No match
1252:
1253: /^[\p{Mandaic}]/8
1254: \x{840}
1255: 0: \x{840}
1256: \x{85e}
1257: 0: \x{85e}
1258: ** Failers
1259: No match
1260: \x{85c}
1261: No match
1262: \x{85d}
1263: No match
1264:
1265: /-- --/
1266:
1267: /(\X*)(.)/s8
1268: A\x{300}
1269: 0: A
1270: 1:
1271: 2: A
1272:
1273: /^S(\X*)e(\X*)$/8
1274: Stéréo
1275: No match
1276:
1277: /^\X/8
1278: ́réo
1279: No match
1280:
1281: /^a\X41z/<JS>
1282: aX41z
1283: 0: aX41z
1284: *** Failers
1285: No match
1286: aAz
1287: No match
1288:
1289: /(?<=ab\Cde)X/8
1290: Failed: \C not allowed in lookbehind assertion at offset 10
1291:
1292: /-- End of testinput13 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>