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: utf
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: utf
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: utf
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: /[\x{105}-\x{109}]/8iDZ
101: ------------------------------------------------------------------
102: Bra
103: [\x{104}-\x{109}]
104: Ket
105: End
106: ------------------------------------------------------------------
107: Capturing subpattern count = 0
108: Options: caseless utf
109: No first char
110: No need char
111: \x{104}
112: 0: \x{104}
113: \x{105}
114: 0: \x{105}
115: \x{109}
116: 0: \x{109}
117: ** Failers
118: No match
119: \x{100}
120: No match
121: \x{10a}
122: No match
123:
124: /[z-\x{100}]/8iDZ
125: ------------------------------------------------------------------
126: Bra
127: [Z\x{39c}\x{3bc}\x{1e9e}\x{178}z-\x{101}]
128: Ket
129: End
130: ------------------------------------------------------------------
131: Capturing subpattern count = 0
132: Options: caseless utf
133: No first char
134: No need char
135: Z
136: 0: Z
137: z
138: 0: z
139: \x{39c}
140: 0: \x{39c}
141: \x{178}
142: 0: \x{178}
143: |
144: 0: |
145: \x{80}
146: 0: \x{80}
147: \x{ff}
148: 0: \x{ff}
149: \x{100}
150: 0: \x{100}
151: \x{101}
152: 0: \x{101}
153: ** Failers
154: No match
155: \x{102}
156: No match
157: Y
158: No match
159: y
160: No match
161:
162: /[z-\x{100}]/8DZi
163: ------------------------------------------------------------------
164: Bra
165: [Z\x{39c}\x{3bc}\x{1e9e}\x{178}z-\x{101}]
166: Ket
167: End
168: ------------------------------------------------------------------
169: Capturing subpattern count = 0
170: Options: caseless utf
171: No first char
172: No need char
173:
174: /(?:[\PPa*]*){8,}/
175:
176: /[\P{Any}]/BZ
177: ------------------------------------------------------------------
178: Bra
179: [\P{Any}]
180: Ket
181: End
182: ------------------------------------------------------------------
183:
184: /[\P{Any}\E]/BZ
185: ------------------------------------------------------------------
186: Bra
187: [\P{Any}]
188: Ket
189: End
190: ------------------------------------------------------------------
191:
192: /(\P{Yi}+\277)/
193:
194: /(\P{Yi}+\277)?/
195:
196: /(?<=\P{Yi}{3}A)X/
197:
198: /\p{Yi}+(\P{Yi}+)(?1)/
199:
200: /(\P{Yi}{2}\277)?/
201:
202: /[\P{Yi}A]/
203:
204: /[\P{Yi}\P{Yi}\P{Yi}A]/
205:
206: /[^\P{Yi}A]/
207:
208: /[^\P{Yi}\P{Yi}\P{Yi}A]/
209:
210: /(\P{Yi}*\277)*/
211:
212: /(\P{Yi}*?\277)*/
213:
214: /(\p{Yi}*+\277)*/
215:
216: /(\P{Yi}?\277)*/
217:
218: /(\P{Yi}??\277)*/
219:
220: /(\p{Yi}?+\277)*/
221:
222: /(\P{Yi}{0,3}\277)*/
223:
224: /(\P{Yi}{0,3}?\277)*/
225:
226: /(\p{Yi}{0,3}+\277)*/
227:
228: /\p{Zl}{2,3}+/8BZ
229: ------------------------------------------------------------------
230: Bra
231: prop Zl {2}
232: prop Zl ?+
233: Ket
234: End
235: ------------------------------------------------------------------
236:
237: 0: \x{2028}\x{2028}
238: \x{2028}\x{2028}\x{2028}
239: 0: \x{2028}\x{2028}\x{2028}
240:
241: /\p{Zl}/8BZ
242: ------------------------------------------------------------------
243: Bra
244: prop Zl
245: Ket
246: End
247: ------------------------------------------------------------------
248:
249: /\p{Lu}{3}+/8BZ
250: ------------------------------------------------------------------
251: Bra
252: prop Lu {3}
253: Ket
254: End
255: ------------------------------------------------------------------
256:
257: /\pL{2}+/8BZ
258: ------------------------------------------------------------------
259: Bra
260: prop L {2}
261: Ket
262: End
263: ------------------------------------------------------------------
264:
265: /\p{Cc}{2}+/8BZ
266: ------------------------------------------------------------------
267: Bra
268: prop Cc {2}
269: Ket
270: End
271: ------------------------------------------------------------------
272:
273: /^\p{Cf}/8
274: \x{180e}
275: 0: \x{180e}
276: \x{061c}
277: 0: \x{61c}
278: \x{2066}
279: 0: \x{2066}
280: \x{2067}
281: 0: \x{2067}
282: \x{2068}
283: 0: \x{2068}
284: \x{2069}
285: 0: \x{2069}
286:
287: /^\p{Cs}/8
288: \?\x{dfff}
289: 0: \x{dfff}
290: ** Failers
291: No match
292: \x{09f}
293: No match
294:
295: /^\p{Mn}/8
296: \x{1a1b}
297: 0: \x{1a1b}
298:
299: /^\p{Pe}/8
300: \x{2309}
301: 0: \x{2309}
302: \x{230b}
303: 0: \x{230b}
304:
305: /^\p{Ps}/8
306: \x{2308}
307: 0: \x{2308}
308: \x{230a}
309: 0: \x{230a}
310:
311: /^\p{Sc}+/8
312: $\x{a2}\x{a3}\x{a4}\x{a5}\x{a6}
313: 0: $\x{a2}\x{a3}\x{a4}\x{a5}
314: \x{9f2}
315: 0: \x{9f2}
316: ** Failers
317: No match
318: X
319: No match
320: \x{2c2}
321: No match
322:
323: /^\p{Zs}/8
324: \ \
325: 0:
326: \x{a0}
327: 0: \x{a0}
328: \x{1680}
329: 0: \x{1680}
330: \x{2000}
331: 0: \x{2000}
332: \x{2001}
333: 0: \x{2001}
334: ** Failers
335: No match
336: \x{2028}
337: No match
338: \x{200d}
339: No match
340:
341: /-- These are here rather than in test 6 because Perl has problems with
342: the negative versions of the properties and behaves has changed how
343: it behaves for caseless matching. --/
344:
345: /\p{^Lu}/8i
346: 1234
347: 0: 1
348: ** Failers
349: 0: *
350: ABC
351: No match
352:
353: /\P{Lu}/8i
354: 1234
355: 0: 1
356: ** Failers
357: 0: *
358: ABC
359: No match
360:
361: /\p{Ll}/8i
362: a
363: 0: a
364: Az
365: 0: z
366: ** Failers
367: 0: a
368: ABC
369: No match
370:
371: /\p{Lu}/8i
372: A
373: 0: A
374: a\x{10a0}B
375: 0: \x{10a0}
376: ** Failers
377: 0: F
378: a
379: No match
380: \x{1d00}
381: No match
382:
383: /\p{Lu}/8i
384: A
385: 0: A
386: aZ
387: 0: Z
388: ** Failers
389: 0: F
390: abc
391: No match
392:
393: /[\x{c0}\x{391}]/8i
394: \x{c0}
395: 0: \x{c0}
396: \x{e0}
397: 0: \x{e0}
398:
399: /-- The next two are special cases where the lengths of the different cases of
400: the same character differ. The first went wrong with heap frame storage; the
401: second was broken in all cases. --/
402:
403: /^\x{023a}+?(\x{0130}+)/8i
404: \x{023a}\x{2c65}\x{0130}
405: 0: \x{23a}\x{2c65}\x{130}
406: 1: \x{130}
407:
408: /^\x{023a}+([^X])/8i
409: \x{023a}\x{2c65}X
410: 0: \x{23a}\x{2c65}
411: 1: \x{2c65}
412:
413: /\x{c0}+\x{116}+/8i
414: \x{c0}\x{e0}\x{116}\x{117}
415: 0: \x{c0}\x{e0}\x{116}\x{117}
416:
417: /[\x{c0}\x{116}]+/8i
418: \x{c0}\x{e0}\x{116}\x{117}
419: 0: \x{c0}\x{e0}\x{116}\x{117}
420:
421: /(\x{de})\1/8i
422: \x{de}\x{de}
423: 0: \x{de}\x{de}
424: 1: \x{de}
425: \x{de}\x{fe}
426: 0: \x{de}\x{fe}
427: 1: \x{de}
428: \x{fe}\x{fe}
429: 0: \x{fe}\x{fe}
430: 1: \x{fe}
431: \x{fe}\x{de}
432: 0: \x{fe}\x{de}
433: 1: \x{fe}
434:
435: /^\x{c0}$/8i
436: \x{c0}
437: 0: \x{c0}
438: \x{e0}
439: 0: \x{e0}
440:
441: /^\x{e0}$/8i
442: \x{c0}
443: 0: \x{c0}
444: \x{e0}
445: 0: \x{e0}
446:
447: /-- The next two should be Perl-compatible, but it fails to match \x{e0}. PCRE
448: will match it only with UCP support, because without that it has no notion
449: of case for anything other than the ASCII letters. --/
450:
451: /((?i)[\x{c0}])/8
452: \x{c0}
453: 0: \x{c0}
454: 1: \x{c0}
455: \x{e0}
456: 0: \x{e0}
457: 1: \x{e0}
458:
459: /(?i:[\x{c0}])/8
460: \x{c0}
461: 0: \x{c0}
462: \x{e0}
463: 0: \x{e0}
464:
465: /-- These are PCRE's extra properties to help with Unicodizing \d etc. --/
466:
467: /^\p{Xan}/8
468: ABCD
469: 0: A
470: 1234
471: 0: 1
472: \x{6ca}
473: 0: \x{6ca}
474: \x{a6c}
475: 0: \x{a6c}
476: \x{10a7}
477: 0: \x{10a7}
478: ** Failers
479: No match
480: _ABC
481: No match
482:
483: /^\p{Xan}+/8
484: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
485: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
486: ** Failers
487: No match
488: _ABC
489: No match
490:
491: /^\p{Xan}+?/8
492: \x{6ca}\x{a6c}\x{10a7}_
493: 0: \x{6ca}
494:
495: /^\p{Xan}*/8
496: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
497: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
498:
499: /^\p{Xan}{2,9}/8
500: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
501: 0: ABCD1234\x{6ca}
502:
503: /^\p{Xan}{2,9}?/8
504: \x{6ca}\x{a6c}\x{10a7}_
505: 0: \x{6ca}\x{a6c}
506:
507: /^[\p{Xan}]/8
508: ABCD1234_
509: 0: A
510: 1234abcd_
511: 0: 1
512: \x{6ca}
513: 0: \x{6ca}
514: \x{a6c}
515: 0: \x{a6c}
516: \x{10a7}
517: 0: \x{10a7}
518: ** Failers
519: No match
520: _ABC
521: No match
522:
523: /^[\p{Xan}]+/8
524: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
525: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}
526: ** Failers
527: No match
528: _ABC
529: No match
530:
531: /^>\p{Xsp}/8
532: >\x{1680}\x{2028}\x{0b}
533: 0: >\x{1680}
534: >\x{a0}
535: 0: >\x{a0}
536: ** Failers
537: No match
538: \x{0b}
539: No match
540:
541: /^>\p{Xsp}+/8
542: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
543: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
544:
545: /^>\p{Xsp}+?/8
546: >\x{1680}\x{2028}\x{0b}
547: 0: >\x{1680}
548:
549: /^>\p{Xsp}*/8
550: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
551: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
552:
553: /^>\p{Xsp}{2,9}/8
554: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
555: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
556:
557: /^>\p{Xsp}{2,9}?/8
558: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
559: 0: > \x{09}
560:
561: /^>[\p{Xsp}]/8
562: >\x{2028}\x{0b}
563: 0: >\x{2028}
564:
565: /^>[\p{Xsp}]+/8
566: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
567: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
568:
569: /^>\p{Xps}/8
570: >\x{1680}\x{2028}\x{0b}
571: 0: >\x{1680}
572: >\x{a0}
573: 0: >\x{a0}
574: ** Failers
575: No match
576: \x{0b}
577: No match
578:
579: /^>\p{Xps}+/8
580: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
581: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
582:
583: /^>\p{Xps}+?/8
584: >\x{1680}\x{2028}\x{0b}
585: 0: >\x{1680}
586:
587: /^>\p{Xps}*/8
588: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
589: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
590:
591: /^>\p{Xps}{2,9}/8
592: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
593: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
594:
595: /^>\p{Xps}{2,9}?/8
596: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
597: 0: > \x{09}
598:
599: /^>[\p{Xps}]/8
600: >\x{2028}\x{0b}
601: 0: >\x{2028}
602:
603: /^>[\p{Xps}]+/8
604: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
605: 0: > \x{09}\x{0a}\x{0c}\x{0d}\x{a0}\x{1680}\x{2028}\x{0b}
606:
607: /^\p{Xwd}/8
608: ABCD
609: 0: A
610: 1234
611: 0: 1
612: \x{6ca}
613: 0: \x{6ca}
614: \x{a6c}
615: 0: \x{a6c}
616: \x{10a7}
617: 0: \x{10a7}
618: _ABC
619: 0: _
620: ** Failers
621: No match
622: []
623: No match
624:
625: /^\p{Xwd}+/8
626: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
627: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
628:
629: /^\p{Xwd}+?/8
630: \x{6ca}\x{a6c}\x{10a7}_
631: 0: \x{6ca}
632:
633: /^\p{Xwd}*/8
634: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
635: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
636:
637: /^\p{Xwd}{2,9}/8
638: A_B12\x{6ca}\x{a6c}\x{10a7}
639: 0: A_B12\x{6ca}\x{a6c}\x{10a7}
640:
641: /^\p{Xwd}{2,9}?/8
642: \x{6ca}\x{a6c}\x{10a7}_
643: 0: \x{6ca}\x{a6c}
644:
645: /^[\p{Xwd}]/8
646: ABCD1234_
647: 0: A
648: 1234abcd_
649: 0: 1
650: \x{6ca}
651: 0: \x{6ca}
652: \x{a6c}
653: 0: \x{a6c}
654: \x{10a7}
655: 0: \x{10a7}
656: _ABC
657: 0: _
658: ** Failers
659: No match
660: []
661: No match
662:
663: /^[\p{Xwd}]+/8
664: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
665: 0: ABCD1234\x{6ca}\x{a6c}\x{10a7}_
666:
667: /-- A check not in UTF-8 mode --/
668:
669: /^[\p{Xwd}]+/
670: ABCD1234_
671: 0: ABCD1234_
672:
673: /-- Some negative checks --/
674:
675: /^[\P{Xwd}]+/8
676: !.+\x{019}\x{35a}AB
677: 0: !.+\x{19}\x{35a}
678:
679: /^[\p{^Xwd}]+/8
680: !.+\x{019}\x{35a}AB
681: 0: !.+\x{19}\x{35a}
682:
683: /[\D]/WBZ8
684: ------------------------------------------------------------------
685: Bra
686: [\P{Nd}]
687: Ket
688: End
689: ------------------------------------------------------------------
690: 1\x{3c8}2
691: 0: \x{3c8}
692:
693: /[\d]/WBZ8
694: ------------------------------------------------------------------
695: Bra
696: [\p{Nd}]
697: Ket
698: End
699: ------------------------------------------------------------------
700: >\x{6f4}<
701: 0: \x{6f4}
702:
703: /[\S]/WBZ8
704: ------------------------------------------------------------------
705: Bra
706: [\P{Xsp}]
707: Ket
708: End
709: ------------------------------------------------------------------
710: \x{1680}\x{6f4}\x{1680}
711: 0: \x{6f4}
712:
713: /[\s]/WBZ8
714: ------------------------------------------------------------------
715: Bra
716: [\p{Xsp}]
717: Ket
718: End
719: ------------------------------------------------------------------
720: >\x{1680}<
721: 0: \x{1680}
722:
723: /[\W]/WBZ8
724: ------------------------------------------------------------------
725: Bra
726: [\P{Xwd}]
727: Ket
728: End
729: ------------------------------------------------------------------
730: A\x{1712}B
731: 0: \x{1712}
732:
733: /[\w]/WBZ8
734: ------------------------------------------------------------------
735: Bra
736: [\p{Xwd}]
737: Ket
738: End
739: ------------------------------------------------------------------
740: >\x{1723}<
741: 0: \x{1723}
742:
743: /\D/WBZ8
744: ------------------------------------------------------------------
745: Bra
746: notprop Nd
747: Ket
748: End
749: ------------------------------------------------------------------
750: 1\x{3c8}2
751: 0: \x{3c8}
752:
753: /\d/WBZ8
754: ------------------------------------------------------------------
755: Bra
756: prop Nd
757: Ket
758: End
759: ------------------------------------------------------------------
760: >\x{6f4}<
761: 0: \x{6f4}
762:
763: /\S/WBZ8
764: ------------------------------------------------------------------
765: Bra
766: notprop Xsp
767: Ket
768: End
769: ------------------------------------------------------------------
770: \x{1680}\x{6f4}\x{1680}
771: 0: \x{6f4}
772:
773: /\s/WBZ8
774: ------------------------------------------------------------------
775: Bra
776: prop Xsp
777: Ket
778: End
779: ------------------------------------------------------------------
780: >\x{1680}>
781: 0: \x{1680}
782:
783: /\W/WBZ8
784: ------------------------------------------------------------------
785: Bra
786: notprop Xwd
787: Ket
788: End
789: ------------------------------------------------------------------
790: A\x{1712}B
791: 0: \x{1712}
792:
793: /\w/WBZ8
794: ------------------------------------------------------------------
795: Bra
796: prop Xwd
797: Ket
798: End
799: ------------------------------------------------------------------
800: >\x{1723}<
801: 0: \x{1723}
802:
803: /[[:alpha:]]/WBZ
804: ------------------------------------------------------------------
805: Bra
806: [\p{L}]
807: Ket
808: End
809: ------------------------------------------------------------------
810:
811: /[[:lower:]]/WBZ
812: ------------------------------------------------------------------
813: Bra
814: [\p{Ll}]
815: Ket
816: End
817: ------------------------------------------------------------------
818:
819: /[[:upper:]]/WBZ
820: ------------------------------------------------------------------
821: Bra
822: [\p{Lu}]
823: Ket
824: End
825: ------------------------------------------------------------------
826:
827: /[[:alnum:]]/WBZ
828: ------------------------------------------------------------------
829: Bra
830: [\p{Xan}]
831: Ket
832: End
833: ------------------------------------------------------------------
834:
835: /[[:ascii:]]/WBZ
836: ------------------------------------------------------------------
837: Bra
838: [\x00-\x7f]
839: Ket
840: End
841: ------------------------------------------------------------------
842:
843: /[[:cntrl:]]/WBZ
844: ------------------------------------------------------------------
845: Bra
846: [\x00-\x1f\x7f]
847: Ket
848: End
849: ------------------------------------------------------------------
850:
851: /[[:digit:]]/WBZ
852: ------------------------------------------------------------------
853: Bra
854: [\p{Nd}]
855: Ket
856: End
857: ------------------------------------------------------------------
858:
859: /[[:graph:]]/WBZ
860: ------------------------------------------------------------------
861: Bra
862: [[:graph:]]
863: Ket
864: End
865: ------------------------------------------------------------------
866:
867: /[[:print:]]/WBZ
868: ------------------------------------------------------------------
869: Bra
870: [[:print:]]
871: Ket
872: End
873: ------------------------------------------------------------------
874:
875: /[[:punct:]]/WBZ
876: ------------------------------------------------------------------
877: Bra
878: [[:punct:]]
879: Ket
880: End
881: ------------------------------------------------------------------
882:
883: /[[:space:]]/WBZ
884: ------------------------------------------------------------------
885: Bra
886: [\p{Xps}]
887: Ket
888: End
889: ------------------------------------------------------------------
890:
891: /[[:word:]]/WBZ
892: ------------------------------------------------------------------
893: Bra
894: [\p{Xwd}]
895: Ket
896: End
897: ------------------------------------------------------------------
898:
899: /[[:xdigit:]]/WBZ
900: ------------------------------------------------------------------
901: Bra
902: [0-9A-Fa-f]
903: Ket
904: End
905: ------------------------------------------------------------------
906:
907: /-- Unicode properties for \b abd \B --/
908:
909: /\b...\B/8W
910: abc_
911: 0: abc
912: \x{37e}abc\x{376}
913: 0: abc
914: \x{37e}\x{376}\x{371}\x{393}\x{394}
915: 0: \x{376}\x{371}\x{393}
916: !\x{c0}++\x{c1}\x{c2}
917: 0: ++\x{c1}
918: !\x{c0}+++++
919: 0: \x{c0}++
920:
921: /-- Without PCRE_UCP, non-ASCII always fail, even if < 256 --/
922:
923: /\b...\B/8
924: abc_
925: 0: abc
926: ** Failers
927: 0: Fai
928: \x{37e}abc\x{376}
929: No match
930: \x{37e}\x{376}\x{371}\x{393}\x{394}
931: No match
932: !\x{c0}++\x{c1}\x{c2}
933: No match
934: !\x{c0}+++++
935: No match
936:
937: /-- With PCRE_UCP, non-UTF8 chars that are < 256 still check properties --/
938:
939: /\b...\B/W
940: abc_
941: 0: abc
942: !\x{c0}++\x{c1}\x{c2}
943: 0: ++\xc1
944: !\x{c0}+++++
945: 0: \xc0++
946:
947: /-- Some of these are silly, but they check various combinations --/
948:
949: /[[:^alpha:][:^cntrl:]]+/8WBZ
950: ------------------------------------------------------------------
951: Bra
952: [ -~\x80-\xff\P{L}]++
953: Ket
954: End
955: ------------------------------------------------------------------
956: 123
957: 0: 123
958: abc
959: 0: abc
960:
961: /[[:^cntrl:][:^alpha:]]+/8WBZ
962: ------------------------------------------------------------------
963: Bra
964: [ -~\x80-\xff\P{L}]++
965: Ket
966: End
967: ------------------------------------------------------------------
968: 123
969: 0: 123
970: abc
971: 0: abc
972:
973: /[[:alpha:]]+/8WBZ
974: ------------------------------------------------------------------
975: Bra
976: [\p{L}]++
977: Ket
978: End
979: ------------------------------------------------------------------
980: abc
981: 0: abc
982:
983: /[[:^alpha:]\S]+/8WBZ
984: ------------------------------------------------------------------
985: Bra
986: [\P{L}\P{Xsp}]++
987: Ket
988: End
989: ------------------------------------------------------------------
990: 123
991: 0: 123
992: abc
993: 0: abc
994:
995: /[^\d]+/8WBZ
996: ------------------------------------------------------------------
997: Bra
998: [^\p{Nd}]++
999: Ket
1000: End
1001: ------------------------------------------------------------------
1002: abc123
1003: 0: abc
1004: abc\x{123}
1005: 0: abc\x{123}
1006: \x{660}abc
1007: 0: abc
1008:
1009: /\p{Lu}+9\p{Lu}+B\p{Lu}+b/BZ
1010: ------------------------------------------------------------------
1011: Bra
1012: prop Lu ++
1013: 9
1014: prop Lu +
1015: B
1016: prop Lu ++
1017: b
1018: Ket
1019: End
1020: ------------------------------------------------------------------
1021:
1022: /\p{^Lu}+9\p{^Lu}+B\p{^Lu}+b/BZ
1023: ------------------------------------------------------------------
1024: Bra
1025: notprop Lu +
1026: 9
1027: notprop Lu ++
1028: B
1029: notprop Lu +
1030: b
1031: Ket
1032: End
1033: ------------------------------------------------------------------
1034:
1035: /\P{Lu}+9\P{Lu}+B\P{Lu}+b/BZ
1036: ------------------------------------------------------------------
1037: Bra
1038: notprop Lu +
1039: 9
1040: notprop Lu ++
1041: B
1042: notprop Lu +
1043: b
1044: Ket
1045: End
1046: ------------------------------------------------------------------
1047:
1048: /\p{Han}+X\p{Greek}+\x{370}/BZ8
1049: ------------------------------------------------------------------
1050: Bra
1051: prop Han ++
1052: X
1053: prop Greek +
1054: \x{370}
1055: Ket
1056: End
1057: ------------------------------------------------------------------
1058:
1059: /\p{Xan}+!\p{Xan}+A/BZ
1060: ------------------------------------------------------------------
1061: Bra
1062: prop Xan ++
1063: !
1064: prop Xan +
1065: A
1066: Ket
1067: End
1068: ------------------------------------------------------------------
1069:
1070: /\p{Xsp}+!\p{Xsp}\t/BZ
1071: ------------------------------------------------------------------
1072: Bra
1073: prop Xsp ++
1074: !
1075: prop Xsp
1076: \x09
1077: Ket
1078: End
1079: ------------------------------------------------------------------
1080:
1081: /\p{Xps}+!\p{Xps}\t/BZ
1082: ------------------------------------------------------------------
1083: Bra
1084: prop Xps ++
1085: !
1086: prop Xps
1087: \x09
1088: Ket
1089: End
1090: ------------------------------------------------------------------
1091:
1092: /\p{Xwd}+!\p{Xwd}_/BZ
1093: ------------------------------------------------------------------
1094: Bra
1095: prop Xwd ++
1096: !
1097: prop Xwd
1098: _
1099: Ket
1100: End
1101: ------------------------------------------------------------------
1102:
1103: /A+\p{N}A+\dB+\p{N}*B+\d*/WBZ
1104: ------------------------------------------------------------------
1105: Bra
1106: A++
1107: prop N
1108: A++
1109: prop Nd
1110: B+
1111: prop N *+
1112: B++
1113: prop Nd *+
1114: Ket
1115: End
1116: ------------------------------------------------------------------
1117:
1118: /-- These behaved oddly in Perl, so they are kept in this test --/
1119:
1120: /(\x{23a}\x{23a}\x{23a})?\1/8i
1121: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
1122: No match
1123:
1124: /(ȺȺȺ)?\1/8i
1125: ȺȺȺⱥⱥ
1126: No match
1127:
1128: /(\x{23a}\x{23a}\x{23a})?\1/8i
1129: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1130: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1131: 1: \x{23a}\x{23a}\x{23a}
1132:
1133: /(ȺȺȺ)?\1/8i
1134: ȺȺȺⱥⱥⱥ
1135: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1136: 1: \x{23a}\x{23a}\x{23a}
1137:
1138: /(\x{23a}\x{23a}\x{23a})\1/8i
1139: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}
1140: No match
1141:
1142: /(ȺȺȺ)\1/8i
1143: ȺȺȺⱥⱥ
1144: No match
1145:
1146: /(\x{23a}\x{23a}\x{23a})\1/8i
1147: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1148: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1149: 1: \x{23a}\x{23a}\x{23a}
1150:
1151: /(ȺȺȺ)\1/8i
1152: ȺȺȺⱥⱥⱥ
1153: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}
1154: 1: \x{23a}\x{23a}\x{23a}
1155:
1156: /(\x{2c65}\x{2c65})\1/8i
1157: \x{2c65}\x{2c65}\x{23a}\x{23a}
1158: 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
1159: 1: \x{2c65}\x{2c65}
1160:
1161: /(ⱥⱥ)\1/8i
1162: ⱥⱥȺȺ
1163: 0: \x{2c65}\x{2c65}\x{23a}\x{23a}
1164: 1: \x{2c65}\x{2c65}
1165:
1166: /(\x{23a}\x{23a}\x{23a})\1Y/8i
1167: X\x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}YZ
1168: 0: \x{23a}\x{23a}\x{23a}\x{2c65}\x{2c65}\x{2c65}Y
1169: 1: \x{23a}\x{23a}\x{23a}
1170:
1171: /(\x{2c65}\x{2c65})\1Y/8i
1172: X\x{2c65}\x{2c65}\x{23a}\x{23a}YZ
1173: 0: \x{2c65}\x{2c65}\x{23a}\x{23a}Y
1174: 1: \x{2c65}\x{2c65}
1175:
1176: /-- --/
1177:
1178: /-- These scripts weren't yet in Perl when I added Unicode 6.0.0 to PCRE --/
1179:
1180: /^[\p{Batak}]/8
1181: \x{1bc0}
1182: 0: \x{1bc0}
1183: \x{1bff}
1184: 0: \x{1bff}
1185: ** Failers
1186: No match
1187: \x{1bf4}
1188: No match
1189:
1190: /^[\p{Brahmi}]/8
1191: \x{11000}
1192: 0: \x{11000}
1193: \x{1106f}
1194: 0: \x{1106f}
1195: ** Failers
1196: No match
1197: \x{1104e}
1198: No match
1199:
1200: /^[\p{Mandaic}]/8
1201: \x{840}
1202: 0: \x{840}
1203: \x{85e}
1204: 0: \x{85e}
1205: ** Failers
1206: No match
1207: \x{85c}
1208: No match
1209: \x{85d}
1210: No match
1211:
1212: /-- --/
1213:
1214: /(\X*)(.)/s8
1215: A\x{300}
1216: 0: A
1217: 1:
1218: 2: A
1219:
1220: /^S(\X*)e(\X*)$/8
1221: Stéréo
1222: 0: Ste\x{301}re\x{301}o
1223: 1: te\x{301}r
1224: 2: \x{301}o
1225:
1226: /^\X/8
1227: ́réo
1228: 0: \x{301}
1229:
1230: /^a\X41z/<JS>
1231: aX41z
1232: 0: aX41z
1233: *** Failers
1234: No match
1235: aAz
1236: No match
1237:
1238: /(?<=ab\Cde)X/8
1239: Failed: \C not allowed in lookbehind assertion at offset 10
1240:
1241: /\X/
1242: a\P
1243: 0: a
1244: a\P\P
1245: Partial match: a
1246:
1247: /\Xa/
1248: aa\P
1249: 0: aa
1250: aa\P\P
1251: 0: aa
1252:
1253: /\X{2}/
1254: aa\P
1255: 0: aa
1256: aa\P\P
1257: Partial match: aa
1258:
1259: /\X+a/
1260: a\P
1261: Partial match: a
1262: aa\P
1263: 0: aa
1264: aa\P\P
1265: Partial match: aa
1266:
1267: /\X+?a/
1268: a\P
1269: Partial match: a
1270: ab\P
1271: Partial match: ab
1272: aa\P
1273: 0: aa
1274: aa\P\P
1275: 0: aa
1276: aba\P
1277: 0: aba
1278:
1279: /-- These Unicode 6.1.0 scripts are not known to Perl. --/
1280:
1281: /\p{Chakma}\d/8W
1282: \x{11100}\x{1113c}
1283: 0: \x{11100}\x{1113c}
1284:
1285: /\p{Takri}\d/8W
1286: \x{11680}\x{116c0}
1287: 0: \x{11680}\x{116c0}
1288:
1289: /^\X/8
1290: A\P
1291: 0: A
1292: A\P\P
1293: Partial match: A
1294: A\x{300}\x{301}\P
1295: 0: A\x{300}\x{301}
1296: A\x{300}\x{301}\P\P
1297: Partial match: A\x{300}\x{301}
1298: A\x{301}\P
1299: 0: A\x{301}
1300: A\x{301}\P\P
1301: Partial match: A\x{301}
1302:
1303: /^\X{2,3}/8
1304: A\P
1305: Partial match: A
1306: A\P\P
1307: Partial match: A
1308: AA\P
1309: 0: AA
1310: AA\P\P
1311: Partial match: AA
1312: A\x{300}\x{301}\P
1313: Partial match: A\x{300}\x{301}
1314: A\x{300}\x{301}\P\P
1315: Partial match: A\x{300}\x{301}
1316: A\x{300}\x{301}A\x{300}\x{301}\P
1317: 0: A\x{300}\x{301}A\x{300}\x{301}
1318: A\x{300}\x{301}A\x{300}\x{301}\P\P
1319: Partial match: A\x{300}\x{301}A\x{300}\x{301}
1320:
1321: /^\X{2}/8
1322: AA\P
1323: 0: AA
1324: AA\P\P
1325: Partial match: AA
1326: A\x{300}\x{301}A\x{300}\x{301}\P
1327: 0: A\x{300}\x{301}A\x{300}\x{301}
1328: A\x{300}\x{301}A\x{300}\x{301}\P\P
1329: Partial match: A\x{300}\x{301}A\x{300}\x{301}
1330:
1331: /^\X+/8
1332: AA\P
1333: 0: AA
1334: AA\P\P
1335: Partial match: AA
1336:
1337: /^\X+?Z/8
1338: AA\P
1339: Partial match: AA
1340: AA\P\P
1341: Partial match: AA
1342:
1343: /A\x{3a3}B/8iDZ
1344: ------------------------------------------------------------------
1345: Bra
1346: /i A
1347: clist 03a3 03c2 03c3
1348: /i B
1349: Ket
1350: End
1351: ------------------------------------------------------------------
1352: Capturing subpattern count = 0
1353: Options: caseless utf
1354: First char = 'A' (caseless)
1355: Need char = 'B' (caseless)
1356:
1357: /\x{3a3}B/8iDZ
1358: ------------------------------------------------------------------
1359: Bra
1360: clist 03a3 03c2 03c3
1361: /i B
1362: Ket
1363: End
1364: ------------------------------------------------------------------
1365: Capturing subpattern count = 0
1366: Options: caseless utf
1367: No first char
1368: Need char = 'B' (caseless)
1369:
1370: /[\x{3a3}]/8iBZ
1371: ------------------------------------------------------------------
1372: Bra
1373: clist 03a3 03c2 03c3
1374: Ket
1375: End
1376: ------------------------------------------------------------------
1377:
1378: /[^\x{3a3}]/8iBZ
1379: ------------------------------------------------------------------
1380: Bra
1381: not clist 03a3 03c2 03c3
1382: Ket
1383: End
1384: ------------------------------------------------------------------
1385:
1386: /[\x{3a3}]+/8iBZ
1387: ------------------------------------------------------------------
1388: Bra
1389: clist 03a3 03c2 03c3 ++
1390: Ket
1391: End
1392: ------------------------------------------------------------------
1393:
1394: /[^\x{3a3}]+/8iBZ
1395: ------------------------------------------------------------------
1396: Bra
1397: not clist 03a3 03c2 03c3 ++
1398: Ket
1399: End
1400: ------------------------------------------------------------------
1401:
1402: /a*\x{3a3}/8iBZ
1403: ------------------------------------------------------------------
1404: Bra
1405: /i a*+
1406: clist 03a3 03c2 03c3
1407: Ket
1408: End
1409: ------------------------------------------------------------------
1410:
1411: /\x{3a3}+a/8iBZ
1412: ------------------------------------------------------------------
1413: Bra
1414: clist 03a3 03c2 03c3 ++
1415: /i a
1416: Ket
1417: End
1418: ------------------------------------------------------------------
1419:
1420: /\x{3a3}*\x{3c2}/8iBZ
1421: ------------------------------------------------------------------
1422: Bra
1423: clist 03a3 03c2 03c3 *
1424: clist 03a3 03c2 03c3
1425: Ket
1426: End
1427: ------------------------------------------------------------------
1428:
1429: /\x{3a3}{3}/8i+
1430: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1431: 0: \x{3a3}\x{3c3}\x{3c2}
1432: 0+ \x{3a3}\x{3c3}\x{3c2}
1433:
1434: /\x{3a3}{2,4}/8i+
1435: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1436: 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}
1437: 0+ \x{3c3}\x{3c2}
1438:
1439: /\x{3a3}{2,4}?/8i+
1440: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1441: 0: \x{3a3}\x{3c3}
1442: 0+ \x{3c2}\x{3a3}\x{3c3}\x{3c2}
1443:
1444: /\x{3a3}+./8i+
1445: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1446: 0: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1447: 0+
1448:
1449: /\x{3a3}++./8i+
1450: ** Failers
1451: No match
1452: \x{3a3}\x{3c3}\x{3c2}\x{3a3}\x{3c3}\x{3c2}
1453: No match
1454:
1455: /\x{3a3}*\x{3c2}/8iBZ
1456: ------------------------------------------------------------------
1457: Bra
1458: clist 03a3 03c2 03c3 *
1459: clist 03a3 03c2 03c3
1460: Ket
1461: End
1462: ------------------------------------------------------------------
1463:
1464: /[^\x{3a3}]*\x{3c2}/8iBZ
1465: ------------------------------------------------------------------
1466: Bra
1467: not clist 03a3 03c2 03c3 *+
1468: clist 03a3 03c2 03c3
1469: Ket
1470: End
1471: ------------------------------------------------------------------
1472:
1473: /[^a]*\x{3c2}/8iBZ
1474: ------------------------------------------------------------------
1475: Bra
1476: /i [^a]*
1477: clist 03a3 03c2 03c3
1478: Ket
1479: End
1480: ------------------------------------------------------------------
1481:
1482: /ist/8iBZ
1483: ------------------------------------------------------------------
1484: Bra
1485: /i i
1486: clist 0053 0073 017f
1487: /i t
1488: Ket
1489: End
1490: ------------------------------------------------------------------
1491: ikt
1492: No match
1493:
1494: /is+t/8i
1495: iSs\x{17f}t
1496: 0: iSs\x{17f}t
1497: ikt
1498: No match
1499:
1500: /is+?t/8i
1501: ikt
1502: No match
1503:
1504: /is?t/8i
1505: ikt
1506: No match
1507:
1508: /is{2}t/8i
1509: iskt
1510: No match
1511:
1512: /-- This property is a PCRE special --/
1513:
1514: /^\p{Xuc}/8
1515: $abc
1516: 0: $
1517: @abc
1518: 0: @
1519: `abc
1520: 0: `
1521: \x{1234}abc
1522: 0: \x{1234}
1523: ** Failers
1524: No match
1525: abc
1526: No match
1527:
1528: /^\p{Xuc}+/8
1529: $@`\x{a0}\x{1234}\x{e000}**
1530: 0: $@`\x{a0}\x{1234}\x{e000}
1531: ** Failers
1532: No match
1533: \x{9f}
1534: No match
1535:
1536: /^\p{Xuc}+?/8
1537: $@`\x{a0}\x{1234}\x{e000}**
1538: 0: $
1539: ** Failers
1540: No match
1541: \x{9f}
1542: No match
1543:
1544: /^\p{Xuc}+?\*/8
1545: $@`\x{a0}\x{1234}\x{e000}**
1546: 0: $@`\x{a0}\x{1234}\x{e000}*
1547: ** Failers
1548: No match
1549: \x{9f}
1550: No match
1551:
1552: /^\p{Xuc}++/8
1553: $@`\x{a0}\x{1234}\x{e000}**
1554: 0: $@`\x{a0}\x{1234}\x{e000}
1555: ** Failers
1556: No match
1557: \x{9f}
1558: No match
1559:
1560: /^\p{Xuc}{3,5}/8
1561: $@`\x{a0}\x{1234}\x{e000}**
1562: 0: $@`\x{a0}\x{1234}
1563: ** Failers
1564: No match
1565: \x{9f}
1566: No match
1567:
1568: /^\p{Xuc}{3,5}?/8
1569: $@`\x{a0}\x{1234}\x{e000}**
1570: 0: $@`
1571: ** Failers
1572: No match
1573: \x{9f}
1574: No match
1575:
1576: /^[\p{Xuc}]/8
1577: $@`\x{a0}\x{1234}\x{e000}**
1578: 0: $
1579: ** Failers
1580: No match
1581: \x{9f}
1582: No match
1583:
1584: /^[\p{Xuc}]+/8
1585: $@`\x{a0}\x{1234}\x{e000}**
1586: 0: $@`\x{a0}\x{1234}\x{e000}
1587: ** Failers
1588: No match
1589: \x{9f}
1590: No match
1591:
1592: /^\P{Xuc}/8
1593: abc
1594: 0: a
1595: ** Failers
1596: 0: *
1597: $abc
1598: No match
1599: @abc
1600: No match
1601: `abc
1602: No match
1603: \x{1234}abc
1604: No match
1605:
1606: /^[\P{Xuc}]/8
1607: abc
1608: 0: a
1609: ** Failers
1610: 0: *
1611: $abc
1612: No match
1613: @abc
1614: No match
1615: `abc
1616: No match
1617: \x{1234}abc
1618: No match
1619:
1620: /-- Some auto-possessification tests --/
1621:
1622: /\pN+\z/BZ
1623: ------------------------------------------------------------------
1624: Bra
1625: prop N ++
1626: \z
1627: Ket
1628: End
1629: ------------------------------------------------------------------
1630:
1631: /\PN+\z/BZ
1632: ------------------------------------------------------------------
1633: Bra
1634: notprop N ++
1635: \z
1636: Ket
1637: End
1638: ------------------------------------------------------------------
1639:
1640: /\pN+/BZ
1641: ------------------------------------------------------------------
1642: Bra
1643: prop N ++
1644: Ket
1645: End
1646: ------------------------------------------------------------------
1647:
1648: /\PN+/BZ
1649: ------------------------------------------------------------------
1650: Bra
1651: notprop N ++
1652: Ket
1653: End
1654: ------------------------------------------------------------------
1655:
1656: /\p{Any}+\p{Any} \p{Any}+\P{Any} \p{Any}+\p{L&} \p{Any}+\p{L} \p{Any}+\p{Lu} \p{Any}+\p{Han} \p{Any}+\p{Xan} \p{Any}+\p{Xsp} \p{Any}+\p{Xps} \p{Xwd}+\p{Any} \p{Any}+\p{Xuc}/BWZx
1657: ------------------------------------------------------------------
1658: Bra
1659: prop Any +
1660: prop Any
1661: prop Any +
1662: notprop Any
1663: prop Any +
1664: prop L&
1665: prop Any +
1666: prop L
1667: prop Any +
1668: prop Lu
1669: prop Any +
1670: prop Han
1671: prop Any +
1672: prop Xan
1673: prop Any +
1674: prop Xsp
1675: prop Any +
1676: prop Xps
1677: prop Xwd +
1678: prop Any
1679: prop Any +
1680: prop Xuc
1681: Ket
1682: End
1683: ------------------------------------------------------------------
1684:
1685: /\p{L&}+\p{Any} \p{L&}+\p{L&} \P{L&}+\p{L&} \p{L&}+\p{L} \p{L&}+\p{Lu} \p{L&}+\p{Han} \p{L&}+\p{Xan} \p{L&}+\P{Xan} \p{L&}+\p{Xsp} \p{L&}+\p{Xps} \p{Xwd}+\p{L&} \p{L&}+\p{Xuc}/BWZx
1686: ------------------------------------------------------------------
1687: Bra
1688: prop L& +
1689: prop Any
1690: prop L& +
1691: prop L&
1692: notprop L& ++
1693: prop L&
1694: prop L& +
1695: prop L
1696: prop L& +
1697: prop Lu
1698: prop L& +
1699: prop Han
1700: prop L& +
1701: prop Xan
1702: prop L& ++
1703: notprop Xan
1704: prop L& ++
1705: prop Xsp
1706: prop L& ++
1707: prop Xps
1708: prop Xwd +
1709: prop L&
1710: prop L& +
1711: prop Xuc
1712: Ket
1713: End
1714: ------------------------------------------------------------------
1715:
1716: /\p{N}+\p{Any} \p{N}+\p{L&} \p{N}+\p{L} \p{N}+\P{L} \p{N}+\P{N} \p{N}+\p{Lu} \p{N}+\p{Han} \p{N}+\p{Xan} \p{N}+\p{Xsp} \p{N}+\p{Xps} \p{Xwd}+\p{N} \p{N}+\p{Xuc}/BWZx
1717: ------------------------------------------------------------------
1718: Bra
1719: prop N +
1720: prop Any
1721: prop N +
1722: prop L&
1723: prop N ++
1724: prop L
1725: prop N +
1726: notprop L
1727: prop N ++
1728: notprop N
1729: prop N ++
1730: prop Lu
1731: prop N +
1732: prop Han
1733: prop N +
1734: prop Xan
1735: prop N ++
1736: prop Xsp
1737: prop N ++
1738: prop Xps
1739: prop Xwd +
1740: prop N
1741: prop N +
1742: prop Xuc
1743: Ket
1744: End
1745: ------------------------------------------------------------------
1746:
1747: /\p{Lu}+\p{Any} \p{Lu}+\p{L&} \p{Lu}+\p{L} \p{Lu}+\p{Lu} \P{Lu}+\p{Lu} \p{Lu}+\p{Nd} \p{Lu}+\P{Nd} \p{Lu}+\p{Han} \p{Lu}+\p{Xan} \p{Lu}+\p{Xsp} \p{Lu}+\p{Xps} \p{Xwd}+\p{Lu} \p{Lu}+\p{Xuc}/BWZx
1748: ------------------------------------------------------------------
1749: Bra
1750: prop Lu +
1751: prop Any
1752: prop Lu +
1753: prop L&
1754: prop Lu +
1755: prop L
1756: prop Lu +
1757: prop Lu
1758: notprop Lu ++
1759: prop Lu
1760: prop Lu ++
1761: prop Nd
1762: prop Lu +
1763: notprop Nd
1764: prop Lu +
1765: prop Han
1766: prop Lu +
1767: prop Xan
1768: prop Lu ++
1769: prop Xsp
1770: prop Lu ++
1771: prop Xps
1772: prop Xwd +
1773: prop Lu
1774: prop Lu +
1775: prop Xuc
1776: Ket
1777: End
1778: ------------------------------------------------------------------
1779:
1780: /\p{Han}+\p{Lu} \p{Han}+\p{L&} \p{Han}+\p{L} \p{Han}+\p{Lu} \p{Han}+\p{Arabic} \p{Arabic}+\p{Arabic} \p{Han}+\p{Xan} \p{Han}+\p{Xsp} \p{Han}+\p{Xps} \p{Xwd}+\p{Han} \p{Han}+\p{Xuc}/BWZx
1781: ------------------------------------------------------------------
1782: Bra
1783: prop Han +
1784: prop Lu
1785: prop Han +
1786: prop L&
1787: prop Han +
1788: prop L
1789: prop Han +
1790: prop Lu
1791: prop Han ++
1792: prop Arabic
1793: prop Arabic +
1794: prop Arabic
1795: prop Han +
1796: prop Xan
1797: prop Han +
1798: prop Xsp
1799: prop Han +
1800: prop Xps
1801: prop Xwd +
1802: prop Han
1803: prop Han +
1804: prop Xuc
1805: Ket
1806: End
1807: ------------------------------------------------------------------
1808:
1809: /\p{Xan}+\p{Any} \p{Xan}+\p{L&} \P{Xan}+\p{L&} \p{Xan}+\p{L} \p{Xan}+\p{Lu} \p{Xan}+\p{Han} \p{Xan}+\p{Xan} \p{Xan}+\P{Xan} \p{Xan}+\p{Xsp} \p{Xan}+\p{Xps} \p{Xwd}+\p{Xan} \p{Xan}+\p{Xuc}/BWZx
1810: ------------------------------------------------------------------
1811: Bra
1812: prop Xan +
1813: prop Any
1814: prop Xan +
1815: prop L&
1816: notprop Xan ++
1817: prop L&
1818: prop Xan +
1819: prop L
1820: prop Xan +
1821: prop Lu
1822: prop Xan +
1823: prop Han
1824: prop Xan +
1825: prop Xan
1826: prop Xan ++
1827: notprop Xan
1828: prop Xan ++
1829: prop Xsp
1830: prop Xan ++
1831: prop Xps
1832: prop Xwd +
1833: prop Xan
1834: prop Xan +
1835: prop Xuc
1836: Ket
1837: End
1838: ------------------------------------------------------------------
1839:
1840: /\p{Xsp}+\p{Any} \p{Xsp}+\p{L&} \p{Xsp}+\p{L} \p{Xsp}+\p{Lu} \p{Xsp}+\p{Han} \p{Xsp}+\p{Xan} \p{Xsp}+\p{Xsp} \P{Xsp}+\p{Xsp} \p{Xsp}+\p{Xps} \p{Xwd}+\p{Xsp} \p{Xsp}+\p{Xuc}/BWZx
1841: ------------------------------------------------------------------
1842: Bra
1843: prop Xsp +
1844: prop Any
1845: prop Xsp ++
1846: prop L&
1847: prop Xsp ++
1848: prop L
1849: prop Xsp ++
1850: prop Lu
1851: prop Xsp +
1852: prop Han
1853: prop Xsp ++
1854: prop Xan
1855: prop Xsp +
1856: prop Xsp
1857: notprop Xsp ++
1858: prop Xsp
1859: prop Xsp +
1860: prop Xps
1861: prop Xwd ++
1862: prop Xsp
1863: prop Xsp +
1864: prop Xuc
1865: Ket
1866: End
1867: ------------------------------------------------------------------
1868:
1869: /\p{Xwd}+\p{Any} \p{Xwd}+\p{L&} \p{Xwd}+\p{L} \p{Xwd}+\p{Lu} \p{Xwd}+\p{Han} \p{Xwd}+\p{Xan} \p{Xwd}+\p{Xsp} \p{Xwd}+\p{Xps} \p{Xwd}+\p{Xwd} \p{Xwd}+\P{Xwd} \p{Xwd}+\p{Xuc}/BWZx
1870: ------------------------------------------------------------------
1871: Bra
1872: prop Xwd +
1873: prop Any
1874: prop Xwd +
1875: prop L&
1876: prop Xwd +
1877: prop L
1878: prop Xwd +
1879: prop Lu
1880: prop Xwd +
1881: prop Han
1882: prop Xwd +
1883: prop Xan
1884: prop Xwd ++
1885: prop Xsp
1886: prop Xwd ++
1887: prop Xps
1888: prop Xwd +
1889: prop Xwd
1890: prop Xwd ++
1891: notprop Xwd
1892: prop Xwd +
1893: prop Xuc
1894: Ket
1895: End
1896: ------------------------------------------------------------------
1897:
1898: /\p{Xuc}+\p{Any} \p{Xuc}+\p{L&} \p{Xuc}+\p{L} \p{Xuc}+\p{Lu} \p{Xuc}+\p{Han} \p{Xuc}+\p{Xan} \p{Xuc}+\p{Xsp} \p{Xuc}+\p{Xps} \p{Xwd}+\p{Xuc} \p{Xuc}+\p{Xuc} \p{Xuc}+\P{Xuc}/BWZx
1899: ------------------------------------------------------------------
1900: Bra
1901: prop Xuc +
1902: prop Any
1903: prop Xuc +
1904: prop L&
1905: prop Xuc +
1906: prop L
1907: prop Xuc +
1908: prop Lu
1909: prop Xuc +
1910: prop Han
1911: prop Xuc +
1912: prop Xan
1913: prop Xuc +
1914: prop Xsp
1915: prop Xuc +
1916: prop Xps
1917: prop Xwd +
1918: prop Xuc
1919: prop Xuc +
1920: prop Xuc
1921: prop Xuc ++
1922: notprop Xuc
1923: Ket
1924: End
1925: ------------------------------------------------------------------
1926:
1927: /\p{N}+\p{Ll} \p{N}+\p{Nd} \p{N}+\P{Nd}/BWZx
1928: ------------------------------------------------------------------
1929: Bra
1930: prop N ++
1931: prop Ll
1932: prop N +
1933: prop Nd
1934: prop N +
1935: notprop Nd
1936: Ket
1937: End
1938: ------------------------------------------------------------------
1939:
1940: /\p{Xan}+\p{L} \p{Xan}+\p{N} \p{Xan}+\p{C} \p{Xan}+\P{L} \P{Xan}+\p{N} \p{Xan}+\P{C}/BWZx
1941: ------------------------------------------------------------------
1942: Bra
1943: prop Xan +
1944: prop L
1945: prop Xan +
1946: prop N
1947: prop Xan ++
1948: prop C
1949: prop Xan +
1950: notprop L
1951: notprop Xan ++
1952: prop N
1953: prop Xan +
1954: notprop C
1955: Ket
1956: End
1957: ------------------------------------------------------------------
1958:
1959: /\p{L}+\p{Xan} \p{N}+\p{Xan} \p{C}+\p{Xan} \P{L}+\p{Xan} \p{N}+\p{Xan} \P{C}+\p{Xan} \p{L}+\P{Xan}/BWZx
1960: ------------------------------------------------------------------
1961: Bra
1962: prop L +
1963: prop Xan
1964: prop N +
1965: prop Xan
1966: prop C ++
1967: prop Xan
1968: notprop L +
1969: prop Xan
1970: prop N +
1971: prop Xan
1972: notprop C +
1973: prop Xan
1974: prop L ++
1975: notprop Xan
1976: Ket
1977: End
1978: ------------------------------------------------------------------
1979:
1980: /\p{Xan}+\p{Lu} \p{Xan}+\p{Nd} \p{Xan}+\p{Cc} \p{Xan}+\P{Ll} \P{Xan}+\p{No} \p{Xan}+\P{Cf}/BWZx
1981: ------------------------------------------------------------------
1982: Bra
1983: prop Xan +
1984: prop Lu
1985: prop Xan +
1986: prop Nd
1987: prop Xan ++
1988: prop Cc
1989: prop Xan +
1990: notprop Ll
1991: notprop Xan ++
1992: prop No
1993: prop Xan +
1994: notprop Cf
1995: Ket
1996: End
1997: ------------------------------------------------------------------
1998:
1999: /\p{Lu}+\p{Xan} \p{Nd}+\p{Xan} \p{Cs}+\p{Xan} \P{Lt}+\p{Xan} \p{Nl}+\p{Xan} \P{Cc}+\p{Xan} \p{Lt}+\P{Xan}/BWZx
2000: ------------------------------------------------------------------
2001: Bra
2002: prop Lu +
2003: prop Xan
2004: prop Nd +
2005: prop Xan
2006: prop Cs ++
2007: prop Xan
2008: notprop Lt +
2009: prop Xan
2010: prop Nl +
2011: prop Xan
2012: notprop Cc +
2013: prop Xan
2014: prop Lt ++
2015: notprop Xan
2016: Ket
2017: End
2018: ------------------------------------------------------------------
2019:
2020: /\w+\p{P} \w+\p{Po} \w+\s \p{Xan}+\s \s+\p{Xan} \s+\w/BWZx
2021: ------------------------------------------------------------------
2022: Bra
2023: prop Xwd +
2024: prop P
2025: prop Xwd +
2026: prop Po
2027: prop Xwd ++
2028: prop Xsp
2029: prop Xan ++
2030: prop Xsp
2031: prop Xsp ++
2032: prop Xan
2033: prop Xsp ++
2034: prop Xwd
2035: Ket
2036: End
2037: ------------------------------------------------------------------
2038:
2039: /\w+\P{P} \W+\p{Po} \w+\S \P{Xan}+\s \s+\P{Xan} \s+\W/BWZx
2040: ------------------------------------------------------------------
2041: Bra
2042: prop Xwd +
2043: notprop P
2044: notprop Xwd +
2045: prop Po
2046: prop Xwd +
2047: notprop Xsp
2048: notprop Xan +
2049: prop Xsp
2050: prop Xsp +
2051: notprop Xan
2052: prop Xsp +
2053: notprop Xwd
2054: Ket
2055: End
2056: ------------------------------------------------------------------
2057:
2058: /\w+\p{Po} \w+\p{Pc} \W+\p{Po} \W+\p{Pc} \w+\P{Po} \w+\P{Pc}/BWZx
2059: ------------------------------------------------------------------
2060: Bra
2061: prop Xwd +
2062: prop Po
2063: prop Xwd ++
2064: prop Pc
2065: notprop Xwd +
2066: prop Po
2067: notprop Xwd +
2068: prop Pc
2069: prop Xwd +
2070: notprop Po
2071: prop Xwd +
2072: notprop Pc
2073: Ket
2074: End
2075: ------------------------------------------------------------------
2076:
2077: /\p{Nl}+\p{Xan} \P{Nl}+\p{Xan} \p{Nl}+\P{Xan} \P{Nl}+\P{Xan}/BWZx
2078: ------------------------------------------------------------------
2079: Bra
2080: prop Nl +
2081: prop Xan
2082: notprop Nl +
2083: prop Xan
2084: prop Nl ++
2085: notprop Xan
2086: notprop Nl +
2087: notprop Xan
2088: Ket
2089: End
2090: ------------------------------------------------------------------
2091:
2092: /\p{Xan}+\p{Nl} \P{Xan}+\p{Nl} \p{Xan}+\P{Nl} \P{Xan}+\P{Nl}/BWZx
2093: ------------------------------------------------------------------
2094: Bra
2095: prop Xan +
2096: prop Nl
2097: notprop Xan ++
2098: prop Nl
2099: prop Xan +
2100: notprop Nl
2101: notprop Xan +
2102: notprop Nl
2103: Ket
2104: End
2105: ------------------------------------------------------------------
2106:
2107: /\p{Xan}+\p{Nd} \P{Xan}+\p{Nd} \p{Xan}+\P{Nd} \P{Xan}+\P{Nd}/BWZx
2108: ------------------------------------------------------------------
2109: Bra
2110: prop Xan +
2111: prop Nd
2112: notprop Xan ++
2113: prop Nd
2114: prop Xan +
2115: notprop Nd
2116: notprop Xan +
2117: notprop Nd
2118: Ket
2119: End
2120: ------------------------------------------------------------------
2121:
2122: /-- End auto-possessification tests --/
2123:
2124: /\w+/8CWBZ
2125: ------------------------------------------------------------------
2126: Bra
2127: Callout 255 0 3
2128: prop Xwd ++
2129: Callout 255 3 0
2130: Ket
2131: End
2132: ------------------------------------------------------------------
2133: abcd
2134: --->abcd
2135: +0 ^ \w+
2136: +3 ^ ^
2137: 0: abcd
2138:
2139: /[\p{N}]?+/BZO
2140: ------------------------------------------------------------------
2141: Bra
2142: [\p{N}]?+
2143: Ket
2144: End
2145: ------------------------------------------------------------------
2146:
2147: /[\p{L}ab]{2,3}+/BZO
2148: ------------------------------------------------------------------
2149: Bra
2150: [ab\p{L}]{2,3}+
2151: Ket
2152: End
2153: ------------------------------------------------------------------
2154:
2155: /\D+\X \d+\X \S+\X \s+\X \W+\X \w+\X \C+\X \R+\X \H+\X \h+\X \V+\X \v+\X a+\X \n+\X .+\X/BZx
2156: ------------------------------------------------------------------
2157: Bra
2158: \D+
2159: extuni
2160: \d+
2161: extuni
2162: \S+
2163: extuni
2164: \s+
2165: extuni
2166: \W+
2167: extuni
2168: \w+
2169: extuni
2170: AllAny+
2171: extuni
2172: \R+
2173: extuni
2174: \H+
2175: extuni
2176: \h+
2177: extuni
2178: \V+
2179: extuni
2180: \v+
2181: extuni
2182: a+
2183: extuni
2184: \x0a+
2185: extuni
2186: Any+
2187: extuni
2188: Ket
2189: End
2190: ------------------------------------------------------------------
2191:
2192: /.+\X/BZxs
2193: ------------------------------------------------------------------
2194: Bra
2195: AllAny+
2196: extuni
2197: Ket
2198: End
2199: ------------------------------------------------------------------
2200:
2201: /\X+$/BZxm
2202: ------------------------------------------------------------------
2203: Bra
2204: extuni+
2205: /m $
2206: Ket
2207: End
2208: ------------------------------------------------------------------
2209:
2210: /\X+\D \X+\d \X+\S \X+\s \X+\W \X+\w \X+. \X+\C \X+\R \X+\H \X+\h \X+\V \X+\v \X+\X \X+\Z \X+\z \X+$/BZx
2211: ------------------------------------------------------------------
2212: Bra
2213: extuni+
2214: \D
2215: extuni+
2216: \d
2217: extuni+
2218: \S
2219: extuni+
2220: \s
2221: extuni+
2222: \W
2223: extuni+
2224: \w
2225: extuni+
2226: Any
2227: extuni+
2228: AllAny
2229: extuni+
2230: \R
2231: extuni+
2232: \H
2233: extuni+
2234: \h
2235: extuni+
2236: \V
2237: extuni+
2238: \v
2239: extuni+
2240: extuni
2241: extuni+
2242: \Z
2243: extuni++
2244: \z
2245: extuni+
2246: $
2247: Ket
2248: End
2249: ------------------------------------------------------------------
2250:
2251: /\d+\s{0,5}=\s*\S?=\w{0,4}\W*/8WBZ
2252: ------------------------------------------------------------------
2253: Bra
2254: prop Nd ++
2255: prop Xsp {0,5}+
2256: =
2257: prop Xsp *+
2258: notprop Xsp ?
2259: =
2260: prop Xwd {0,4}+
2261: notprop Xwd *+
2262: Ket
2263: End
2264: ------------------------------------------------------------------
2265:
2266: /-- End of testinput7 --/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>