| 742 |
ac |
ac |
| 743 |
0: |
0: |
| 744 |
|
|
| 745 |
|
/(?>a\Kb)/ |
| 746 |
|
ab |
| 747 |
|
0: b |
| 748 |
|
|
| 749 |
|
/((?>a\Kb))/ |
| 750 |
|
ab |
| 751 |
|
0: b |
| 752 |
|
1: ab |
| 753 |
|
|
| 754 |
|
/(a\Kb)/ |
| 755 |
|
ab |
| 756 |
|
0: b |
| 757 |
|
1: ab |
| 758 |
|
|
| 759 |
|
/^a\Kcz|ac/ |
| 760 |
|
ac |
| 761 |
|
0: ac |
| 762 |
|
|
| 763 |
|
/(?>a\Kbz|ab)/ |
| 764 |
|
ab |
| 765 |
|
0: ab |
| 766 |
|
|
| 767 |
|
/^(?&t)(?(DEFINE)(?<t>a\Kb))$/ |
| 768 |
|
ab |
| 769 |
|
0: b |
| 770 |
|
|
| 771 |
|
/^([^()]|\((?1)*\))*$/ |
| 772 |
|
a(b)c |
| 773 |
|
0: a(b)c |
| 774 |
|
1: c |
| 775 |
|
a(b(c)d)e |
| 776 |
|
0: a(b(c)d)e |
| 777 |
|
1: e |
| 778 |
|
|
| 779 |
|
/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/ |
| 780 |
|
0 |
| 781 |
|
0: 0 |
| 782 |
|
1: 0 |
| 783 |
|
00 |
| 784 |
|
0: 00 |
| 785 |
|
1: 00 |
| 786 |
|
2: 0 |
| 787 |
|
0000 |
| 788 |
|
0: 0000 |
| 789 |
|
1: 0000 |
| 790 |
|
2: 0 |
| 791 |
|
|
| 792 |
|
/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/ |
| 793 |
|
0 |
| 794 |
|
0: 0 |
| 795 |
|
1: 0 |
| 796 |
|
2: 0 |
| 797 |
|
00 |
| 798 |
|
0: 0 |
| 799 |
|
1: 0 |
| 800 |
|
2: 0 |
| 801 |
|
0000 |
| 802 |
|
0: 0 |
| 803 |
|
1: 0 |
| 804 |
|
2: 0 |
| 805 |
|
|
| 806 |
|
/--- This one does fail, as expected, in Perl. It needs the complex item at the |
| 807 |
|
end of the pattern. A single letter instead of (B|D) makes it not fail, |
| 808 |
|
which I think is a Perl bug. --- / |
| 809 |
|
|
| 810 |
|
/A(*COMMIT)(B|D)/ |
| 811 |
|
ACABX |
| 812 |
|
No match |
| 813 |
|
|
| 814 |
|
/--- Check the use of names for failure ---/ |
| 815 |
|
|
| 816 |
|
/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/K |
| 817 |
|
** Failers |
| 818 |
|
No match |
| 819 |
|
AC |
| 820 |
|
No match, mark = A |
| 821 |
|
CB |
| 822 |
|
No match, mark = B |
| 823 |
|
|
| 824 |
|
/(*MARK:A)(*SKIP:B)(C|X)/K |
| 825 |
|
C |
| 826 |
|
0: C |
| 827 |
|
1: C |
| 828 |
|
MK: A |
| 829 |
|
D |
| 830 |
|
No match, mark = A |
| 831 |
|
|
| 832 |
|
/^(A(*THEN:A)B|C(*THEN:B)D)/K |
| 833 |
|
** Failers |
| 834 |
|
No match |
| 835 |
|
CB |
| 836 |
|
No match, mark = B |
| 837 |
|
|
| 838 |
|
/^(?:A(*THEN:A)B|C(*THEN:B)D)/K |
| 839 |
|
CB |
| 840 |
|
No match, mark = B |
| 841 |
|
|
| 842 |
|
/^(?>A(*THEN:A)B|C(*THEN:B)D)/K |
| 843 |
|
CB |
| 844 |
|
No match, mark = B |
| 845 |
|
|
| 846 |
|
/--- This should succeed, as the skip causes bump to offset 1 (the mark). Note |
| 847 |
|
that we have to have something complicated such as (B|Z) at the end because, |
| 848 |
|
for Perl, a simple character somehow causes an unwanted optimization to mess |
| 849 |
|
with the handling of backtracking verbs. ---/ |
| 850 |
|
|
| 851 |
|
/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/xK |
| 852 |
|
AAAC |
| 853 |
|
0: AC |
| 854 |
|
|
| 855 |
|
/--- Test skipping over a non-matching mark. ---/ |
| 856 |
|
|
| 857 |
|
/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/xK |
| 858 |
|
AAAC |
| 859 |
|
0: AC |
| 860 |
|
|
| 861 |
|
/--- Check shorthand for MARK ---/ |
| 862 |
|
|
| 863 |
|
/A(*:A)A+(*SKIP:A)(B|Z) | AC/xK |
| 864 |
|
AAAC |
| 865 |
|
0: AC |
| 866 |
|
|
| 867 |
|
/--- This should succeed, as a non-existent skip name disables the skip ---/ |
| 868 |
|
|
| 869 |
|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/xK |
| 870 |
|
AAAC |
| 871 |
|
0: AC |
| 872 |
|
|
| 873 |
|
/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/xK |
| 874 |
|
AAAC |
| 875 |
|
0: AC |
| 876 |
|
MK: B |
| 877 |
|
|
| 878 |
|
/--- We use something more complicated than individual letters here, because |
| 879 |
|
that causes different behaviour in Perl. Perhaps it disables some optimization; |
| 880 |
|
anyway, the result now matches PCRE in that no tag is passed back for the |
| 881 |
|
failures. ---/ |
| 882 |
|
|
| 883 |
|
/(A|P)(*:A)(B|P) | (X|P)(X|P)(*:B)(Y|P)/xK |
| 884 |
|
AABC |
| 885 |
|
0: AB |
| 886 |
|
1: A |
| 887 |
|
2: B |
| 888 |
|
MK: A |
| 889 |
|
XXYZ |
| 890 |
|
0: XXY |
| 891 |
|
1: <unset> |
| 892 |
|
2: <unset> |
| 893 |
|
3: X |
| 894 |
|
4: X |
| 895 |
|
5: Y |
| 896 |
|
MK: B |
| 897 |
|
** Failers |
| 898 |
|
No match |
| 899 |
|
XAQQ |
| 900 |
|
No match |
| 901 |
|
XAQQXZZ |
| 902 |
|
No match |
| 903 |
|
AXQQQ |
| 904 |
|
No match |
| 905 |
|
AXXQQQ |
| 906 |
|
No match |
| 907 |
|
|
| 908 |
|
/--- COMMIT at the start of a pattern should act like an anchor. Again, |
| 909 |
|
however, we need the complication for Perl. ---/ |
| 910 |
|
|
| 911 |
|
/(*COMMIT)(A|P)(B|P)(C|P)/ |
| 912 |
|
ABCDEFG |
| 913 |
|
0: ABC |
| 914 |
|
1: A |
| 915 |
|
2: B |
| 916 |
|
3: C |
| 917 |
|
** Failers |
| 918 |
|
No match |
| 919 |
|
DEFGABC |
| 920 |
|
No match |
| 921 |
|
|
| 922 |
|
/--- COMMIT inside an atomic group can't stop backtracking over the group. ---/ |
| 923 |
|
|
| 924 |
|
/(\w+)(?>b(*COMMIT))\w{2}/ |
| 925 |
|
abbb |
| 926 |
|
0: abbb |
| 927 |
|
1: a |
| 928 |
|
|
| 929 |
|
/(\w+)b(*COMMIT)\w{2}/ |
| 930 |
|
abbb |
| 931 |
|
No match |
| 932 |
|
|
| 933 |
/-- End of testinput11 --/ |
/-- End of testinput11 --/ |