xref: /aosp_15_r20/external/pcre/testdata/testoutput1 (revision 22dc650d8ae982c6770746019a6f94af92b0f024)
1*22dc650dSSadaf Ebrahimi# This set of tests is for features that are compatible with all versions of
2*22dc650dSSadaf Ebrahimi# Perl >= 5.10, in non-UTF mode. It should run clean for the 8-bit, 16-bit, and
3*22dc650dSSadaf Ebrahimi# 32-bit PCRE libraries, and also using the perltest.sh script.
4*22dc650dSSadaf Ebrahimi
5*22dc650dSSadaf Ebrahimi# WARNING: Use only / as the pattern delimiter. Although pcre2test supports
6*22dc650dSSadaf Ebrahimi# a number of delimiters, all those other than / give problems with the
7*22dc650dSSadaf Ebrahimi# perltest.sh script.
8*22dc650dSSadaf Ebrahimi
9*22dc650dSSadaf Ebrahimi#forbid_utf
10*22dc650dSSadaf Ebrahimi#newline_default lf any anycrlf
11*22dc650dSSadaf Ebrahimi#perltest
12*22dc650dSSadaf Ebrahimi
13*22dc650dSSadaf Ebrahimi/the quick brown fox/
14*22dc650dSSadaf Ebrahimi    the quick brown fox
15*22dc650dSSadaf Ebrahimi 0: the quick brown fox
16*22dc650dSSadaf Ebrahimi    What do you know about the quick brown fox?
17*22dc650dSSadaf Ebrahimi 0: the quick brown fox
18*22dc650dSSadaf Ebrahimi\= Expect no match
19*22dc650dSSadaf Ebrahimi    The quick brown FOX
20*22dc650dSSadaf EbrahimiNo match
21*22dc650dSSadaf Ebrahimi    What do you know about THE QUICK BROWN FOX?
22*22dc650dSSadaf EbrahimiNo match
23*22dc650dSSadaf Ebrahimi
24*22dc650dSSadaf Ebrahimi/The quick brown fox/i
25*22dc650dSSadaf Ebrahimi    the quick brown fox
26*22dc650dSSadaf Ebrahimi 0: the quick brown fox
27*22dc650dSSadaf Ebrahimi    The quick brown FOX
28*22dc650dSSadaf Ebrahimi 0: The quick brown FOX
29*22dc650dSSadaf Ebrahimi    What do you know about the quick brown fox?
30*22dc650dSSadaf Ebrahimi 0: the quick brown fox
31*22dc650dSSadaf Ebrahimi    What do you know about THE QUICK BROWN FOX?
32*22dc650dSSadaf Ebrahimi 0: THE QUICK BROWN FOX
33*22dc650dSSadaf Ebrahimi
34*22dc650dSSadaf Ebrahimi/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
35*22dc650dSSadaf Ebrahimi    abcd\t\n\r\f\a\e9;\$\\?caxyz
36*22dc650dSSadaf Ebrahimi 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
37*22dc650dSSadaf Ebrahimi
38*22dc650dSSadaf Ebrahimi/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
39*22dc650dSSadaf Ebrahimi    abxyzpqrrrabbxyyyypqAzz
40*22dc650dSSadaf Ebrahimi 0: abxyzpqrrrabbxyyyypqAzz
41*22dc650dSSadaf Ebrahimi    abxyzpqrrrabbxyyyypqAzz
42*22dc650dSSadaf Ebrahimi 0: abxyzpqrrrabbxyyyypqAzz
43*22dc650dSSadaf Ebrahimi    aabxyzpqrrrabbxyyyypqAzz
44*22dc650dSSadaf Ebrahimi 0: aabxyzpqrrrabbxyyyypqAzz
45*22dc650dSSadaf Ebrahimi    aaabxyzpqrrrabbxyyyypqAzz
46*22dc650dSSadaf Ebrahimi 0: aaabxyzpqrrrabbxyyyypqAzz
47*22dc650dSSadaf Ebrahimi    aaaabxyzpqrrrabbxyyyypqAzz
48*22dc650dSSadaf Ebrahimi 0: aaaabxyzpqrrrabbxyyyypqAzz
49*22dc650dSSadaf Ebrahimi    abcxyzpqrrrabbxyyyypqAzz
50*22dc650dSSadaf Ebrahimi 0: abcxyzpqrrrabbxyyyypqAzz
51*22dc650dSSadaf Ebrahimi    aabcxyzpqrrrabbxyyyypqAzz
52*22dc650dSSadaf Ebrahimi 0: aabcxyzpqrrrabbxyyyypqAzz
53*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypAzz
54*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypAzz
55*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqAzz
56*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypqAzz
57*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqAzz
58*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypqqAzz
59*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqAzz
60*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypqqqAzz
61*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqAzz
62*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
63*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqqAzz
64*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
65*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqqqAzz
66*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
67*22dc650dSSadaf Ebrahimi    aaaabcxyzpqrrrabbxyyyypqAzz
68*22dc650dSSadaf Ebrahimi 0: aaaabcxyzpqrrrabbxyyyypqAzz
69*22dc650dSSadaf Ebrahimi    abxyzzpqrrrabbxyyyypqAzz
70*22dc650dSSadaf Ebrahimi 0: abxyzzpqrrrabbxyyyypqAzz
71*22dc650dSSadaf Ebrahimi    aabxyzzzpqrrrabbxyyyypqAzz
72*22dc650dSSadaf Ebrahimi 0: aabxyzzzpqrrrabbxyyyypqAzz
73*22dc650dSSadaf Ebrahimi    aaabxyzzzzpqrrrabbxyyyypqAzz
74*22dc650dSSadaf Ebrahimi 0: aaabxyzzzzpqrrrabbxyyyypqAzz
75*22dc650dSSadaf Ebrahimi    aaaabxyzzzzpqrrrabbxyyyypqAzz
76*22dc650dSSadaf Ebrahimi 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
77*22dc650dSSadaf Ebrahimi    abcxyzzpqrrrabbxyyyypqAzz
78*22dc650dSSadaf Ebrahimi 0: abcxyzzpqrrrabbxyyyypqAzz
79*22dc650dSSadaf Ebrahimi    aabcxyzzzpqrrrabbxyyyypqAzz
80*22dc650dSSadaf Ebrahimi 0: aabcxyzzzpqrrrabbxyyyypqAzz
81*22dc650dSSadaf Ebrahimi    aaabcxyzzzzpqrrrabbxyyyypqAzz
82*22dc650dSSadaf Ebrahimi 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
83*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbxyyyypqAzz
84*22dc650dSSadaf Ebrahimi 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
85*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyyypqAzz
86*22dc650dSSadaf Ebrahimi 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
87*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
88*22dc650dSSadaf Ebrahimi 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
89*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypABzz
90*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypABzz
91*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypABBzz
92*22dc650dSSadaf Ebrahimi 0: aaabcxyzpqrrrabbxyyyypABBzz
93*22dc650dSSadaf Ebrahimi    >>>aaabxyzpqrrrabbxyyyypqAzz
94*22dc650dSSadaf Ebrahimi 0: aaabxyzpqrrrabbxyyyypqAzz
95*22dc650dSSadaf Ebrahimi    >aaaabxyzpqrrrabbxyyyypqAzz
96*22dc650dSSadaf Ebrahimi 0: aaaabxyzpqrrrabbxyyyypqAzz
97*22dc650dSSadaf Ebrahimi    >>>>abcxyzpqrrrabbxyyyypqAzz
98*22dc650dSSadaf Ebrahimi 0: abcxyzpqrrrabbxyyyypqAzz
99*22dc650dSSadaf Ebrahimi\= Expect no match
100*22dc650dSSadaf Ebrahimi    abxyzpqrrabbxyyyypqAzz
101*22dc650dSSadaf EbrahimiNo match
102*22dc650dSSadaf Ebrahimi    abxyzpqrrrrabbxyyyypqAzz
103*22dc650dSSadaf EbrahimiNo match
104*22dc650dSSadaf Ebrahimi    abxyzpqrrrabxyyyypqAzz
105*22dc650dSSadaf EbrahimiNo match
106*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
107*22dc650dSSadaf EbrahimiNo match
108*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyypqAzz
109*22dc650dSSadaf EbrahimiNo match
110*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
111*22dc650dSSadaf EbrahimiNo match
112*22dc650dSSadaf Ebrahimi
113*22dc650dSSadaf Ebrahimi/^(abc){1,2}zz/
114*22dc650dSSadaf Ebrahimi    abczz
115*22dc650dSSadaf Ebrahimi 0: abczz
116*22dc650dSSadaf Ebrahimi 1: abc
117*22dc650dSSadaf Ebrahimi    abcabczz
118*22dc650dSSadaf Ebrahimi 0: abcabczz
119*22dc650dSSadaf Ebrahimi 1: abc
120*22dc650dSSadaf Ebrahimi\= Expect no match
121*22dc650dSSadaf Ebrahimi    zz
122*22dc650dSSadaf EbrahimiNo match
123*22dc650dSSadaf Ebrahimi    abcabcabczz
124*22dc650dSSadaf EbrahimiNo match
125*22dc650dSSadaf Ebrahimi    >>abczz
126*22dc650dSSadaf EbrahimiNo match
127*22dc650dSSadaf Ebrahimi
128*22dc650dSSadaf Ebrahimi/^(b+?|a){1,2}?c/
129*22dc650dSSadaf Ebrahimi    bc
130*22dc650dSSadaf Ebrahimi 0: bc
131*22dc650dSSadaf Ebrahimi 1: b
132*22dc650dSSadaf Ebrahimi    bbc
133*22dc650dSSadaf Ebrahimi 0: bbc
134*22dc650dSSadaf Ebrahimi 1: b
135*22dc650dSSadaf Ebrahimi    bbbc
136*22dc650dSSadaf Ebrahimi 0: bbbc
137*22dc650dSSadaf Ebrahimi 1: bb
138*22dc650dSSadaf Ebrahimi    bac
139*22dc650dSSadaf Ebrahimi 0: bac
140*22dc650dSSadaf Ebrahimi 1: a
141*22dc650dSSadaf Ebrahimi    bbac
142*22dc650dSSadaf Ebrahimi 0: bbac
143*22dc650dSSadaf Ebrahimi 1: a
144*22dc650dSSadaf Ebrahimi    aac
145*22dc650dSSadaf Ebrahimi 0: aac
146*22dc650dSSadaf Ebrahimi 1: a
147*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbc
148*22dc650dSSadaf Ebrahimi 0: abbbbbbbbbbbc
149*22dc650dSSadaf Ebrahimi 1: bbbbbbbbbbb
150*22dc650dSSadaf Ebrahimi    bbbbbbbbbbbac
151*22dc650dSSadaf Ebrahimi 0: bbbbbbbbbbbac
152*22dc650dSSadaf Ebrahimi 1: a
153*22dc650dSSadaf Ebrahimi\= Expect no match
154*22dc650dSSadaf Ebrahimi    aaac
155*22dc650dSSadaf EbrahimiNo match
156*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbac
157*22dc650dSSadaf EbrahimiNo match
158*22dc650dSSadaf Ebrahimi
159*22dc650dSSadaf Ebrahimi/^(b+|a){1,2}c/
160*22dc650dSSadaf Ebrahimi    bc
161*22dc650dSSadaf Ebrahimi 0: bc
162*22dc650dSSadaf Ebrahimi 1: b
163*22dc650dSSadaf Ebrahimi    bbc
164*22dc650dSSadaf Ebrahimi 0: bbc
165*22dc650dSSadaf Ebrahimi 1: bb
166*22dc650dSSadaf Ebrahimi    bbbc
167*22dc650dSSadaf Ebrahimi 0: bbbc
168*22dc650dSSadaf Ebrahimi 1: bbb
169*22dc650dSSadaf Ebrahimi    bac
170*22dc650dSSadaf Ebrahimi 0: bac
171*22dc650dSSadaf Ebrahimi 1: a
172*22dc650dSSadaf Ebrahimi    bbac
173*22dc650dSSadaf Ebrahimi 0: bbac
174*22dc650dSSadaf Ebrahimi 1: a
175*22dc650dSSadaf Ebrahimi    aac
176*22dc650dSSadaf Ebrahimi 0: aac
177*22dc650dSSadaf Ebrahimi 1: a
178*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbc
179*22dc650dSSadaf Ebrahimi 0: abbbbbbbbbbbc
180*22dc650dSSadaf Ebrahimi 1: bbbbbbbbbbb
181*22dc650dSSadaf Ebrahimi    bbbbbbbbbbbac
182*22dc650dSSadaf Ebrahimi 0: bbbbbbbbbbbac
183*22dc650dSSadaf Ebrahimi 1: a
184*22dc650dSSadaf Ebrahimi\= Expect no match
185*22dc650dSSadaf Ebrahimi    aaac
186*22dc650dSSadaf EbrahimiNo match
187*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbac
188*22dc650dSSadaf EbrahimiNo match
189*22dc650dSSadaf Ebrahimi
190*22dc650dSSadaf Ebrahimi/^(ba|b*){1,2}?bc/
191*22dc650dSSadaf Ebrahimi    babc
192*22dc650dSSadaf Ebrahimi 0: babc
193*22dc650dSSadaf Ebrahimi 1: ba
194*22dc650dSSadaf Ebrahimi    bbabc
195*22dc650dSSadaf Ebrahimi 0: bbabc
196*22dc650dSSadaf Ebrahimi 1: ba
197*22dc650dSSadaf Ebrahimi    bababc
198*22dc650dSSadaf Ebrahimi 0: bababc
199*22dc650dSSadaf Ebrahimi 1: ba
200*22dc650dSSadaf Ebrahimi\= Expect no match
201*22dc650dSSadaf Ebrahimi    bababbc
202*22dc650dSSadaf EbrahimiNo match
203*22dc650dSSadaf Ebrahimi    babababc
204*22dc650dSSadaf EbrahimiNo match
205*22dc650dSSadaf Ebrahimi
206*22dc650dSSadaf Ebrahimi/^\ca\cA\c[;\c:/
207*22dc650dSSadaf Ebrahimi    \x01\x01\e;z
208*22dc650dSSadaf Ebrahimi 0: \x01\x01\x1b;z
209*22dc650dSSadaf Ebrahimi
210*22dc650dSSadaf Ebrahimi/^[ab\]cde]/
211*22dc650dSSadaf Ebrahimi    athing
212*22dc650dSSadaf Ebrahimi 0: a
213*22dc650dSSadaf Ebrahimi    bthing
214*22dc650dSSadaf Ebrahimi 0: b
215*22dc650dSSadaf Ebrahimi    ]thing
216*22dc650dSSadaf Ebrahimi 0: ]
217*22dc650dSSadaf Ebrahimi    cthing
218*22dc650dSSadaf Ebrahimi 0: c
219*22dc650dSSadaf Ebrahimi    dthing
220*22dc650dSSadaf Ebrahimi 0: d
221*22dc650dSSadaf Ebrahimi    ething
222*22dc650dSSadaf Ebrahimi 0: e
223*22dc650dSSadaf Ebrahimi\= Expect no match
224*22dc650dSSadaf Ebrahimi    fthing
225*22dc650dSSadaf EbrahimiNo match
226*22dc650dSSadaf Ebrahimi    [thing
227*22dc650dSSadaf EbrahimiNo match
228*22dc650dSSadaf Ebrahimi    \\thing
229*22dc650dSSadaf EbrahimiNo match
230*22dc650dSSadaf Ebrahimi
231*22dc650dSSadaf Ebrahimi/^[]cde]/
232*22dc650dSSadaf Ebrahimi    ]thing
233*22dc650dSSadaf Ebrahimi 0: ]
234*22dc650dSSadaf Ebrahimi    cthing
235*22dc650dSSadaf Ebrahimi 0: c
236*22dc650dSSadaf Ebrahimi    dthing
237*22dc650dSSadaf Ebrahimi 0: d
238*22dc650dSSadaf Ebrahimi    ething
239*22dc650dSSadaf Ebrahimi 0: e
240*22dc650dSSadaf Ebrahimi\= Expect no match
241*22dc650dSSadaf Ebrahimi    athing
242*22dc650dSSadaf EbrahimiNo match
243*22dc650dSSadaf Ebrahimi    fthing
244*22dc650dSSadaf EbrahimiNo match
245*22dc650dSSadaf Ebrahimi
246*22dc650dSSadaf Ebrahimi/^[^ab\]cde]/
247*22dc650dSSadaf Ebrahimi    fthing
248*22dc650dSSadaf Ebrahimi 0: f
249*22dc650dSSadaf Ebrahimi    [thing
250*22dc650dSSadaf Ebrahimi 0: [
251*22dc650dSSadaf Ebrahimi    \\thing
252*22dc650dSSadaf Ebrahimi 0: \
253*22dc650dSSadaf Ebrahimi\= Expect no match
254*22dc650dSSadaf Ebrahimi    athing
255*22dc650dSSadaf EbrahimiNo match
256*22dc650dSSadaf Ebrahimi    bthing
257*22dc650dSSadaf EbrahimiNo match
258*22dc650dSSadaf Ebrahimi    ]thing
259*22dc650dSSadaf EbrahimiNo match
260*22dc650dSSadaf Ebrahimi    cthing
261*22dc650dSSadaf EbrahimiNo match
262*22dc650dSSadaf Ebrahimi    dthing
263*22dc650dSSadaf EbrahimiNo match
264*22dc650dSSadaf Ebrahimi    ething
265*22dc650dSSadaf EbrahimiNo match
266*22dc650dSSadaf Ebrahimi
267*22dc650dSSadaf Ebrahimi/^[^]cde]/
268*22dc650dSSadaf Ebrahimi    athing
269*22dc650dSSadaf Ebrahimi 0: a
270*22dc650dSSadaf Ebrahimi    fthing
271*22dc650dSSadaf Ebrahimi 0: f
272*22dc650dSSadaf Ebrahimi\= Expect no match
273*22dc650dSSadaf Ebrahimi    ]thing
274*22dc650dSSadaf EbrahimiNo match
275*22dc650dSSadaf Ebrahimi    cthing
276*22dc650dSSadaf EbrahimiNo match
277*22dc650dSSadaf Ebrahimi    dthing
278*22dc650dSSadaf EbrahimiNo match
279*22dc650dSSadaf Ebrahimi    ething
280*22dc650dSSadaf EbrahimiNo match
281*22dc650dSSadaf Ebrahimi
282*22dc650dSSadaf Ebrahimi/^\�/
283*22dc650dSSadaf Ebrahimi284*22dc650dSSadaf Ebrahimi 0: \x81
285*22dc650dSSadaf Ebrahimi
286*22dc650dSSadaf Ebrahimi/^�/
287*22dc650dSSadaf Ebrahimi288*22dc650dSSadaf Ebrahimi 0: \xff
289*22dc650dSSadaf Ebrahimi
290*22dc650dSSadaf Ebrahimi/^[0-9]+$/
291*22dc650dSSadaf Ebrahimi    0
292*22dc650dSSadaf Ebrahimi 0: 0
293*22dc650dSSadaf Ebrahimi    1
294*22dc650dSSadaf Ebrahimi 0: 1
295*22dc650dSSadaf Ebrahimi    2
296*22dc650dSSadaf Ebrahimi 0: 2
297*22dc650dSSadaf Ebrahimi    3
298*22dc650dSSadaf Ebrahimi 0: 3
299*22dc650dSSadaf Ebrahimi    4
300*22dc650dSSadaf Ebrahimi 0: 4
301*22dc650dSSadaf Ebrahimi    5
302*22dc650dSSadaf Ebrahimi 0: 5
303*22dc650dSSadaf Ebrahimi    6
304*22dc650dSSadaf Ebrahimi 0: 6
305*22dc650dSSadaf Ebrahimi    7
306*22dc650dSSadaf Ebrahimi 0: 7
307*22dc650dSSadaf Ebrahimi    8
308*22dc650dSSadaf Ebrahimi 0: 8
309*22dc650dSSadaf Ebrahimi    9
310*22dc650dSSadaf Ebrahimi 0: 9
311*22dc650dSSadaf Ebrahimi    10
312*22dc650dSSadaf Ebrahimi 0: 10
313*22dc650dSSadaf Ebrahimi    100
314*22dc650dSSadaf Ebrahimi 0: 100
315*22dc650dSSadaf Ebrahimi\= Expect no match
316*22dc650dSSadaf Ebrahimi    abc
317*22dc650dSSadaf EbrahimiNo match
318*22dc650dSSadaf Ebrahimi
319*22dc650dSSadaf Ebrahimi/^.*nter/
320*22dc650dSSadaf Ebrahimi    enter
321*22dc650dSSadaf Ebrahimi 0: enter
322*22dc650dSSadaf Ebrahimi    inter
323*22dc650dSSadaf Ebrahimi 0: inter
324*22dc650dSSadaf Ebrahimi    uponter
325*22dc650dSSadaf Ebrahimi 0: uponter
326*22dc650dSSadaf Ebrahimi
327*22dc650dSSadaf Ebrahimi/^xxx[0-9]+$/
328*22dc650dSSadaf Ebrahimi    xxx0
329*22dc650dSSadaf Ebrahimi 0: xxx0
330*22dc650dSSadaf Ebrahimi    xxx1234
331*22dc650dSSadaf Ebrahimi 0: xxx1234
332*22dc650dSSadaf Ebrahimi\= Expect no match
333*22dc650dSSadaf Ebrahimi    xxx
334*22dc650dSSadaf EbrahimiNo match
335*22dc650dSSadaf Ebrahimi
336*22dc650dSSadaf Ebrahimi/^.+[0-9][0-9][0-9]$/
337*22dc650dSSadaf Ebrahimi    x123
338*22dc650dSSadaf Ebrahimi 0: x123
339*22dc650dSSadaf Ebrahimi    x1234
340*22dc650dSSadaf Ebrahimi 0: x1234
341*22dc650dSSadaf Ebrahimi    xx123
342*22dc650dSSadaf Ebrahimi 0: xx123
343*22dc650dSSadaf Ebrahimi    123456
344*22dc650dSSadaf Ebrahimi 0: 123456
345*22dc650dSSadaf Ebrahimi\= Expect no match
346*22dc650dSSadaf Ebrahimi    123
347*22dc650dSSadaf EbrahimiNo match
348*22dc650dSSadaf Ebrahimi
349*22dc650dSSadaf Ebrahimi/^.+?[0-9][0-9][0-9]$/
350*22dc650dSSadaf Ebrahimi    x123
351*22dc650dSSadaf Ebrahimi 0: x123
352*22dc650dSSadaf Ebrahimi    x1234
353*22dc650dSSadaf Ebrahimi 0: x1234
354*22dc650dSSadaf Ebrahimi    xx123
355*22dc650dSSadaf Ebrahimi 0: xx123
356*22dc650dSSadaf Ebrahimi    123456
357*22dc650dSSadaf Ebrahimi 0: 123456
358*22dc650dSSadaf Ebrahimi\= Expect no match
359*22dc650dSSadaf Ebrahimi    123
360*22dc650dSSadaf EbrahimiNo match
361*22dc650dSSadaf Ebrahimi
362*22dc650dSSadaf Ebrahimi/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
363*22dc650dSSadaf Ebrahimi    abc!pqr=apquxz.ixr.zzz.ac.uk
364*22dc650dSSadaf Ebrahimi 0: abc!pqr=apquxz.ixr.zzz.ac.uk
365*22dc650dSSadaf Ebrahimi 1: abc
366*22dc650dSSadaf Ebrahimi 2: pqr
367*22dc650dSSadaf Ebrahimi\= Expect no match
368*22dc650dSSadaf Ebrahimi    !pqr=apquxz.ixr.zzz.ac.uk
369*22dc650dSSadaf EbrahimiNo match
370*22dc650dSSadaf Ebrahimi    abc!=apquxz.ixr.zzz.ac.uk
371*22dc650dSSadaf EbrahimiNo match
372*22dc650dSSadaf Ebrahimi    abc!pqr=apquxz:ixr.zzz.ac.uk
373*22dc650dSSadaf EbrahimiNo match
374*22dc650dSSadaf Ebrahimi    abc!pqr=apquxz.ixr.zzz.ac.ukk
375*22dc650dSSadaf EbrahimiNo match
376*22dc650dSSadaf Ebrahimi
377*22dc650dSSadaf Ebrahimi/:/
378*22dc650dSSadaf Ebrahimi    Well, we need a colon: somewhere
379*22dc650dSSadaf Ebrahimi 0: :
380*22dc650dSSadaf Ebrahimi\= Expect no match
381*22dc650dSSadaf Ebrahimi    Fail without a colon
382*22dc650dSSadaf EbrahimiNo match
383*22dc650dSSadaf Ebrahimi
384*22dc650dSSadaf Ebrahimi/([\da-f:]+)$/i
385*22dc650dSSadaf Ebrahimi    0abc
386*22dc650dSSadaf Ebrahimi 0: 0abc
387*22dc650dSSadaf Ebrahimi 1: 0abc
388*22dc650dSSadaf Ebrahimi    abc
389*22dc650dSSadaf Ebrahimi 0: abc
390*22dc650dSSadaf Ebrahimi 1: abc
391*22dc650dSSadaf Ebrahimi    fed
392*22dc650dSSadaf Ebrahimi 0: fed
393*22dc650dSSadaf Ebrahimi 1: fed
394*22dc650dSSadaf Ebrahimi    E
395*22dc650dSSadaf Ebrahimi 0: E
396*22dc650dSSadaf Ebrahimi 1: E
397*22dc650dSSadaf Ebrahimi    ::
398*22dc650dSSadaf Ebrahimi 0: ::
399*22dc650dSSadaf Ebrahimi 1: ::
400*22dc650dSSadaf Ebrahimi    5f03:12C0::932e
401*22dc650dSSadaf Ebrahimi 0: 5f03:12C0::932e
402*22dc650dSSadaf Ebrahimi 1: 5f03:12C0::932e
403*22dc650dSSadaf Ebrahimi    fed def
404*22dc650dSSadaf Ebrahimi 0: def
405*22dc650dSSadaf Ebrahimi 1: def
406*22dc650dSSadaf Ebrahimi    Any old stuff
407*22dc650dSSadaf Ebrahimi 0: ff
408*22dc650dSSadaf Ebrahimi 1: ff
409*22dc650dSSadaf Ebrahimi\= Expect no match
410*22dc650dSSadaf Ebrahimi    0zzz
411*22dc650dSSadaf EbrahimiNo match
412*22dc650dSSadaf Ebrahimi    gzzz
413*22dc650dSSadaf EbrahimiNo match
414*22dc650dSSadaf Ebrahimi    fed\x20
415*22dc650dSSadaf EbrahimiNo match
416*22dc650dSSadaf Ebrahimi    Any old rubbish
417*22dc650dSSadaf EbrahimiNo match
418*22dc650dSSadaf Ebrahimi
419*22dc650dSSadaf Ebrahimi/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
420*22dc650dSSadaf Ebrahimi    .1.2.3
421*22dc650dSSadaf Ebrahimi 0: .1.2.3
422*22dc650dSSadaf Ebrahimi 1: 1
423*22dc650dSSadaf Ebrahimi 2: 2
424*22dc650dSSadaf Ebrahimi 3: 3
425*22dc650dSSadaf Ebrahimi    A.12.123.0
426*22dc650dSSadaf Ebrahimi 0: A.12.123.0
427*22dc650dSSadaf Ebrahimi 1: 12
428*22dc650dSSadaf Ebrahimi 2: 123
429*22dc650dSSadaf Ebrahimi 3: 0
430*22dc650dSSadaf Ebrahimi\= Expect no match
431*22dc650dSSadaf Ebrahimi    .1.2.3333
432*22dc650dSSadaf EbrahimiNo match
433*22dc650dSSadaf Ebrahimi    1.2.3
434*22dc650dSSadaf EbrahimiNo match
435*22dc650dSSadaf Ebrahimi    1234.2.3
436*22dc650dSSadaf EbrahimiNo match
437*22dc650dSSadaf Ebrahimi
438*22dc650dSSadaf Ebrahimi/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
439*22dc650dSSadaf Ebrahimi    1 IN SOA non-sp1 non-sp2(
440*22dc650dSSadaf Ebrahimi 0: 1 IN SOA non-sp1 non-sp2(
441*22dc650dSSadaf Ebrahimi 1: 1
442*22dc650dSSadaf Ebrahimi 2: non-sp1
443*22dc650dSSadaf Ebrahimi 3: non-sp2
444*22dc650dSSadaf Ebrahimi    1    IN    SOA    non-sp1    non-sp2   (
445*22dc650dSSadaf Ebrahimi 0: 1    IN    SOA    non-sp1    non-sp2   (
446*22dc650dSSadaf Ebrahimi 1: 1
447*22dc650dSSadaf Ebrahimi 2: non-sp1
448*22dc650dSSadaf Ebrahimi 3: non-sp2
449*22dc650dSSadaf Ebrahimi\= Expect no match
450*22dc650dSSadaf Ebrahimi    1IN SOA non-sp1 non-sp2(
451*22dc650dSSadaf EbrahimiNo match
452*22dc650dSSadaf Ebrahimi
453*22dc650dSSadaf Ebrahimi/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
454*22dc650dSSadaf Ebrahimi    a.
455*22dc650dSSadaf Ebrahimi 0: a.
456*22dc650dSSadaf Ebrahimi    Z.
457*22dc650dSSadaf Ebrahimi 0: Z.
458*22dc650dSSadaf Ebrahimi    2.
459*22dc650dSSadaf Ebrahimi 0: 2.
460*22dc650dSSadaf Ebrahimi    ab-c.pq-r.
461*22dc650dSSadaf Ebrahimi 0: ab-c.pq-r.
462*22dc650dSSadaf Ebrahimi 1: .pq-r
463*22dc650dSSadaf Ebrahimi    sxk.zzz.ac.uk.
464*22dc650dSSadaf Ebrahimi 0: sxk.zzz.ac.uk.
465*22dc650dSSadaf Ebrahimi 1: .uk
466*22dc650dSSadaf Ebrahimi    x-.y-.
467*22dc650dSSadaf Ebrahimi 0: x-.y-.
468*22dc650dSSadaf Ebrahimi 1: .y-
469*22dc650dSSadaf Ebrahimi\= Expect no match
470*22dc650dSSadaf Ebrahimi    -abc.peq.
471*22dc650dSSadaf EbrahimiNo match
472*22dc650dSSadaf Ebrahimi
473*22dc650dSSadaf Ebrahimi/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
474*22dc650dSSadaf Ebrahimi    *.a
475*22dc650dSSadaf Ebrahimi 0: *.a
476*22dc650dSSadaf Ebrahimi    *.b0-a
477*22dc650dSSadaf Ebrahimi 0: *.b0-a
478*22dc650dSSadaf Ebrahimi 1: 0-a
479*22dc650dSSadaf Ebrahimi    *.c3-b.c
480*22dc650dSSadaf Ebrahimi 0: *.c3-b.c
481*22dc650dSSadaf Ebrahimi 1: 3-b
482*22dc650dSSadaf Ebrahimi 2: .c
483*22dc650dSSadaf Ebrahimi    *.c-a.b-c
484*22dc650dSSadaf Ebrahimi 0: *.c-a.b-c
485*22dc650dSSadaf Ebrahimi 1: -a
486*22dc650dSSadaf Ebrahimi 2: .b-c
487*22dc650dSSadaf Ebrahimi 3: -c
488*22dc650dSSadaf Ebrahimi\= Expect no match
489*22dc650dSSadaf Ebrahimi    *.0
490*22dc650dSSadaf EbrahimiNo match
491*22dc650dSSadaf Ebrahimi    *.a-
492*22dc650dSSadaf EbrahimiNo match
493*22dc650dSSadaf Ebrahimi    *.a-b.c-
494*22dc650dSSadaf EbrahimiNo match
495*22dc650dSSadaf Ebrahimi    *.c-a.0-c
496*22dc650dSSadaf EbrahimiNo match
497*22dc650dSSadaf Ebrahimi
498*22dc650dSSadaf Ebrahimi/^(?=ab(de))(abd)(e)/
499*22dc650dSSadaf Ebrahimi    abde
500*22dc650dSSadaf Ebrahimi 0: abde
501*22dc650dSSadaf Ebrahimi 1: de
502*22dc650dSSadaf Ebrahimi 2: abd
503*22dc650dSSadaf Ebrahimi 3: e
504*22dc650dSSadaf Ebrahimi
505*22dc650dSSadaf Ebrahimi/^(?!(ab)de|x)(abd)(f)/
506*22dc650dSSadaf Ebrahimi    abdf
507*22dc650dSSadaf Ebrahimi 0: abdf
508*22dc650dSSadaf Ebrahimi 1: <unset>
509*22dc650dSSadaf Ebrahimi 2: abd
510*22dc650dSSadaf Ebrahimi 3: f
511*22dc650dSSadaf Ebrahimi
512*22dc650dSSadaf Ebrahimi/^(?=(ab(cd)))(ab)/
513*22dc650dSSadaf Ebrahimi    abcd
514*22dc650dSSadaf Ebrahimi 0: ab
515*22dc650dSSadaf Ebrahimi 1: abcd
516*22dc650dSSadaf Ebrahimi 2: cd
517*22dc650dSSadaf Ebrahimi 3: ab
518*22dc650dSSadaf Ebrahimi
519*22dc650dSSadaf Ebrahimi/^[\da-f](\.[\da-f])*$/i
520*22dc650dSSadaf Ebrahimi    a.b.c.d
521*22dc650dSSadaf Ebrahimi 0: a.b.c.d
522*22dc650dSSadaf Ebrahimi 1: .d
523*22dc650dSSadaf Ebrahimi    A.B.C.D
524*22dc650dSSadaf Ebrahimi 0: A.B.C.D
525*22dc650dSSadaf Ebrahimi 1: .D
526*22dc650dSSadaf Ebrahimi    a.b.c.1.2.3.C
527*22dc650dSSadaf Ebrahimi 0: a.b.c.1.2.3.C
528*22dc650dSSadaf Ebrahimi 1: .C
529*22dc650dSSadaf Ebrahimi
530*22dc650dSSadaf Ebrahimi/^\".*\"\s*(;.*)?$/
531*22dc650dSSadaf Ebrahimi    \"1234\"
532*22dc650dSSadaf Ebrahimi 0: "1234"
533*22dc650dSSadaf Ebrahimi    \"abcd\" ;
534*22dc650dSSadaf Ebrahimi 0: "abcd" ;
535*22dc650dSSadaf Ebrahimi 1: ;
536*22dc650dSSadaf Ebrahimi    \"\" ; rhubarb
537*22dc650dSSadaf Ebrahimi 0: "" ; rhubarb
538*22dc650dSSadaf Ebrahimi 1: ; rhubarb
539*22dc650dSSadaf Ebrahimi\= Expect no match
540*22dc650dSSadaf Ebrahimi    \"1234\" : things
541*22dc650dSSadaf EbrahimiNo match
542*22dc650dSSadaf Ebrahimi
543*22dc650dSSadaf Ebrahimi/^$/
544*22dc650dSSadaf Ebrahimi    \
545*22dc650dSSadaf Ebrahimi 0:
546*22dc650dSSadaf Ebrahimi\= Expect no match
547*22dc650dSSadaf Ebrahimi    A non-empty line
548*22dc650dSSadaf EbrahimiNo match
549*22dc650dSSadaf Ebrahimi
550*22dc650dSSadaf Ebrahimi/   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
551*22dc650dSSadaf Ebrahimi    ab c
552*22dc650dSSadaf Ebrahimi 0: ab c
553*22dc650dSSadaf Ebrahimi\= Expect no match
554*22dc650dSSadaf Ebrahimi    abc
555*22dc650dSSadaf EbrahimiNo match
556*22dc650dSSadaf Ebrahimi    ab cde
557*22dc650dSSadaf EbrahimiNo match
558*22dc650dSSadaf Ebrahimi
559*22dc650dSSadaf Ebrahimi/(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
560*22dc650dSSadaf Ebrahimi    ab c
561*22dc650dSSadaf Ebrahimi 0: ab c
562*22dc650dSSadaf Ebrahimi\= Expect no match
563*22dc650dSSadaf Ebrahimi    abc
564*22dc650dSSadaf EbrahimiNo match
565*22dc650dSSadaf Ebrahimi    ab cde
566*22dc650dSSadaf EbrahimiNo match
567*22dc650dSSadaf Ebrahimi
568*22dc650dSSadaf Ebrahimi/^   a\ b[c ]d       $/x
569*22dc650dSSadaf Ebrahimi    a bcd
570*22dc650dSSadaf Ebrahimi 0: a bcd
571*22dc650dSSadaf Ebrahimi    a b d
572*22dc650dSSadaf Ebrahimi 0: a b d
573*22dc650dSSadaf Ebrahimi\= Expect no match
574*22dc650dSSadaf Ebrahimi    abcd
575*22dc650dSSadaf EbrahimiNo match
576*22dc650dSSadaf Ebrahimi    ab d
577*22dc650dSSadaf EbrahimiNo match
578*22dc650dSSadaf Ebrahimi
579*22dc650dSSadaf Ebrahimi/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
580*22dc650dSSadaf Ebrahimi    abcdefhijklm
581*22dc650dSSadaf Ebrahimi 0: abcdefhijklm
582*22dc650dSSadaf Ebrahimi 1: abc
583*22dc650dSSadaf Ebrahimi 2: bc
584*22dc650dSSadaf Ebrahimi 3: c
585*22dc650dSSadaf Ebrahimi 4: def
586*22dc650dSSadaf Ebrahimi 5: ef
587*22dc650dSSadaf Ebrahimi 6: f
588*22dc650dSSadaf Ebrahimi 7: hij
589*22dc650dSSadaf Ebrahimi 8: ij
590*22dc650dSSadaf Ebrahimi 9: j
591*22dc650dSSadaf Ebrahimi10: klm
592*22dc650dSSadaf Ebrahimi11: lm
593*22dc650dSSadaf Ebrahimi12: m
594*22dc650dSSadaf Ebrahimi
595*22dc650dSSadaf Ebrahimi/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
596*22dc650dSSadaf Ebrahimi    abcdefhijklm
597*22dc650dSSadaf Ebrahimi 0: abcdefhijklm
598*22dc650dSSadaf Ebrahimi 1: bc
599*22dc650dSSadaf Ebrahimi 2: c
600*22dc650dSSadaf Ebrahimi 3: ef
601*22dc650dSSadaf Ebrahimi 4: f
602*22dc650dSSadaf Ebrahimi 5: ij
603*22dc650dSSadaf Ebrahimi 6: j
604*22dc650dSSadaf Ebrahimi 7: lm
605*22dc650dSSadaf Ebrahimi 8: m
606*22dc650dSSadaf Ebrahimi
607*22dc650dSSadaf Ebrahimi/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
608*22dc650dSSadaf Ebrahimi    a+ Z0+\x08\n\x1d\x12
609*22dc650dSSadaf Ebrahimi 0: a+ Z0+\x08\x0a\x1d\x12
610*22dc650dSSadaf Ebrahimi
611*22dc650dSSadaf Ebrahimi/^[.^$|()*+?{,}]+/
612*22dc650dSSadaf Ebrahimi    .^\$(*+)|{?,?}
613*22dc650dSSadaf Ebrahimi 0: .^$(*+)|{?,?}
614*22dc650dSSadaf Ebrahimi
615*22dc650dSSadaf Ebrahimi/^a*\w/
616*22dc650dSSadaf Ebrahimi    z
617*22dc650dSSadaf Ebrahimi 0: z
618*22dc650dSSadaf Ebrahimi    az
619*22dc650dSSadaf Ebrahimi 0: az
620*22dc650dSSadaf Ebrahimi    aaaz
621*22dc650dSSadaf Ebrahimi 0: aaaz
622*22dc650dSSadaf Ebrahimi    a
623*22dc650dSSadaf Ebrahimi 0: a
624*22dc650dSSadaf Ebrahimi    aa
625*22dc650dSSadaf Ebrahimi 0: aa
626*22dc650dSSadaf Ebrahimi    aaaa
627*22dc650dSSadaf Ebrahimi 0: aaaa
628*22dc650dSSadaf Ebrahimi    a+
629*22dc650dSSadaf Ebrahimi 0: a
630*22dc650dSSadaf Ebrahimi    aa+
631*22dc650dSSadaf Ebrahimi 0: aa
632*22dc650dSSadaf Ebrahimi
633*22dc650dSSadaf Ebrahimi/^a*?\w/
634*22dc650dSSadaf Ebrahimi    z
635*22dc650dSSadaf Ebrahimi 0: z
636*22dc650dSSadaf Ebrahimi    az
637*22dc650dSSadaf Ebrahimi 0: a
638*22dc650dSSadaf Ebrahimi    aaaz
639*22dc650dSSadaf Ebrahimi 0: a
640*22dc650dSSadaf Ebrahimi    a
641*22dc650dSSadaf Ebrahimi 0: a
642*22dc650dSSadaf Ebrahimi    aa
643*22dc650dSSadaf Ebrahimi 0: a
644*22dc650dSSadaf Ebrahimi    aaaa
645*22dc650dSSadaf Ebrahimi 0: a
646*22dc650dSSadaf Ebrahimi    a+
647*22dc650dSSadaf Ebrahimi 0: a
648*22dc650dSSadaf Ebrahimi    aa+
649*22dc650dSSadaf Ebrahimi 0: a
650*22dc650dSSadaf Ebrahimi
651*22dc650dSSadaf Ebrahimi/^a+\w/
652*22dc650dSSadaf Ebrahimi    az
653*22dc650dSSadaf Ebrahimi 0: az
654*22dc650dSSadaf Ebrahimi    aaaz
655*22dc650dSSadaf Ebrahimi 0: aaaz
656*22dc650dSSadaf Ebrahimi    aa
657*22dc650dSSadaf Ebrahimi 0: aa
658*22dc650dSSadaf Ebrahimi    aaaa
659*22dc650dSSadaf Ebrahimi 0: aaaa
660*22dc650dSSadaf Ebrahimi    aa+
661*22dc650dSSadaf Ebrahimi 0: aa
662*22dc650dSSadaf Ebrahimi
663*22dc650dSSadaf Ebrahimi/^a+?\w/
664*22dc650dSSadaf Ebrahimi    az
665*22dc650dSSadaf Ebrahimi 0: az
666*22dc650dSSadaf Ebrahimi    aaaz
667*22dc650dSSadaf Ebrahimi 0: aa
668*22dc650dSSadaf Ebrahimi    aa
669*22dc650dSSadaf Ebrahimi 0: aa
670*22dc650dSSadaf Ebrahimi    aaaa
671*22dc650dSSadaf Ebrahimi 0: aa
672*22dc650dSSadaf Ebrahimi    aa+
673*22dc650dSSadaf Ebrahimi 0: aa
674*22dc650dSSadaf Ebrahimi
675*22dc650dSSadaf Ebrahimi/^\d{8}\w{2,}/
676*22dc650dSSadaf Ebrahimi    1234567890
677*22dc650dSSadaf Ebrahimi 0: 1234567890
678*22dc650dSSadaf Ebrahimi    12345678ab
679*22dc650dSSadaf Ebrahimi 0: 12345678ab
680*22dc650dSSadaf Ebrahimi    12345678__
681*22dc650dSSadaf Ebrahimi 0: 12345678__
682*22dc650dSSadaf Ebrahimi\= Expect no match
683*22dc650dSSadaf Ebrahimi    1234567
684*22dc650dSSadaf EbrahimiNo match
685*22dc650dSSadaf Ebrahimi
686*22dc650dSSadaf Ebrahimi/^[aeiou\d]{4,5}$/
687*22dc650dSSadaf Ebrahimi    uoie
688*22dc650dSSadaf Ebrahimi 0: uoie
689*22dc650dSSadaf Ebrahimi    1234
690*22dc650dSSadaf Ebrahimi 0: 1234
691*22dc650dSSadaf Ebrahimi    12345
692*22dc650dSSadaf Ebrahimi 0: 12345
693*22dc650dSSadaf Ebrahimi    aaaaa
694*22dc650dSSadaf Ebrahimi 0: aaaaa
695*22dc650dSSadaf Ebrahimi\= Expect no match
696*22dc650dSSadaf Ebrahimi    123456
697*22dc650dSSadaf EbrahimiNo match
698*22dc650dSSadaf Ebrahimi
699*22dc650dSSadaf Ebrahimi/^[aeiou\d]{4,5}?/
700*22dc650dSSadaf Ebrahimi    uoie
701*22dc650dSSadaf Ebrahimi 0: uoie
702*22dc650dSSadaf Ebrahimi    1234
703*22dc650dSSadaf Ebrahimi 0: 1234
704*22dc650dSSadaf Ebrahimi    12345
705*22dc650dSSadaf Ebrahimi 0: 1234
706*22dc650dSSadaf Ebrahimi    aaaaa
707*22dc650dSSadaf Ebrahimi 0: aaaa
708*22dc650dSSadaf Ebrahimi    123456
709*22dc650dSSadaf Ebrahimi 0: 1234
710*22dc650dSSadaf Ebrahimi
711*22dc650dSSadaf Ebrahimi/\A(abc|def)=(\1){2,3}\Z/
712*22dc650dSSadaf Ebrahimi    abc=abcabc
713*22dc650dSSadaf Ebrahimi 0: abc=abcabc
714*22dc650dSSadaf Ebrahimi 1: abc
715*22dc650dSSadaf Ebrahimi 2: abc
716*22dc650dSSadaf Ebrahimi    def=defdefdef
717*22dc650dSSadaf Ebrahimi 0: def=defdefdef
718*22dc650dSSadaf Ebrahimi 1: def
719*22dc650dSSadaf Ebrahimi 2: def
720*22dc650dSSadaf Ebrahimi\= Expect no match
721*22dc650dSSadaf Ebrahimi    abc=defdef
722*22dc650dSSadaf EbrahimiNo match
723*22dc650dSSadaf Ebrahimi
724*22dc650dSSadaf Ebrahimi/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
725*22dc650dSSadaf Ebrahimi    abcdefghijkcda2
726*22dc650dSSadaf Ebrahimi 0: abcdefghijkcda2
727*22dc650dSSadaf Ebrahimi 1: a
728*22dc650dSSadaf Ebrahimi 2: b
729*22dc650dSSadaf Ebrahimi 3: c
730*22dc650dSSadaf Ebrahimi 4: d
731*22dc650dSSadaf Ebrahimi 5: e
732*22dc650dSSadaf Ebrahimi 6: f
733*22dc650dSSadaf Ebrahimi 7: g
734*22dc650dSSadaf Ebrahimi 8: h
735*22dc650dSSadaf Ebrahimi 9: i
736*22dc650dSSadaf Ebrahimi10: j
737*22dc650dSSadaf Ebrahimi11: k
738*22dc650dSSadaf Ebrahimi12: cd
739*22dc650dSSadaf Ebrahimi    abcdefghijkkkkcda2
740*22dc650dSSadaf Ebrahimi 0: abcdefghijkkkkcda2
741*22dc650dSSadaf Ebrahimi 1: a
742*22dc650dSSadaf Ebrahimi 2: b
743*22dc650dSSadaf Ebrahimi 3: c
744*22dc650dSSadaf Ebrahimi 4: d
745*22dc650dSSadaf Ebrahimi 5: e
746*22dc650dSSadaf Ebrahimi 6: f
747*22dc650dSSadaf Ebrahimi 7: g
748*22dc650dSSadaf Ebrahimi 8: h
749*22dc650dSSadaf Ebrahimi 9: i
750*22dc650dSSadaf Ebrahimi10: j
751*22dc650dSSadaf Ebrahimi11: k
752*22dc650dSSadaf Ebrahimi12: cd
753*22dc650dSSadaf Ebrahimi
754*22dc650dSSadaf Ebrahimi/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
755*22dc650dSSadaf Ebrahimi    cataract cataract23
756*22dc650dSSadaf Ebrahimi 0: cataract cataract23
757*22dc650dSSadaf Ebrahimi 1: cataract
758*22dc650dSSadaf Ebrahimi 2: aract
759*22dc650dSSadaf Ebrahimi 3: ract
760*22dc650dSSadaf Ebrahimi 4:
761*22dc650dSSadaf Ebrahimi 5: 3
762*22dc650dSSadaf Ebrahimi    catatonic catatonic23
763*22dc650dSSadaf Ebrahimi 0: catatonic catatonic23
764*22dc650dSSadaf Ebrahimi 1: catatonic
765*22dc650dSSadaf Ebrahimi 2: atonic
766*22dc650dSSadaf Ebrahimi 3: tonic
767*22dc650dSSadaf Ebrahimi 4:
768*22dc650dSSadaf Ebrahimi 5: 3
769*22dc650dSSadaf Ebrahimi    caterpillar caterpillar23
770*22dc650dSSadaf Ebrahimi 0: caterpillar caterpillar23
771*22dc650dSSadaf Ebrahimi 1: caterpillar
772*22dc650dSSadaf Ebrahimi 2: erpillar
773*22dc650dSSadaf Ebrahimi 3: <unset>
774*22dc650dSSadaf Ebrahimi 4:
775*22dc650dSSadaf Ebrahimi 5: 3
776*22dc650dSSadaf Ebrahimi
777*22dc650dSSadaf Ebrahimi
778*22dc650dSSadaf Ebrahimi/^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
779*22dc650dSSadaf Ebrahimi    From abcd  Mon Sep 01 12:33:02 1997
780*22dc650dSSadaf Ebrahimi 0: From abcd  Mon Sep 01 12:33
781*22dc650dSSadaf Ebrahimi 1: abcd
782*22dc650dSSadaf Ebrahimi
783*22dc650dSSadaf Ebrahimi/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
784*22dc650dSSadaf Ebrahimi    From abcd  Mon Sep 01 12:33:02 1997
785*22dc650dSSadaf Ebrahimi 0: From abcd  Mon Sep 01 12:33
786*22dc650dSSadaf Ebrahimi 1: Sep
787*22dc650dSSadaf Ebrahimi    From abcd  Mon Sep  1 12:33:02 1997
788*22dc650dSSadaf Ebrahimi 0: From abcd  Mon Sep  1 12:33
789*22dc650dSSadaf Ebrahimi 1: Sep
790*22dc650dSSadaf Ebrahimi\= Expect no match
791*22dc650dSSadaf Ebrahimi    From abcd  Sep 01 12:33:02 1997
792*22dc650dSSadaf EbrahimiNo match
793*22dc650dSSadaf Ebrahimi
794*22dc650dSSadaf Ebrahimi/^12.34/s
795*22dc650dSSadaf Ebrahimi    12\n34
796*22dc650dSSadaf Ebrahimi 0: 12\x0a34
797*22dc650dSSadaf Ebrahimi    12\r34
798*22dc650dSSadaf Ebrahimi 0: 12\x0d34
799*22dc650dSSadaf Ebrahimi
800*22dc650dSSadaf Ebrahimi/\w+(?=\t)/
801*22dc650dSSadaf Ebrahimi    the quick brown\t fox
802*22dc650dSSadaf Ebrahimi 0: brown
803*22dc650dSSadaf Ebrahimi
804*22dc650dSSadaf Ebrahimi/foo(?!bar)(.*)/
805*22dc650dSSadaf Ebrahimi    foobar is foolish see?
806*22dc650dSSadaf Ebrahimi 0: foolish see?
807*22dc650dSSadaf Ebrahimi 1: lish see?
808*22dc650dSSadaf Ebrahimi
809*22dc650dSSadaf Ebrahimi/(?:(?!foo)...|^.{0,2})bar(.*)/
810*22dc650dSSadaf Ebrahimi    foobar crowbar etc
811*22dc650dSSadaf Ebrahimi 0: rowbar etc
812*22dc650dSSadaf Ebrahimi 1:  etc
813*22dc650dSSadaf Ebrahimi    barrel
814*22dc650dSSadaf Ebrahimi 0: barrel
815*22dc650dSSadaf Ebrahimi 1: rel
816*22dc650dSSadaf Ebrahimi    2barrel
817*22dc650dSSadaf Ebrahimi 0: 2barrel
818*22dc650dSSadaf Ebrahimi 1: rel
819*22dc650dSSadaf Ebrahimi    A barrel
820*22dc650dSSadaf Ebrahimi 0: A barrel
821*22dc650dSSadaf Ebrahimi 1: rel
822*22dc650dSSadaf Ebrahimi
823*22dc650dSSadaf Ebrahimi/^(\D*)(?=\d)(?!123)/
824*22dc650dSSadaf Ebrahimi    abc456
825*22dc650dSSadaf Ebrahimi 0: abc
826*22dc650dSSadaf Ebrahimi 1: abc
827*22dc650dSSadaf Ebrahimi\= Expect no match
828*22dc650dSSadaf Ebrahimi    abc123
829*22dc650dSSadaf EbrahimiNo match
830*22dc650dSSadaf Ebrahimi
831*22dc650dSSadaf Ebrahimi/^1234(?# test newlines
832*22dc650dSSadaf Ebrahimi  inside)/
833*22dc650dSSadaf Ebrahimi    1234
834*22dc650dSSadaf Ebrahimi 0: 1234
835*22dc650dSSadaf Ebrahimi
836*22dc650dSSadaf Ebrahimi/^1234 #comment in extended re
837*22dc650dSSadaf Ebrahimi  /x
838*22dc650dSSadaf Ebrahimi    1234
839*22dc650dSSadaf Ebrahimi 0: 1234
840*22dc650dSSadaf Ebrahimi
841*22dc650dSSadaf Ebrahimi/#rhubarb
842*22dc650dSSadaf Ebrahimi  abcd/x
843*22dc650dSSadaf Ebrahimi    abcd
844*22dc650dSSadaf Ebrahimi 0: abcd
845*22dc650dSSadaf Ebrahimi
846*22dc650dSSadaf Ebrahimi/^abcd#rhubarb/x
847*22dc650dSSadaf Ebrahimi    abcd
848*22dc650dSSadaf Ebrahimi 0: abcd
849*22dc650dSSadaf Ebrahimi
850*22dc650dSSadaf Ebrahimi/^(a)\1{2,3}(.)/
851*22dc650dSSadaf Ebrahimi    aaab
852*22dc650dSSadaf Ebrahimi 0: aaab
853*22dc650dSSadaf Ebrahimi 1: a
854*22dc650dSSadaf Ebrahimi 2: b
855*22dc650dSSadaf Ebrahimi    aaaab
856*22dc650dSSadaf Ebrahimi 0: aaaab
857*22dc650dSSadaf Ebrahimi 1: a
858*22dc650dSSadaf Ebrahimi 2: b
859*22dc650dSSadaf Ebrahimi    aaaaab
860*22dc650dSSadaf Ebrahimi 0: aaaaa
861*22dc650dSSadaf Ebrahimi 1: a
862*22dc650dSSadaf Ebrahimi 2: a
863*22dc650dSSadaf Ebrahimi    aaaaaab
864*22dc650dSSadaf Ebrahimi 0: aaaaa
865*22dc650dSSadaf Ebrahimi 1: a
866*22dc650dSSadaf Ebrahimi 2: a
867*22dc650dSSadaf Ebrahimi
868*22dc650dSSadaf Ebrahimi/(?!^)abc/
869*22dc650dSSadaf Ebrahimi    the abc
870*22dc650dSSadaf Ebrahimi 0: abc
871*22dc650dSSadaf Ebrahimi\= Expect no match
872*22dc650dSSadaf Ebrahimi    abc
873*22dc650dSSadaf EbrahimiNo match
874*22dc650dSSadaf Ebrahimi
875*22dc650dSSadaf Ebrahimi/(?=^)abc/
876*22dc650dSSadaf Ebrahimi    abc
877*22dc650dSSadaf Ebrahimi 0: abc
878*22dc650dSSadaf Ebrahimi\= Expect no match
879*22dc650dSSadaf Ebrahimi    the abc
880*22dc650dSSadaf EbrahimiNo match
881*22dc650dSSadaf Ebrahimi
882*22dc650dSSadaf Ebrahimi/^[ab]{1,3}(ab*|b)/
883*22dc650dSSadaf Ebrahimi    aabbbbb
884*22dc650dSSadaf Ebrahimi 0: aabb
885*22dc650dSSadaf Ebrahimi 1: b
886*22dc650dSSadaf Ebrahimi
887*22dc650dSSadaf Ebrahimi/^[ab]{1,3}?(ab*|b)/
888*22dc650dSSadaf Ebrahimi    aabbbbb
889*22dc650dSSadaf Ebrahimi 0: aabbbbb
890*22dc650dSSadaf Ebrahimi 1: abbbbb
891*22dc650dSSadaf Ebrahimi
892*22dc650dSSadaf Ebrahimi/^[ab]{1,3}?(ab*?|b)/
893*22dc650dSSadaf Ebrahimi    aabbbbb
894*22dc650dSSadaf Ebrahimi 0: aa
895*22dc650dSSadaf Ebrahimi 1: a
896*22dc650dSSadaf Ebrahimi
897*22dc650dSSadaf Ebrahimi/^[ab]{1,3}(ab*?|b)/
898*22dc650dSSadaf Ebrahimi    aabbbbb
899*22dc650dSSadaf Ebrahimi 0: aabb
900*22dc650dSSadaf Ebrahimi 1: b
901*22dc650dSSadaf Ebrahimi
902*22dc650dSSadaf Ebrahimi/  (?: [\040\t] |  \(
903*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
904*22dc650dSSadaf Ebrahimi\)  )*                          # optional leading comment
905*22dc650dSSadaf Ebrahimi(?:    (?:
906*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
907*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
908*22dc650dSSadaf Ebrahimi|
909*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
910*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
911*22dc650dSSadaf Ebrahimi|                     #    or
912*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
913*22dc650dSSadaf Ebrahimi)* "  # closing quote
914*22dc650dSSadaf Ebrahimi)                    # initial word
915*22dc650dSSadaf Ebrahimi(?:  (?: [\040\t] |  \(
916*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
917*22dc650dSSadaf Ebrahimi\)  )*  \.  (?: [\040\t] |  \(
918*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
919*22dc650dSSadaf Ebrahimi\)  )*   (?:
920*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
921*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
922*22dc650dSSadaf Ebrahimi|
923*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
924*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
925*22dc650dSSadaf Ebrahimi|                     #    or
926*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
927*22dc650dSSadaf Ebrahimi)* "  # closing quote
928*22dc650dSSadaf Ebrahimi)  )* # further okay, if led by a period
929*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
930*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
931*22dc650dSSadaf Ebrahimi\)  )*  @  (?: [\040\t] |  \(
932*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
933*22dc650dSSadaf Ebrahimi\)  )*    (?:
934*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
935*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
936*22dc650dSSadaf Ebrahimi|   \[                         # [
937*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
938*22dc650dSSadaf Ebrahimi\]                        #           ]
939*22dc650dSSadaf Ebrahimi)                           # initial subdomain
940*22dc650dSSadaf Ebrahimi(?:                                  #
941*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
942*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
943*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
944*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
945*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
946*22dc650dSSadaf Ebrahimi\)  )*   (?:
947*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
948*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
949*22dc650dSSadaf Ebrahimi|   \[                         # [
950*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
951*22dc650dSSadaf Ebrahimi\]                        #           ]
952*22dc650dSSadaf Ebrahimi)                     #   ...further okay
953*22dc650dSSadaf Ebrahimi)*
954*22dc650dSSadaf Ebrahimi# address
955*22dc650dSSadaf Ebrahimi|                     #  or
956*22dc650dSSadaf Ebrahimi(?:
957*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
958*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
959*22dc650dSSadaf Ebrahimi|
960*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
961*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
962*22dc650dSSadaf Ebrahimi|                     #    or
963*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
964*22dc650dSSadaf Ebrahimi)* "  # closing quote
965*22dc650dSSadaf Ebrahimi)             # one word, optionally followed by....
966*22dc650dSSadaf Ebrahimi(?:
967*22dc650dSSadaf Ebrahimi[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
968*22dc650dSSadaf Ebrahimi\(
969*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
970*22dc650dSSadaf Ebrahimi\)       |  # comments, or...
971*22dc650dSSadaf Ebrahimi
972*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
973*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
974*22dc650dSSadaf Ebrahimi|                     #    or
975*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
976*22dc650dSSadaf Ebrahimi)* "  # closing quote
977*22dc650dSSadaf Ebrahimi# quoted strings
978*22dc650dSSadaf Ebrahimi)*
979*22dc650dSSadaf Ebrahimi<  (?: [\040\t] |  \(
980*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
981*22dc650dSSadaf Ebrahimi\)  )*                     # leading <
982*22dc650dSSadaf Ebrahimi(?:  @  (?: [\040\t] |  \(
983*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
984*22dc650dSSadaf Ebrahimi\)  )*    (?:
985*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
986*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
987*22dc650dSSadaf Ebrahimi|   \[                         # [
988*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
989*22dc650dSSadaf Ebrahimi\]                        #           ]
990*22dc650dSSadaf Ebrahimi)                           # initial subdomain
991*22dc650dSSadaf Ebrahimi(?:                                  #
992*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
993*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
994*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
995*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
996*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
997*22dc650dSSadaf Ebrahimi\)  )*   (?:
998*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
999*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1000*22dc650dSSadaf Ebrahimi|   \[                         # [
1001*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1002*22dc650dSSadaf Ebrahimi\]                        #           ]
1003*22dc650dSSadaf Ebrahimi)                     #   ...further okay
1004*22dc650dSSadaf Ebrahimi)*
1005*22dc650dSSadaf Ebrahimi
1006*22dc650dSSadaf Ebrahimi(?:  (?: [\040\t] |  \(
1007*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1008*22dc650dSSadaf Ebrahimi\)  )*  ,  (?: [\040\t] |  \(
1009*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1010*22dc650dSSadaf Ebrahimi\)  )*  @  (?: [\040\t] |  \(
1011*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1012*22dc650dSSadaf Ebrahimi\)  )*    (?:
1013*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1014*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1015*22dc650dSSadaf Ebrahimi|   \[                         # [
1016*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1017*22dc650dSSadaf Ebrahimi\]                        #           ]
1018*22dc650dSSadaf Ebrahimi)                           # initial subdomain
1019*22dc650dSSadaf Ebrahimi(?:                                  #
1020*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1021*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1022*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
1023*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1024*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1025*22dc650dSSadaf Ebrahimi\)  )*   (?:
1026*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1027*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1028*22dc650dSSadaf Ebrahimi|   \[                         # [
1029*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1030*22dc650dSSadaf Ebrahimi\]                        #           ]
1031*22dc650dSSadaf Ebrahimi)                     #   ...further okay
1032*22dc650dSSadaf Ebrahimi)*
1033*22dc650dSSadaf Ebrahimi)* # further okay, if led by comma
1034*22dc650dSSadaf Ebrahimi:                                # closing colon
1035*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1036*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1037*22dc650dSSadaf Ebrahimi\)  )*  )? #       optional route
1038*22dc650dSSadaf Ebrahimi(?:
1039*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1040*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1041*22dc650dSSadaf Ebrahimi|
1042*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
1043*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1044*22dc650dSSadaf Ebrahimi|                     #    or
1045*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
1046*22dc650dSSadaf Ebrahimi)* "  # closing quote
1047*22dc650dSSadaf Ebrahimi)                    # initial word
1048*22dc650dSSadaf Ebrahimi(?:  (?: [\040\t] |  \(
1049*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1050*22dc650dSSadaf Ebrahimi\)  )*  \.  (?: [\040\t] |  \(
1051*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1052*22dc650dSSadaf Ebrahimi\)  )*   (?:
1053*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1054*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1055*22dc650dSSadaf Ebrahimi|
1056*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
1057*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
1058*22dc650dSSadaf Ebrahimi|                     #    or
1059*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
1060*22dc650dSSadaf Ebrahimi)* "  # closing quote
1061*22dc650dSSadaf Ebrahimi)  )* # further okay, if led by a period
1062*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1063*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1064*22dc650dSSadaf Ebrahimi\)  )*  @  (?: [\040\t] |  \(
1065*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1066*22dc650dSSadaf Ebrahimi\)  )*    (?:
1067*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1068*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1069*22dc650dSSadaf Ebrahimi|   \[                         # [
1070*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1071*22dc650dSSadaf Ebrahimi\]                        #           ]
1072*22dc650dSSadaf Ebrahimi)                           # initial subdomain
1073*22dc650dSSadaf Ebrahimi(?:                                  #
1074*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1075*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1076*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
1077*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1078*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1079*22dc650dSSadaf Ebrahimi\)  )*   (?:
1080*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1081*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1082*22dc650dSSadaf Ebrahimi|   \[                         # [
1083*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
1084*22dc650dSSadaf Ebrahimi\]                        #           ]
1085*22dc650dSSadaf Ebrahimi)                     #   ...further okay
1086*22dc650dSSadaf Ebrahimi)*
1087*22dc650dSSadaf Ebrahimi#       address spec
1088*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
1089*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1090*22dc650dSSadaf Ebrahimi\)  )*  > #                  trailing >
1091*22dc650dSSadaf Ebrahimi# name and address
1092*22dc650dSSadaf Ebrahimi)  (?: [\040\t] |  \(
1093*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
1094*22dc650dSSadaf Ebrahimi\)  )*                       # optional trailing comment
1095*22dc650dSSadaf Ebrahimi/x
1096*22dc650dSSadaf Ebrahimi    Alan Other <user\@dom.ain>
1097*22dc650dSSadaf Ebrahimi 0: Alan Other <[email protected]>
1098*22dc650dSSadaf Ebrahimi    <user\@dom.ain>
1099*22dc650dSSadaf Ebrahimi 0: [email protected]
1100*22dc650dSSadaf Ebrahimi    user\@dom.ain
1101*22dc650dSSadaf Ebrahimi 0: [email protected]
1102*22dc650dSSadaf Ebrahimi    \"A. Other\" <user.1234\@dom.ain> (a comment)
1103*22dc650dSSadaf Ebrahimi 0: "A. Other" <[email protected]> (a comment)
1104*22dc650dSSadaf Ebrahimi    A. Other <user.1234\@dom.ain> (a comment)
1105*22dc650dSSadaf Ebrahimi 0:  Other <[email protected]> (a comment)
1106*22dc650dSSadaf Ebrahimi    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1107*22dc650dSSadaf Ebrahimi 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1108*22dc650dSSadaf Ebrahimi    A missing angle <user\@some.where
1109*22dc650dSSadaf Ebrahimi 0: [email protected]
1110*22dc650dSSadaf Ebrahimi\= Expect no match
1111*22dc650dSSadaf Ebrahimi    The quick brown fox
1112*22dc650dSSadaf EbrahimiNo match
1113*22dc650dSSadaf Ebrahimi
1114*22dc650dSSadaf Ebrahimi/[\040\t]*                    # Nab whitespace.
1115*22dc650dSSadaf Ebrahimi(?:
1116*22dc650dSSadaf Ebrahimi\(                              #  (
1117*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1118*22dc650dSSadaf Ebrahimi(?:                                 #       (
1119*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1120*22dc650dSSadaf Ebrahimi\(                            #  (
1121*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1122*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1123*22dc650dSSadaf Ebrahimi\)                           #                       )
1124*22dc650dSSadaf Ebrahimi)    #         special
1125*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1126*22dc650dSSadaf Ebrahimi)*                                  #            )*
1127*22dc650dSSadaf Ebrahimi\)                             #                )
1128*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1129*22dc650dSSadaf Ebrahimi# optional leading comment
1130*22dc650dSSadaf Ebrahimi(?:
1131*22dc650dSSadaf Ebrahimi(?:
1132*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1133*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1134*22dc650dSSadaf Ebrahimi# Atom
1135*22dc650dSSadaf Ebrahimi|                       #  or
1136*22dc650dSSadaf Ebrahimi"                                     # "
1137*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1138*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1139*22dc650dSSadaf Ebrahimi"                                     #        "
1140*22dc650dSSadaf Ebrahimi# Quoted string
1141*22dc650dSSadaf Ebrahimi)
1142*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1143*22dc650dSSadaf Ebrahimi(?:
1144*22dc650dSSadaf Ebrahimi\(                              #  (
1145*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1146*22dc650dSSadaf Ebrahimi(?:                                 #       (
1147*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1148*22dc650dSSadaf Ebrahimi\(                            #  (
1149*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1150*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1151*22dc650dSSadaf Ebrahimi\)                           #                       )
1152*22dc650dSSadaf Ebrahimi)    #         special
1153*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1154*22dc650dSSadaf Ebrahimi)*                                  #            )*
1155*22dc650dSSadaf Ebrahimi\)                             #                )
1156*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1157*22dc650dSSadaf Ebrahimi(?:
1158*22dc650dSSadaf Ebrahimi\.
1159*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1160*22dc650dSSadaf Ebrahimi(?:
1161*22dc650dSSadaf Ebrahimi\(                              #  (
1162*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1163*22dc650dSSadaf Ebrahimi(?:                                 #       (
1164*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1165*22dc650dSSadaf Ebrahimi\(                            #  (
1166*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1167*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1168*22dc650dSSadaf Ebrahimi\)                           #                       )
1169*22dc650dSSadaf Ebrahimi)    #         special
1170*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1171*22dc650dSSadaf Ebrahimi)*                                  #            )*
1172*22dc650dSSadaf Ebrahimi\)                             #                )
1173*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1174*22dc650dSSadaf Ebrahimi(?:
1175*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1176*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1177*22dc650dSSadaf Ebrahimi# Atom
1178*22dc650dSSadaf Ebrahimi|                       #  or
1179*22dc650dSSadaf Ebrahimi"                                     # "
1180*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1181*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1182*22dc650dSSadaf Ebrahimi"                                     #        "
1183*22dc650dSSadaf Ebrahimi# Quoted string
1184*22dc650dSSadaf Ebrahimi)
1185*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1186*22dc650dSSadaf Ebrahimi(?:
1187*22dc650dSSadaf Ebrahimi\(                              #  (
1188*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1189*22dc650dSSadaf Ebrahimi(?:                                 #       (
1190*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1191*22dc650dSSadaf Ebrahimi\(                            #  (
1192*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1193*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1194*22dc650dSSadaf Ebrahimi\)                           #                       )
1195*22dc650dSSadaf Ebrahimi)    #         special
1196*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1197*22dc650dSSadaf Ebrahimi)*                                  #            )*
1198*22dc650dSSadaf Ebrahimi\)                             #                )
1199*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1200*22dc650dSSadaf Ebrahimi# additional words
1201*22dc650dSSadaf Ebrahimi)*
1202*22dc650dSSadaf Ebrahimi@
1203*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1204*22dc650dSSadaf Ebrahimi(?:
1205*22dc650dSSadaf Ebrahimi\(                              #  (
1206*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1207*22dc650dSSadaf Ebrahimi(?:                                 #       (
1208*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1209*22dc650dSSadaf Ebrahimi\(                            #  (
1210*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1211*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1212*22dc650dSSadaf Ebrahimi\)                           #                       )
1213*22dc650dSSadaf Ebrahimi)    #         special
1214*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1215*22dc650dSSadaf Ebrahimi)*                                  #            )*
1216*22dc650dSSadaf Ebrahimi\)                             #                )
1217*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1218*22dc650dSSadaf Ebrahimi(?:
1219*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1220*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1221*22dc650dSSadaf Ebrahimi|
1222*22dc650dSSadaf Ebrahimi\[                            # [
1223*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1224*22dc650dSSadaf Ebrahimi\]                           #           ]
1225*22dc650dSSadaf Ebrahimi)
1226*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1227*22dc650dSSadaf Ebrahimi(?:
1228*22dc650dSSadaf Ebrahimi\(                              #  (
1229*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1230*22dc650dSSadaf Ebrahimi(?:                                 #       (
1231*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1232*22dc650dSSadaf Ebrahimi\(                            #  (
1233*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1234*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1235*22dc650dSSadaf Ebrahimi\)                           #                       )
1236*22dc650dSSadaf Ebrahimi)    #         special
1237*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1238*22dc650dSSadaf Ebrahimi)*                                  #            )*
1239*22dc650dSSadaf Ebrahimi\)                             #                )
1240*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1241*22dc650dSSadaf Ebrahimi# optional trailing comments
1242*22dc650dSSadaf Ebrahimi(?:
1243*22dc650dSSadaf Ebrahimi\.
1244*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1245*22dc650dSSadaf Ebrahimi(?:
1246*22dc650dSSadaf Ebrahimi\(                              #  (
1247*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1248*22dc650dSSadaf Ebrahimi(?:                                 #       (
1249*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1250*22dc650dSSadaf Ebrahimi\(                            #  (
1251*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1252*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1253*22dc650dSSadaf Ebrahimi\)                           #                       )
1254*22dc650dSSadaf Ebrahimi)    #         special
1255*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1256*22dc650dSSadaf Ebrahimi)*                                  #            )*
1257*22dc650dSSadaf Ebrahimi\)                             #                )
1258*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1259*22dc650dSSadaf Ebrahimi(?:
1260*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1261*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1262*22dc650dSSadaf Ebrahimi|
1263*22dc650dSSadaf Ebrahimi\[                            # [
1264*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1265*22dc650dSSadaf Ebrahimi\]                           #           ]
1266*22dc650dSSadaf Ebrahimi)
1267*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1268*22dc650dSSadaf Ebrahimi(?:
1269*22dc650dSSadaf Ebrahimi\(                              #  (
1270*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1271*22dc650dSSadaf Ebrahimi(?:                                 #       (
1272*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1273*22dc650dSSadaf Ebrahimi\(                            #  (
1274*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1275*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1276*22dc650dSSadaf Ebrahimi\)                           #                       )
1277*22dc650dSSadaf Ebrahimi)    #         special
1278*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1279*22dc650dSSadaf Ebrahimi)*                                  #            )*
1280*22dc650dSSadaf Ebrahimi\)                             #                )
1281*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1282*22dc650dSSadaf Ebrahimi# optional trailing comments
1283*22dc650dSSadaf Ebrahimi)*
1284*22dc650dSSadaf Ebrahimi# address
1285*22dc650dSSadaf Ebrahimi|                             #  or
1286*22dc650dSSadaf Ebrahimi(?:
1287*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1288*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1289*22dc650dSSadaf Ebrahimi# Atom
1290*22dc650dSSadaf Ebrahimi|                       #  or
1291*22dc650dSSadaf Ebrahimi"                                     # "
1292*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1293*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1294*22dc650dSSadaf Ebrahimi"                                     #        "
1295*22dc650dSSadaf Ebrahimi# Quoted string
1296*22dc650dSSadaf Ebrahimi)
1297*22dc650dSSadaf Ebrahimi# leading word
1298*22dc650dSSadaf Ebrahimi[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
1299*22dc650dSSadaf Ebrahimi(?:
1300*22dc650dSSadaf Ebrahimi(?:
1301*22dc650dSSadaf Ebrahimi\(                              #  (
1302*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1303*22dc650dSSadaf Ebrahimi(?:                                 #       (
1304*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1305*22dc650dSSadaf Ebrahimi\(                            #  (
1306*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1307*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1308*22dc650dSSadaf Ebrahimi\)                           #                       )
1309*22dc650dSSadaf Ebrahimi)    #         special
1310*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1311*22dc650dSSadaf Ebrahimi)*                                  #            )*
1312*22dc650dSSadaf Ebrahimi\)                             #                )
1313*22dc650dSSadaf Ebrahimi|
1314*22dc650dSSadaf Ebrahimi"                                     # "
1315*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1316*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1317*22dc650dSSadaf Ebrahimi"                                     #        "
1318*22dc650dSSadaf Ebrahimi) # "special" comment or quoted string
1319*22dc650dSSadaf Ebrahimi[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
1320*22dc650dSSadaf Ebrahimi)*
1321*22dc650dSSadaf Ebrahimi<
1322*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1323*22dc650dSSadaf Ebrahimi(?:
1324*22dc650dSSadaf Ebrahimi\(                              #  (
1325*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1326*22dc650dSSadaf Ebrahimi(?:                                 #       (
1327*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1328*22dc650dSSadaf Ebrahimi\(                            #  (
1329*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1330*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1331*22dc650dSSadaf Ebrahimi\)                           #                       )
1332*22dc650dSSadaf Ebrahimi)    #         special
1333*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1334*22dc650dSSadaf Ebrahimi)*                                  #            )*
1335*22dc650dSSadaf Ebrahimi\)                             #                )
1336*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1337*22dc650dSSadaf Ebrahimi# <
1338*22dc650dSSadaf Ebrahimi(?:
1339*22dc650dSSadaf Ebrahimi@
1340*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1341*22dc650dSSadaf Ebrahimi(?:
1342*22dc650dSSadaf Ebrahimi\(                              #  (
1343*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1344*22dc650dSSadaf Ebrahimi(?:                                 #       (
1345*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1346*22dc650dSSadaf Ebrahimi\(                            #  (
1347*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1348*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1349*22dc650dSSadaf Ebrahimi\)                           #                       )
1350*22dc650dSSadaf Ebrahimi)    #         special
1351*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1352*22dc650dSSadaf Ebrahimi)*                                  #            )*
1353*22dc650dSSadaf Ebrahimi\)                             #                )
1354*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1355*22dc650dSSadaf Ebrahimi(?:
1356*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1357*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1358*22dc650dSSadaf Ebrahimi|
1359*22dc650dSSadaf Ebrahimi\[                            # [
1360*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1361*22dc650dSSadaf Ebrahimi\]                           #           ]
1362*22dc650dSSadaf Ebrahimi)
1363*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1364*22dc650dSSadaf Ebrahimi(?:
1365*22dc650dSSadaf Ebrahimi\(                              #  (
1366*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1367*22dc650dSSadaf Ebrahimi(?:                                 #       (
1368*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1369*22dc650dSSadaf Ebrahimi\(                            #  (
1370*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1371*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1372*22dc650dSSadaf Ebrahimi\)                           #                       )
1373*22dc650dSSadaf Ebrahimi)    #         special
1374*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1375*22dc650dSSadaf Ebrahimi)*                                  #            )*
1376*22dc650dSSadaf Ebrahimi\)                             #                )
1377*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1378*22dc650dSSadaf Ebrahimi# optional trailing comments
1379*22dc650dSSadaf Ebrahimi(?:
1380*22dc650dSSadaf Ebrahimi\.
1381*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1382*22dc650dSSadaf Ebrahimi(?:
1383*22dc650dSSadaf Ebrahimi\(                              #  (
1384*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1385*22dc650dSSadaf Ebrahimi(?:                                 #       (
1386*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1387*22dc650dSSadaf Ebrahimi\(                            #  (
1388*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1389*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1390*22dc650dSSadaf Ebrahimi\)                           #                       )
1391*22dc650dSSadaf Ebrahimi)    #         special
1392*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1393*22dc650dSSadaf Ebrahimi)*                                  #            )*
1394*22dc650dSSadaf Ebrahimi\)                             #                )
1395*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1396*22dc650dSSadaf Ebrahimi(?:
1397*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1398*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1399*22dc650dSSadaf Ebrahimi|
1400*22dc650dSSadaf Ebrahimi\[                            # [
1401*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1402*22dc650dSSadaf Ebrahimi\]                           #           ]
1403*22dc650dSSadaf Ebrahimi)
1404*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1405*22dc650dSSadaf Ebrahimi(?:
1406*22dc650dSSadaf Ebrahimi\(                              #  (
1407*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1408*22dc650dSSadaf Ebrahimi(?:                                 #       (
1409*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1410*22dc650dSSadaf Ebrahimi\(                            #  (
1411*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1412*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1413*22dc650dSSadaf Ebrahimi\)                           #                       )
1414*22dc650dSSadaf Ebrahimi)    #         special
1415*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1416*22dc650dSSadaf Ebrahimi)*                                  #            )*
1417*22dc650dSSadaf Ebrahimi\)                             #                )
1418*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1419*22dc650dSSadaf Ebrahimi# optional trailing comments
1420*22dc650dSSadaf Ebrahimi)*
1421*22dc650dSSadaf Ebrahimi(?: ,
1422*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1423*22dc650dSSadaf Ebrahimi(?:
1424*22dc650dSSadaf Ebrahimi\(                              #  (
1425*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1426*22dc650dSSadaf Ebrahimi(?:                                 #       (
1427*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1428*22dc650dSSadaf Ebrahimi\(                            #  (
1429*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1430*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1431*22dc650dSSadaf Ebrahimi\)                           #                       )
1432*22dc650dSSadaf Ebrahimi)    #         special
1433*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1434*22dc650dSSadaf Ebrahimi)*                                  #            )*
1435*22dc650dSSadaf Ebrahimi\)                             #                )
1436*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1437*22dc650dSSadaf Ebrahimi@
1438*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1439*22dc650dSSadaf Ebrahimi(?:
1440*22dc650dSSadaf Ebrahimi\(                              #  (
1441*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1442*22dc650dSSadaf Ebrahimi(?:                                 #       (
1443*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1444*22dc650dSSadaf Ebrahimi\(                            #  (
1445*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1446*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1447*22dc650dSSadaf Ebrahimi\)                           #                       )
1448*22dc650dSSadaf Ebrahimi)    #         special
1449*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1450*22dc650dSSadaf Ebrahimi)*                                  #            )*
1451*22dc650dSSadaf Ebrahimi\)                             #                )
1452*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1453*22dc650dSSadaf Ebrahimi(?:
1454*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1455*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1456*22dc650dSSadaf Ebrahimi|
1457*22dc650dSSadaf Ebrahimi\[                            # [
1458*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1459*22dc650dSSadaf Ebrahimi\]                           #           ]
1460*22dc650dSSadaf Ebrahimi)
1461*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1462*22dc650dSSadaf Ebrahimi(?:
1463*22dc650dSSadaf Ebrahimi\(                              #  (
1464*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1465*22dc650dSSadaf Ebrahimi(?:                                 #       (
1466*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1467*22dc650dSSadaf Ebrahimi\(                            #  (
1468*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1469*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1470*22dc650dSSadaf Ebrahimi\)                           #                       )
1471*22dc650dSSadaf Ebrahimi)    #         special
1472*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1473*22dc650dSSadaf Ebrahimi)*                                  #            )*
1474*22dc650dSSadaf Ebrahimi\)                             #                )
1475*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1476*22dc650dSSadaf Ebrahimi# optional trailing comments
1477*22dc650dSSadaf Ebrahimi(?:
1478*22dc650dSSadaf Ebrahimi\.
1479*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1480*22dc650dSSadaf Ebrahimi(?:
1481*22dc650dSSadaf Ebrahimi\(                              #  (
1482*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1483*22dc650dSSadaf Ebrahimi(?:                                 #       (
1484*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1485*22dc650dSSadaf Ebrahimi\(                            #  (
1486*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1487*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1488*22dc650dSSadaf Ebrahimi\)                           #                       )
1489*22dc650dSSadaf Ebrahimi)    #         special
1490*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1491*22dc650dSSadaf Ebrahimi)*                                  #            )*
1492*22dc650dSSadaf Ebrahimi\)                             #                )
1493*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1494*22dc650dSSadaf Ebrahimi(?:
1495*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1496*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1497*22dc650dSSadaf Ebrahimi|
1498*22dc650dSSadaf Ebrahimi\[                            # [
1499*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1500*22dc650dSSadaf Ebrahimi\]                           #           ]
1501*22dc650dSSadaf Ebrahimi)
1502*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1503*22dc650dSSadaf Ebrahimi(?:
1504*22dc650dSSadaf Ebrahimi\(                              #  (
1505*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1506*22dc650dSSadaf Ebrahimi(?:                                 #       (
1507*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1508*22dc650dSSadaf Ebrahimi\(                            #  (
1509*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1510*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1511*22dc650dSSadaf Ebrahimi\)                           #                       )
1512*22dc650dSSadaf Ebrahimi)    #         special
1513*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1514*22dc650dSSadaf Ebrahimi)*                                  #            )*
1515*22dc650dSSadaf Ebrahimi\)                             #                )
1516*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1517*22dc650dSSadaf Ebrahimi# optional trailing comments
1518*22dc650dSSadaf Ebrahimi)*
1519*22dc650dSSadaf Ebrahimi)*  # additional domains
1520*22dc650dSSadaf Ebrahimi:
1521*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1522*22dc650dSSadaf Ebrahimi(?:
1523*22dc650dSSadaf Ebrahimi\(                              #  (
1524*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1525*22dc650dSSadaf Ebrahimi(?:                                 #       (
1526*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1527*22dc650dSSadaf Ebrahimi\(                            #  (
1528*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1529*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1530*22dc650dSSadaf Ebrahimi\)                           #                       )
1531*22dc650dSSadaf Ebrahimi)    #         special
1532*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1533*22dc650dSSadaf Ebrahimi)*                                  #            )*
1534*22dc650dSSadaf Ebrahimi\)                             #                )
1535*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1536*22dc650dSSadaf Ebrahimi# optional trailing comments
1537*22dc650dSSadaf Ebrahimi)?     #       optional route
1538*22dc650dSSadaf Ebrahimi(?:
1539*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1540*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1541*22dc650dSSadaf Ebrahimi# Atom
1542*22dc650dSSadaf Ebrahimi|                       #  or
1543*22dc650dSSadaf Ebrahimi"                                     # "
1544*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1545*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1546*22dc650dSSadaf Ebrahimi"                                     #        "
1547*22dc650dSSadaf Ebrahimi# Quoted string
1548*22dc650dSSadaf Ebrahimi)
1549*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1550*22dc650dSSadaf Ebrahimi(?:
1551*22dc650dSSadaf Ebrahimi\(                              #  (
1552*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1553*22dc650dSSadaf Ebrahimi(?:                                 #       (
1554*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1555*22dc650dSSadaf Ebrahimi\(                            #  (
1556*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1557*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1558*22dc650dSSadaf Ebrahimi\)                           #                       )
1559*22dc650dSSadaf Ebrahimi)    #         special
1560*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1561*22dc650dSSadaf Ebrahimi)*                                  #            )*
1562*22dc650dSSadaf Ebrahimi\)                             #                )
1563*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1564*22dc650dSSadaf Ebrahimi(?:
1565*22dc650dSSadaf Ebrahimi\.
1566*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1567*22dc650dSSadaf Ebrahimi(?:
1568*22dc650dSSadaf Ebrahimi\(                              #  (
1569*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1570*22dc650dSSadaf Ebrahimi(?:                                 #       (
1571*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1572*22dc650dSSadaf Ebrahimi\(                            #  (
1573*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1574*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1575*22dc650dSSadaf Ebrahimi\)                           #                       )
1576*22dc650dSSadaf Ebrahimi)    #         special
1577*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1578*22dc650dSSadaf Ebrahimi)*                                  #            )*
1579*22dc650dSSadaf Ebrahimi\)                             #                )
1580*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1581*22dc650dSSadaf Ebrahimi(?:
1582*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1583*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1584*22dc650dSSadaf Ebrahimi# Atom
1585*22dc650dSSadaf Ebrahimi|                       #  or
1586*22dc650dSSadaf Ebrahimi"                                     # "
1587*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1588*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1589*22dc650dSSadaf Ebrahimi"                                     #        "
1590*22dc650dSSadaf Ebrahimi# Quoted string
1591*22dc650dSSadaf Ebrahimi)
1592*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1593*22dc650dSSadaf Ebrahimi(?:
1594*22dc650dSSadaf Ebrahimi\(                              #  (
1595*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1596*22dc650dSSadaf Ebrahimi(?:                                 #       (
1597*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1598*22dc650dSSadaf Ebrahimi\(                            #  (
1599*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1600*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1601*22dc650dSSadaf Ebrahimi\)                           #                       )
1602*22dc650dSSadaf Ebrahimi)    #         special
1603*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1604*22dc650dSSadaf Ebrahimi)*                                  #            )*
1605*22dc650dSSadaf Ebrahimi\)                             #                )
1606*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1607*22dc650dSSadaf Ebrahimi# additional words
1608*22dc650dSSadaf Ebrahimi)*
1609*22dc650dSSadaf Ebrahimi@
1610*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1611*22dc650dSSadaf Ebrahimi(?:
1612*22dc650dSSadaf Ebrahimi\(                              #  (
1613*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1614*22dc650dSSadaf Ebrahimi(?:                                 #       (
1615*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1616*22dc650dSSadaf Ebrahimi\(                            #  (
1617*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1618*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1619*22dc650dSSadaf Ebrahimi\)                           #                       )
1620*22dc650dSSadaf Ebrahimi)    #         special
1621*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1622*22dc650dSSadaf Ebrahimi)*                                  #            )*
1623*22dc650dSSadaf Ebrahimi\)                             #                )
1624*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1625*22dc650dSSadaf Ebrahimi(?:
1626*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1627*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1628*22dc650dSSadaf Ebrahimi|
1629*22dc650dSSadaf Ebrahimi\[                            # [
1630*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1631*22dc650dSSadaf Ebrahimi\]                           #           ]
1632*22dc650dSSadaf Ebrahimi)
1633*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1634*22dc650dSSadaf Ebrahimi(?:
1635*22dc650dSSadaf Ebrahimi\(                              #  (
1636*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1637*22dc650dSSadaf Ebrahimi(?:                                 #       (
1638*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1639*22dc650dSSadaf Ebrahimi\(                            #  (
1640*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1641*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1642*22dc650dSSadaf Ebrahimi\)                           #                       )
1643*22dc650dSSadaf Ebrahimi)    #         special
1644*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1645*22dc650dSSadaf Ebrahimi)*                                  #            )*
1646*22dc650dSSadaf Ebrahimi\)                             #                )
1647*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1648*22dc650dSSadaf Ebrahimi# optional trailing comments
1649*22dc650dSSadaf Ebrahimi(?:
1650*22dc650dSSadaf Ebrahimi\.
1651*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1652*22dc650dSSadaf Ebrahimi(?:
1653*22dc650dSSadaf Ebrahimi\(                              #  (
1654*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1655*22dc650dSSadaf Ebrahimi(?:                                 #       (
1656*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1657*22dc650dSSadaf Ebrahimi\(                            #  (
1658*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1659*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1660*22dc650dSSadaf Ebrahimi\)                           #                       )
1661*22dc650dSSadaf Ebrahimi)    #         special
1662*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1663*22dc650dSSadaf Ebrahimi)*                                  #            )*
1664*22dc650dSSadaf Ebrahimi\)                             #                )
1665*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1666*22dc650dSSadaf Ebrahimi(?:
1667*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1668*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1669*22dc650dSSadaf Ebrahimi|
1670*22dc650dSSadaf Ebrahimi\[                            # [
1671*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1672*22dc650dSSadaf Ebrahimi\]                           #           ]
1673*22dc650dSSadaf Ebrahimi)
1674*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1675*22dc650dSSadaf Ebrahimi(?:
1676*22dc650dSSadaf Ebrahimi\(                              #  (
1677*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1678*22dc650dSSadaf Ebrahimi(?:                                 #       (
1679*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1680*22dc650dSSadaf Ebrahimi\(                            #  (
1681*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1682*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1683*22dc650dSSadaf Ebrahimi\)                           #                       )
1684*22dc650dSSadaf Ebrahimi)    #         special
1685*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1686*22dc650dSSadaf Ebrahimi)*                                  #            )*
1687*22dc650dSSadaf Ebrahimi\)                             #                )
1688*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1689*22dc650dSSadaf Ebrahimi# optional trailing comments
1690*22dc650dSSadaf Ebrahimi)*
1691*22dc650dSSadaf Ebrahimi#       address spec
1692*22dc650dSSadaf Ebrahimi>                    #                 >
1693*22dc650dSSadaf Ebrahimi# name and address
1694*22dc650dSSadaf Ebrahimi)
1695*22dc650dSSadaf Ebrahimi/x
1696*22dc650dSSadaf Ebrahimi    Alan Other <user\@dom.ain>
1697*22dc650dSSadaf Ebrahimi 0: Alan Other <[email protected]>
1698*22dc650dSSadaf Ebrahimi    <user\@dom.ain>
1699*22dc650dSSadaf Ebrahimi 0: [email protected]
1700*22dc650dSSadaf Ebrahimi    user\@dom.ain
1701*22dc650dSSadaf Ebrahimi 0: [email protected]
1702*22dc650dSSadaf Ebrahimi    \"A. Other\" <user.1234\@dom.ain> (a comment)
1703*22dc650dSSadaf Ebrahimi 0: "A. Other" <[email protected]>
1704*22dc650dSSadaf Ebrahimi    A. Other <user.1234\@dom.ain> (a comment)
1705*22dc650dSSadaf Ebrahimi 0:  Other <[email protected]>
1706*22dc650dSSadaf Ebrahimi    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1707*22dc650dSSadaf Ebrahimi 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
1708*22dc650dSSadaf Ebrahimi    A missing angle <user\@some.where
1709*22dc650dSSadaf Ebrahimi 0: [email protected]
1710*22dc650dSSadaf Ebrahimi\= Expect no match
1711*22dc650dSSadaf Ebrahimi    The quick brown fox
1712*22dc650dSSadaf EbrahimiNo match
1713*22dc650dSSadaf Ebrahimi
1714*22dc650dSSadaf Ebrahimi/abc\0def\00pqr\000xyz\0000AB/
1715*22dc650dSSadaf Ebrahimi    abc\0def\00pqr\000xyz\0000AB
1716*22dc650dSSadaf Ebrahimi 0: abc\x00def\x00pqr\x00xyz\x000AB
1717*22dc650dSSadaf Ebrahimi    abc456 abc\0def\00pqr\000xyz\0000ABCDE
1718*22dc650dSSadaf Ebrahimi 0: abc\x00def\x00pqr\x00xyz\x000AB
1719*22dc650dSSadaf Ebrahimi
1720*22dc650dSSadaf Ebrahimi/abc\x0def\x00pqr\x000xyz\x0000AB/
1721*22dc650dSSadaf Ebrahimi    abc\x0def\x00pqr\x000xyz\x0000AB
1722*22dc650dSSadaf Ebrahimi 0: abc\x0def\x00pqr\x000xyz\x0000AB
1723*22dc650dSSadaf Ebrahimi    abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1724*22dc650dSSadaf Ebrahimi 0: abc\x0def\x00pqr\x000xyz\x0000AB
1725*22dc650dSSadaf Ebrahimi
1726*22dc650dSSadaf Ebrahimi/^[\000-\037]/
1727*22dc650dSSadaf Ebrahimi    \0A
1728*22dc650dSSadaf Ebrahimi 0: \x00
1729*22dc650dSSadaf Ebrahimi    \01B
1730*22dc650dSSadaf Ebrahimi 0: \x01
1731*22dc650dSSadaf Ebrahimi    \037C
1732*22dc650dSSadaf Ebrahimi 0: \x1f
1733*22dc650dSSadaf Ebrahimi
1734*22dc650dSSadaf Ebrahimi/\0*/
1735*22dc650dSSadaf Ebrahimi    \0\0\0\0
1736*22dc650dSSadaf Ebrahimi 0: \x00\x00\x00\x00
1737*22dc650dSSadaf Ebrahimi
1738*22dc650dSSadaf Ebrahimi/A\x0{2,3}Z/
1739*22dc650dSSadaf Ebrahimi    The A\x0\x0Z
1740*22dc650dSSadaf Ebrahimi 0: A\x00\x00Z
1741*22dc650dSSadaf Ebrahimi    An A\0\x0\0Z
1742*22dc650dSSadaf Ebrahimi 0: A\x00\x00\x00Z
1743*22dc650dSSadaf Ebrahimi\= Expect no match
1744*22dc650dSSadaf Ebrahimi    A\0Z
1745*22dc650dSSadaf EbrahimiNo match
1746*22dc650dSSadaf Ebrahimi    A\0\x0\0\x0Z
1747*22dc650dSSadaf EbrahimiNo match
1748*22dc650dSSadaf Ebrahimi
1749*22dc650dSSadaf Ebrahimi/^(cow|)\1(bell)/
1750*22dc650dSSadaf Ebrahimi    cowcowbell
1751*22dc650dSSadaf Ebrahimi 0: cowcowbell
1752*22dc650dSSadaf Ebrahimi 1: cow
1753*22dc650dSSadaf Ebrahimi 2: bell
1754*22dc650dSSadaf Ebrahimi    bell
1755*22dc650dSSadaf Ebrahimi 0: bell
1756*22dc650dSSadaf Ebrahimi 1:
1757*22dc650dSSadaf Ebrahimi 2: bell
1758*22dc650dSSadaf Ebrahimi\= Expect no match
1759*22dc650dSSadaf Ebrahimi    cowbell
1760*22dc650dSSadaf EbrahimiNo match
1761*22dc650dSSadaf Ebrahimi
1762*22dc650dSSadaf Ebrahimi/^\s/
1763*22dc650dSSadaf Ebrahimi    \040abc
1764*22dc650dSSadaf Ebrahimi 0:
1765*22dc650dSSadaf Ebrahimi    \x0cabc
1766*22dc650dSSadaf Ebrahimi 0: \x0c
1767*22dc650dSSadaf Ebrahimi    \nabc
1768*22dc650dSSadaf Ebrahimi 0: \x0a
1769*22dc650dSSadaf Ebrahimi    \rabc
1770*22dc650dSSadaf Ebrahimi 0: \x0d
1771*22dc650dSSadaf Ebrahimi    \tabc
1772*22dc650dSSadaf Ebrahimi 0: \x09
1773*22dc650dSSadaf Ebrahimi\= Expect no match
1774*22dc650dSSadaf Ebrahimi    abc
1775*22dc650dSSadaf EbrahimiNo match
1776*22dc650dSSadaf Ebrahimi
1777*22dc650dSSadaf Ebrahimi/^a	b
1778*22dc650dSSadaf Ebrahimi      c/x
1779*22dc650dSSadaf Ebrahimi    abc
1780*22dc650dSSadaf Ebrahimi 0: abc
1781*22dc650dSSadaf Ebrahimi
1782*22dc650dSSadaf Ebrahimi/^(a|)\1*b/
1783*22dc650dSSadaf Ebrahimi    ab
1784*22dc650dSSadaf Ebrahimi 0: ab
1785*22dc650dSSadaf Ebrahimi 1: a
1786*22dc650dSSadaf Ebrahimi    aaaab
1787*22dc650dSSadaf Ebrahimi 0: aaaab
1788*22dc650dSSadaf Ebrahimi 1: a
1789*22dc650dSSadaf Ebrahimi    b
1790*22dc650dSSadaf Ebrahimi 0: b
1791*22dc650dSSadaf Ebrahimi 1:
1792*22dc650dSSadaf Ebrahimi\= Expect no match
1793*22dc650dSSadaf Ebrahimi    acb
1794*22dc650dSSadaf EbrahimiNo match
1795*22dc650dSSadaf Ebrahimi
1796*22dc650dSSadaf Ebrahimi/^(a|)\1+b/
1797*22dc650dSSadaf Ebrahimi    aab
1798*22dc650dSSadaf Ebrahimi 0: aab
1799*22dc650dSSadaf Ebrahimi 1: a
1800*22dc650dSSadaf Ebrahimi    aaaab
1801*22dc650dSSadaf Ebrahimi 0: aaaab
1802*22dc650dSSadaf Ebrahimi 1: a
1803*22dc650dSSadaf Ebrahimi    b
1804*22dc650dSSadaf Ebrahimi 0: b
1805*22dc650dSSadaf Ebrahimi 1:
1806*22dc650dSSadaf Ebrahimi\= Expect no match
1807*22dc650dSSadaf Ebrahimi    ab
1808*22dc650dSSadaf EbrahimiNo match
1809*22dc650dSSadaf Ebrahimi
1810*22dc650dSSadaf Ebrahimi/^(a|)\1?b/
1811*22dc650dSSadaf Ebrahimi    ab
1812*22dc650dSSadaf Ebrahimi 0: ab
1813*22dc650dSSadaf Ebrahimi 1: a
1814*22dc650dSSadaf Ebrahimi    aab
1815*22dc650dSSadaf Ebrahimi 0: aab
1816*22dc650dSSadaf Ebrahimi 1: a
1817*22dc650dSSadaf Ebrahimi    b
1818*22dc650dSSadaf Ebrahimi 0: b
1819*22dc650dSSadaf Ebrahimi 1:
1820*22dc650dSSadaf Ebrahimi\= Expect no match
1821*22dc650dSSadaf Ebrahimi    acb
1822*22dc650dSSadaf EbrahimiNo match
1823*22dc650dSSadaf Ebrahimi
1824*22dc650dSSadaf Ebrahimi/^(a|)\1{2}b/
1825*22dc650dSSadaf Ebrahimi    aaab
1826*22dc650dSSadaf Ebrahimi 0: aaab
1827*22dc650dSSadaf Ebrahimi 1: a
1828*22dc650dSSadaf Ebrahimi    b
1829*22dc650dSSadaf Ebrahimi 0: b
1830*22dc650dSSadaf Ebrahimi 1:
1831*22dc650dSSadaf Ebrahimi\= Expect no match
1832*22dc650dSSadaf Ebrahimi    ab
1833*22dc650dSSadaf EbrahimiNo match
1834*22dc650dSSadaf Ebrahimi    aab
1835*22dc650dSSadaf EbrahimiNo match
1836*22dc650dSSadaf Ebrahimi    aaaab
1837*22dc650dSSadaf EbrahimiNo match
1838*22dc650dSSadaf Ebrahimi
1839*22dc650dSSadaf Ebrahimi/^(a|)\1{2,3}b/
1840*22dc650dSSadaf Ebrahimi    aaab
1841*22dc650dSSadaf Ebrahimi 0: aaab
1842*22dc650dSSadaf Ebrahimi 1: a
1843*22dc650dSSadaf Ebrahimi    aaaab
1844*22dc650dSSadaf Ebrahimi 0: aaaab
1845*22dc650dSSadaf Ebrahimi 1: a
1846*22dc650dSSadaf Ebrahimi    b
1847*22dc650dSSadaf Ebrahimi 0: b
1848*22dc650dSSadaf Ebrahimi 1:
1849*22dc650dSSadaf Ebrahimi\= Expect no match
1850*22dc650dSSadaf Ebrahimi    ab
1851*22dc650dSSadaf EbrahimiNo match
1852*22dc650dSSadaf Ebrahimi    aab
1853*22dc650dSSadaf EbrahimiNo match
1854*22dc650dSSadaf Ebrahimi    aaaaab
1855*22dc650dSSadaf EbrahimiNo match
1856*22dc650dSSadaf Ebrahimi
1857*22dc650dSSadaf Ebrahimi/ab{1,3}bc/
1858*22dc650dSSadaf Ebrahimi    abbbbc
1859*22dc650dSSadaf Ebrahimi 0: abbbbc
1860*22dc650dSSadaf Ebrahimi    abbbc
1861*22dc650dSSadaf Ebrahimi 0: abbbc
1862*22dc650dSSadaf Ebrahimi    abbc
1863*22dc650dSSadaf Ebrahimi 0: abbc
1864*22dc650dSSadaf Ebrahimi\= Expect no match
1865*22dc650dSSadaf Ebrahimi    abc
1866*22dc650dSSadaf EbrahimiNo match
1867*22dc650dSSadaf Ebrahimi    abbbbbc
1868*22dc650dSSadaf EbrahimiNo match
1869*22dc650dSSadaf Ebrahimi
1870*22dc650dSSadaf Ebrahimi/([^.]*)\.([^:]*):[T ]+(.*)/
1871*22dc650dSSadaf Ebrahimi    track1.title:TBlah blah blah
1872*22dc650dSSadaf Ebrahimi 0: track1.title:TBlah blah blah
1873*22dc650dSSadaf Ebrahimi 1: track1
1874*22dc650dSSadaf Ebrahimi 2: title
1875*22dc650dSSadaf Ebrahimi 3: Blah blah blah
1876*22dc650dSSadaf Ebrahimi
1877*22dc650dSSadaf Ebrahimi/([^.]*)\.([^:]*):[T ]+(.*)/i
1878*22dc650dSSadaf Ebrahimi    track1.title:TBlah blah blah
1879*22dc650dSSadaf Ebrahimi 0: track1.title:TBlah blah blah
1880*22dc650dSSadaf Ebrahimi 1: track1
1881*22dc650dSSadaf Ebrahimi 2: title
1882*22dc650dSSadaf Ebrahimi 3: Blah blah blah
1883*22dc650dSSadaf Ebrahimi
1884*22dc650dSSadaf Ebrahimi/([^.]*)\.([^:]*):[t ]+(.*)/i
1885*22dc650dSSadaf Ebrahimi    track1.title:TBlah blah blah
1886*22dc650dSSadaf Ebrahimi 0: track1.title:TBlah blah blah
1887*22dc650dSSadaf Ebrahimi 1: track1
1888*22dc650dSSadaf Ebrahimi 2: title
1889*22dc650dSSadaf Ebrahimi 3: Blah blah blah
1890*22dc650dSSadaf Ebrahimi
1891*22dc650dSSadaf Ebrahimi/^[W-c]+$/
1892*22dc650dSSadaf Ebrahimi    WXY_^abc
1893*22dc650dSSadaf Ebrahimi 0: WXY_^abc
1894*22dc650dSSadaf Ebrahimi\= Expect no match
1895*22dc650dSSadaf Ebrahimi    wxy
1896*22dc650dSSadaf EbrahimiNo match
1897*22dc650dSSadaf Ebrahimi
1898*22dc650dSSadaf Ebrahimi/^[W-c]+$/i
1899*22dc650dSSadaf Ebrahimi    WXY_^abc
1900*22dc650dSSadaf Ebrahimi 0: WXY_^abc
1901*22dc650dSSadaf Ebrahimi    wxy_^ABC
1902*22dc650dSSadaf Ebrahimi 0: wxy_^ABC
1903*22dc650dSSadaf Ebrahimi
1904*22dc650dSSadaf Ebrahimi/^[\x3f-\x5F]+$/i
1905*22dc650dSSadaf Ebrahimi    WXY_^abc
1906*22dc650dSSadaf Ebrahimi 0: WXY_^abc
1907*22dc650dSSadaf Ebrahimi    wxy_^ABC
1908*22dc650dSSadaf Ebrahimi 0: wxy_^ABC
1909*22dc650dSSadaf Ebrahimi
1910*22dc650dSSadaf Ebrahimi/^abc$/m
1911*22dc650dSSadaf Ebrahimi    abc
1912*22dc650dSSadaf Ebrahimi 0: abc
1913*22dc650dSSadaf Ebrahimi    qqq\nabc
1914*22dc650dSSadaf Ebrahimi 0: abc
1915*22dc650dSSadaf Ebrahimi    abc\nzzz
1916*22dc650dSSadaf Ebrahimi 0: abc
1917*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1918*22dc650dSSadaf Ebrahimi 0: abc
1919*22dc650dSSadaf Ebrahimi
1920*22dc650dSSadaf Ebrahimi/^abc$/
1921*22dc650dSSadaf Ebrahimi    abc
1922*22dc650dSSadaf Ebrahimi 0: abc
1923*22dc650dSSadaf Ebrahimi\= Expect no match
1924*22dc650dSSadaf Ebrahimi    qqq\nabc
1925*22dc650dSSadaf EbrahimiNo match
1926*22dc650dSSadaf Ebrahimi    abc\nzzz
1927*22dc650dSSadaf EbrahimiNo match
1928*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1929*22dc650dSSadaf EbrahimiNo match
1930*22dc650dSSadaf Ebrahimi
1931*22dc650dSSadaf Ebrahimi/\Aabc\Z/m
1932*22dc650dSSadaf Ebrahimi    abc
1933*22dc650dSSadaf Ebrahimi 0: abc
1934*22dc650dSSadaf Ebrahimi    abc\n
1935*22dc650dSSadaf Ebrahimi 0: abc
1936*22dc650dSSadaf Ebrahimi\= Expect no match
1937*22dc650dSSadaf Ebrahimi    qqq\nabc
1938*22dc650dSSadaf EbrahimiNo match
1939*22dc650dSSadaf Ebrahimi    abc\nzzz
1940*22dc650dSSadaf EbrahimiNo match
1941*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1942*22dc650dSSadaf EbrahimiNo match
1943*22dc650dSSadaf Ebrahimi
1944*22dc650dSSadaf Ebrahimi/\A(.)*\Z/s
1945*22dc650dSSadaf Ebrahimi    abc\ndef
1946*22dc650dSSadaf Ebrahimi 0: abc\x0adef
1947*22dc650dSSadaf Ebrahimi 1: f
1948*22dc650dSSadaf Ebrahimi
1949*22dc650dSSadaf Ebrahimi/\A(.)*\Z/m
1950*22dc650dSSadaf Ebrahimi\= Expect no match
1951*22dc650dSSadaf Ebrahimi    abc\ndef
1952*22dc650dSSadaf EbrahimiNo match
1953*22dc650dSSadaf Ebrahimi
1954*22dc650dSSadaf Ebrahimi/(?:b)|(?::+)/
1955*22dc650dSSadaf Ebrahimi    b::c
1956*22dc650dSSadaf Ebrahimi 0: b
1957*22dc650dSSadaf Ebrahimi    c::b
1958*22dc650dSSadaf Ebrahimi 0: ::
1959*22dc650dSSadaf Ebrahimi
1960*22dc650dSSadaf Ebrahimi/[-az]+/
1961*22dc650dSSadaf Ebrahimi    az-
1962*22dc650dSSadaf Ebrahimi 0: az-
1963*22dc650dSSadaf Ebrahimi\= Expect no match
1964*22dc650dSSadaf Ebrahimi    b
1965*22dc650dSSadaf EbrahimiNo match
1966*22dc650dSSadaf Ebrahimi
1967*22dc650dSSadaf Ebrahimi/[az-]+/
1968*22dc650dSSadaf Ebrahimi    za-
1969*22dc650dSSadaf Ebrahimi 0: za-
1970*22dc650dSSadaf Ebrahimi\= Expect no match
1971*22dc650dSSadaf Ebrahimi    b
1972*22dc650dSSadaf EbrahimiNo match
1973*22dc650dSSadaf Ebrahimi
1974*22dc650dSSadaf Ebrahimi/[a\-z]+/
1975*22dc650dSSadaf Ebrahimi    a-z
1976*22dc650dSSadaf Ebrahimi 0: a-z
1977*22dc650dSSadaf Ebrahimi\= Expect no match
1978*22dc650dSSadaf Ebrahimi    b
1979*22dc650dSSadaf EbrahimiNo match
1980*22dc650dSSadaf Ebrahimi
1981*22dc650dSSadaf Ebrahimi/[a-z]+/
1982*22dc650dSSadaf Ebrahimi    abcdxyz
1983*22dc650dSSadaf Ebrahimi 0: abcdxyz
1984*22dc650dSSadaf Ebrahimi
1985*22dc650dSSadaf Ebrahimi/[\d-]+/
1986*22dc650dSSadaf Ebrahimi    12-34
1987*22dc650dSSadaf Ebrahimi 0: 12-34
1988*22dc650dSSadaf Ebrahimi\= Expect no match
1989*22dc650dSSadaf Ebrahimi    aaa
1990*22dc650dSSadaf EbrahimiNo match
1991*22dc650dSSadaf Ebrahimi
1992*22dc650dSSadaf Ebrahimi/\x5c/
1993*22dc650dSSadaf Ebrahimi    \\
1994*22dc650dSSadaf Ebrahimi 0: \
1995*22dc650dSSadaf Ebrahimi
1996*22dc650dSSadaf Ebrahimi/\x20Z/
1997*22dc650dSSadaf Ebrahimi    the Zoo
1998*22dc650dSSadaf Ebrahimi 0:  Z
1999*22dc650dSSadaf Ebrahimi\= Expect no match
2000*22dc650dSSadaf Ebrahimi    Zulu
2001*22dc650dSSadaf EbrahimiNo match
2002*22dc650dSSadaf Ebrahimi
2003*22dc650dSSadaf Ebrahimi/(abc)\1/i
2004*22dc650dSSadaf Ebrahimi    abcabc
2005*22dc650dSSadaf Ebrahimi 0: abcabc
2006*22dc650dSSadaf Ebrahimi 1: abc
2007*22dc650dSSadaf Ebrahimi    ABCabc
2008*22dc650dSSadaf Ebrahimi 0: ABCabc
2009*22dc650dSSadaf Ebrahimi 1: ABC
2010*22dc650dSSadaf Ebrahimi    abcABC
2011*22dc650dSSadaf Ebrahimi 0: abcABC
2012*22dc650dSSadaf Ebrahimi 1: abc
2013*22dc650dSSadaf Ebrahimi
2014*22dc650dSSadaf Ebrahimi/abc$/
2015*22dc650dSSadaf Ebrahimi    abc
2016*22dc650dSSadaf Ebrahimi 0: abc
2017*22dc650dSSadaf Ebrahimi    abc\n
2018*22dc650dSSadaf Ebrahimi 0: abc
2019*22dc650dSSadaf Ebrahimi\= Expect no match
2020*22dc650dSSadaf Ebrahimi    abc\ndef
2021*22dc650dSSadaf EbrahimiNo match
2022*22dc650dSSadaf Ebrahimi
2023*22dc650dSSadaf Ebrahimi/(abc)\123/
2024*22dc650dSSadaf Ebrahimi    abc\x53
2025*22dc650dSSadaf Ebrahimi 0: abcS
2026*22dc650dSSadaf Ebrahimi 1: abc
2027*22dc650dSSadaf Ebrahimi
2028*22dc650dSSadaf Ebrahimi/(abc)\223/
2029*22dc650dSSadaf Ebrahimi    abc\x93
2030*22dc650dSSadaf Ebrahimi 0: abc\x93
2031*22dc650dSSadaf Ebrahimi 1: abc
2032*22dc650dSSadaf Ebrahimi
2033*22dc650dSSadaf Ebrahimi/(abc)\323/
2034*22dc650dSSadaf Ebrahimi    abc\xd3
2035*22dc650dSSadaf Ebrahimi 0: abc\xd3
2036*22dc650dSSadaf Ebrahimi 1: abc
2037*22dc650dSSadaf Ebrahimi
2038*22dc650dSSadaf Ebrahimi/(abc)\100/
2039*22dc650dSSadaf Ebrahimi    abc\x40
2040*22dc650dSSadaf Ebrahimi 0: abc@
2041*22dc650dSSadaf Ebrahimi 1: abc
2042*22dc650dSSadaf Ebrahimi    abc\100
2043*22dc650dSSadaf Ebrahimi 0: abc@
2044*22dc650dSSadaf Ebrahimi 1: abc
2045*22dc650dSSadaf Ebrahimi
2046*22dc650dSSadaf Ebrahimi/(abc)\1000/
2047*22dc650dSSadaf Ebrahimi    abc\x400
2048*22dc650dSSadaf Ebrahimi 0: abc@0
2049*22dc650dSSadaf Ebrahimi 1: abc
2050*22dc650dSSadaf Ebrahimi    abc\x40\x30
2051*22dc650dSSadaf Ebrahimi 0: abc@0
2052*22dc650dSSadaf Ebrahimi 1: abc
2053*22dc650dSSadaf Ebrahimi    abc\1000
2054*22dc650dSSadaf Ebrahimi 0: abc@0
2055*22dc650dSSadaf Ebrahimi 1: abc
2056*22dc650dSSadaf Ebrahimi    abc\100\x30
2057*22dc650dSSadaf Ebrahimi 0: abc@0
2058*22dc650dSSadaf Ebrahimi 1: abc
2059*22dc650dSSadaf Ebrahimi    abc\100\060
2060*22dc650dSSadaf Ebrahimi 0: abc@0
2061*22dc650dSSadaf Ebrahimi 1: abc
2062*22dc650dSSadaf Ebrahimi    abc\100\60
2063*22dc650dSSadaf Ebrahimi 0: abc@0
2064*22dc650dSSadaf Ebrahimi 1: abc
2065*22dc650dSSadaf Ebrahimi
2066*22dc650dSSadaf Ebrahimi/^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
2067*22dc650dSSadaf Ebrahimi    ABCDEFGHIHI
2068*22dc650dSSadaf Ebrahimi 0: ABCDEFGHIHI
2069*22dc650dSSadaf Ebrahimi 1: A
2070*22dc650dSSadaf Ebrahimi 2: B
2071*22dc650dSSadaf Ebrahimi 3: C
2072*22dc650dSSadaf Ebrahimi 4: D
2073*22dc650dSSadaf Ebrahimi 5: E
2074*22dc650dSSadaf Ebrahimi 6: F
2075*22dc650dSSadaf Ebrahimi 7: G
2076*22dc650dSSadaf Ebrahimi 8: H
2077*22dc650dSSadaf Ebrahimi 9: I
2078*22dc650dSSadaf Ebrahimi
2079*22dc650dSSadaf Ebrahimi/^[A\8B\9C]+$/
2080*22dc650dSSadaf Ebrahimi    A8B9C
2081*22dc650dSSadaf Ebrahimi 0: A8B9C
2082*22dc650dSSadaf Ebrahimi\= Expect no match
2083*22dc650dSSadaf Ebrahimi    A8B9C\x00
2084*22dc650dSSadaf EbrahimiNo match
2085*22dc650dSSadaf Ebrahimi
2086*22dc650dSSadaf Ebrahimi/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
2087*22dc650dSSadaf Ebrahimi    abcdefghijkllS
2088*22dc650dSSadaf Ebrahimi 0: abcdefghijkllS
2089*22dc650dSSadaf Ebrahimi 1: a
2090*22dc650dSSadaf Ebrahimi 2: b
2091*22dc650dSSadaf Ebrahimi 3: c
2092*22dc650dSSadaf Ebrahimi 4: d
2093*22dc650dSSadaf Ebrahimi 5: e
2094*22dc650dSSadaf Ebrahimi 6: f
2095*22dc650dSSadaf Ebrahimi 7: g
2096*22dc650dSSadaf Ebrahimi 8: h
2097*22dc650dSSadaf Ebrahimi 9: i
2098*22dc650dSSadaf Ebrahimi10: j
2099*22dc650dSSadaf Ebrahimi11: k
2100*22dc650dSSadaf Ebrahimi12: l
2101*22dc650dSSadaf Ebrahimi
2102*22dc650dSSadaf Ebrahimi/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
2103*22dc650dSSadaf Ebrahimi    abcdefghijk\12S
2104*22dc650dSSadaf Ebrahimi 0: abcdefghijk\x0aS
2105*22dc650dSSadaf Ebrahimi 1: a
2106*22dc650dSSadaf Ebrahimi 2: b
2107*22dc650dSSadaf Ebrahimi 3: c
2108*22dc650dSSadaf Ebrahimi 4: d
2109*22dc650dSSadaf Ebrahimi 5: e
2110*22dc650dSSadaf Ebrahimi 6: f
2111*22dc650dSSadaf Ebrahimi 7: g
2112*22dc650dSSadaf Ebrahimi 8: h
2113*22dc650dSSadaf Ebrahimi 9: i
2114*22dc650dSSadaf Ebrahimi10: j
2115*22dc650dSSadaf Ebrahimi11: k
2116*22dc650dSSadaf Ebrahimi
2117*22dc650dSSadaf Ebrahimi/a{0}bc/
2118*22dc650dSSadaf Ebrahimi    bc
2119*22dc650dSSadaf Ebrahimi 0: bc
2120*22dc650dSSadaf Ebrahimi
2121*22dc650dSSadaf Ebrahimi/(a|(bc)){0,0}?xyz/
2122*22dc650dSSadaf Ebrahimi    xyz
2123*22dc650dSSadaf Ebrahimi 0: xyz
2124*22dc650dSSadaf Ebrahimi
2125*22dc650dSSadaf Ebrahimi/abc[\10]de/
2126*22dc650dSSadaf Ebrahimi    abc\010de
2127*22dc650dSSadaf Ebrahimi 0: abc\x08de
2128*22dc650dSSadaf Ebrahimi
2129*22dc650dSSadaf Ebrahimi/abc[\1]de/
2130*22dc650dSSadaf Ebrahimi    abc\1de
2131*22dc650dSSadaf Ebrahimi 0: abc\x01de
2132*22dc650dSSadaf Ebrahimi
2133*22dc650dSSadaf Ebrahimi/(abc)[\1]de/
2134*22dc650dSSadaf Ebrahimi    abc\1de
2135*22dc650dSSadaf Ebrahimi 0: abc\x01de
2136*22dc650dSSadaf Ebrahimi 1: abc
2137*22dc650dSSadaf Ebrahimi
2138*22dc650dSSadaf Ebrahimi/(?s)a.b/
2139*22dc650dSSadaf Ebrahimi    a\nb
2140*22dc650dSSadaf Ebrahimi 0: a\x0ab
2141*22dc650dSSadaf Ebrahimi
2142*22dc650dSSadaf Ebrahimi/^([^a])([^\b])([^c]*)([^d]{3,4})/
2143*22dc650dSSadaf Ebrahimi    baNOTccccd
2144*22dc650dSSadaf Ebrahimi 0: baNOTcccc
2145*22dc650dSSadaf Ebrahimi 1: b
2146*22dc650dSSadaf Ebrahimi 2: a
2147*22dc650dSSadaf Ebrahimi 3: NOT
2148*22dc650dSSadaf Ebrahimi 4: cccc
2149*22dc650dSSadaf Ebrahimi    baNOTcccd
2150*22dc650dSSadaf Ebrahimi 0: baNOTccc
2151*22dc650dSSadaf Ebrahimi 1: b
2152*22dc650dSSadaf Ebrahimi 2: a
2153*22dc650dSSadaf Ebrahimi 3: NOT
2154*22dc650dSSadaf Ebrahimi 4: ccc
2155*22dc650dSSadaf Ebrahimi    baNOTccd
2156*22dc650dSSadaf Ebrahimi 0: baNOTcc
2157*22dc650dSSadaf Ebrahimi 1: b
2158*22dc650dSSadaf Ebrahimi 2: a
2159*22dc650dSSadaf Ebrahimi 3: NO
2160*22dc650dSSadaf Ebrahimi 4: Tcc
2161*22dc650dSSadaf Ebrahimi    bacccd
2162*22dc650dSSadaf Ebrahimi 0: baccc
2163*22dc650dSSadaf Ebrahimi 1: b
2164*22dc650dSSadaf Ebrahimi 2: a
2165*22dc650dSSadaf Ebrahimi 3:
2166*22dc650dSSadaf Ebrahimi 4: ccc
2167*22dc650dSSadaf Ebrahimi\= Expect no match
2168*22dc650dSSadaf Ebrahimi    anything
2169*22dc650dSSadaf EbrahimiNo match
2170*22dc650dSSadaf Ebrahimi    b\bc
2171*22dc650dSSadaf EbrahimiNo match
2172*22dc650dSSadaf Ebrahimi    baccd
2173*22dc650dSSadaf EbrahimiNo match
2174*22dc650dSSadaf Ebrahimi
2175*22dc650dSSadaf Ebrahimi/[^a]/
2176*22dc650dSSadaf Ebrahimi    Abc
2177*22dc650dSSadaf Ebrahimi 0: A
2178*22dc650dSSadaf Ebrahimi
2179*22dc650dSSadaf Ebrahimi/[^a]/i
2180*22dc650dSSadaf Ebrahimi    Abc
2181*22dc650dSSadaf Ebrahimi 0: b
2182*22dc650dSSadaf Ebrahimi
2183*22dc650dSSadaf Ebrahimi/[^a]+/
2184*22dc650dSSadaf Ebrahimi    AAAaAbc
2185*22dc650dSSadaf Ebrahimi 0: AAA
2186*22dc650dSSadaf Ebrahimi
2187*22dc650dSSadaf Ebrahimi/[^a]+/i
2188*22dc650dSSadaf Ebrahimi    AAAaAbc
2189*22dc650dSSadaf Ebrahimi 0: bc
2190*22dc650dSSadaf Ebrahimi
2191*22dc650dSSadaf Ebrahimi/[^a]+/
2192*22dc650dSSadaf Ebrahimi    bbb\nccc
2193*22dc650dSSadaf Ebrahimi 0: bbb\x0accc
2194*22dc650dSSadaf Ebrahimi
2195*22dc650dSSadaf Ebrahimi/[^k]$/
2196*22dc650dSSadaf Ebrahimi    abc
2197*22dc650dSSadaf Ebrahimi 0: c
2198*22dc650dSSadaf Ebrahimi\= Expect no match
2199*22dc650dSSadaf Ebrahimi    abk
2200*22dc650dSSadaf EbrahimiNo match
2201*22dc650dSSadaf Ebrahimi
2202*22dc650dSSadaf Ebrahimi/[^k]{2,3}$/
2203*22dc650dSSadaf Ebrahimi    abc
2204*22dc650dSSadaf Ebrahimi 0: abc
2205*22dc650dSSadaf Ebrahimi    kbc
2206*22dc650dSSadaf Ebrahimi 0: bc
2207*22dc650dSSadaf Ebrahimi    kabc
2208*22dc650dSSadaf Ebrahimi 0: abc
2209*22dc650dSSadaf Ebrahimi\= Expect no match
2210*22dc650dSSadaf Ebrahimi    abk
2211*22dc650dSSadaf EbrahimiNo match
2212*22dc650dSSadaf Ebrahimi    akb
2213*22dc650dSSadaf EbrahimiNo match
2214*22dc650dSSadaf Ebrahimi    akk
2215*22dc650dSSadaf EbrahimiNo match
2216*22dc650dSSadaf Ebrahimi
2217*22dc650dSSadaf Ebrahimi/^\d{8,}\@.+[^k]$/
2218*22dc650dSSadaf Ebrahimi    12345678\@a.b.c.d
2219*22dc650dSSadaf Ebrahimi 0: [email protected]
2220*22dc650dSSadaf Ebrahimi    123456789\@x.y.z
2221*22dc650dSSadaf Ebrahimi 0: [email protected]
2222*22dc650dSSadaf Ebrahimi\= Expect no match
2223*22dc650dSSadaf Ebrahimi    12345678\@x.y.uk
2224*22dc650dSSadaf EbrahimiNo match
2225*22dc650dSSadaf Ebrahimi    1234567\@a.b.c.d
2226*22dc650dSSadaf EbrahimiNo match
2227*22dc650dSSadaf Ebrahimi
2228*22dc650dSSadaf Ebrahimi/(a)\1{8,}/
2229*22dc650dSSadaf Ebrahimi    aaaaaaaaa
2230*22dc650dSSadaf Ebrahimi 0: aaaaaaaaa
2231*22dc650dSSadaf Ebrahimi 1: a
2232*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
2233*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaa
2234*22dc650dSSadaf Ebrahimi 1: a
2235*22dc650dSSadaf Ebrahimi\= Expect no match
2236*22dc650dSSadaf Ebrahimi    aaaaaaa
2237*22dc650dSSadaf EbrahimiNo match
2238*22dc650dSSadaf Ebrahimi
2239*22dc650dSSadaf Ebrahimi/[^a]/
2240*22dc650dSSadaf Ebrahimi    aaaabcd
2241*22dc650dSSadaf Ebrahimi 0: b
2242*22dc650dSSadaf Ebrahimi    aaAabcd
2243*22dc650dSSadaf Ebrahimi 0: A
2244*22dc650dSSadaf Ebrahimi
2245*22dc650dSSadaf Ebrahimi/[^a]/i
2246*22dc650dSSadaf Ebrahimi    aaaabcd
2247*22dc650dSSadaf Ebrahimi 0: b
2248*22dc650dSSadaf Ebrahimi    aaAabcd
2249*22dc650dSSadaf Ebrahimi 0: b
2250*22dc650dSSadaf Ebrahimi
2251*22dc650dSSadaf Ebrahimi/[^az]/
2252*22dc650dSSadaf Ebrahimi    aaaabcd
2253*22dc650dSSadaf Ebrahimi 0: b
2254*22dc650dSSadaf Ebrahimi    aaAabcd
2255*22dc650dSSadaf Ebrahimi 0: A
2256*22dc650dSSadaf Ebrahimi
2257*22dc650dSSadaf Ebrahimi/[^az]/i
2258*22dc650dSSadaf Ebrahimi    aaaabcd
2259*22dc650dSSadaf Ebrahimi 0: b
2260*22dc650dSSadaf Ebrahimi    aaAabcd
2261*22dc650dSSadaf Ebrahimi 0: b
2262*22dc650dSSadaf Ebrahimi
2263*22dc650dSSadaf Ebrahimi/\000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377/
2264*22dc650dSSadaf Ebrahimi \000\001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037\040\041\042\043\044\045\046\047\050\051\052\053\054\055\056\057\060\061\062\063\064\065\066\067\070\071\072\073\074\075\076\077\100\101\102\103\104\105\106\107\110\111\112\113\114\115\116\117\120\121\122\123\124\125\126\127\130\131\132\133\134\135\136\137\140\141\142\143\144\145\146\147\150\151\152\153\154\155\156\157\160\161\162\163\164\165\166\167\170\171\172\173\174\175\176\177\200\201\202\203\204\205\206\207\210\211\212\213\214\215\216\217\220\221\222\223\224\225\226\227\230\231\232\233\234\235\236\237\240\241\242\243\244\245\246\247\250\251\252\253\254\255\256\257\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337\340\341\342\343\344\345\346\347\350\351\352\353\354\355\356\357\360\361\362\363\364\365\366\367\370\371\372\373\374\375\376\377
2265*22dc650dSSadaf Ebrahimi 0: \x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff
2266*22dc650dSSadaf Ebrahimi
2267*22dc650dSSadaf Ebrahimi/P[^*]TAIRE[^*]{1,6}?LL/
2268*22dc650dSSadaf Ebrahimi    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2269*22dc650dSSadaf Ebrahimi 0: PSTAIREISLL
2270*22dc650dSSadaf Ebrahimi
2271*22dc650dSSadaf Ebrahimi/P[^*]TAIRE[^*]{1,}?LL/
2272*22dc650dSSadaf Ebrahimi    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
2273*22dc650dSSadaf Ebrahimi 0: PSTAIREISLL
2274*22dc650dSSadaf Ebrahimi
2275*22dc650dSSadaf Ebrahimi/(\.\d\d[1-9]?)\d+/
2276*22dc650dSSadaf Ebrahimi    1.230003938
2277*22dc650dSSadaf Ebrahimi 0: .230003938
2278*22dc650dSSadaf Ebrahimi 1: .23
2279*22dc650dSSadaf Ebrahimi    1.875000282
2280*22dc650dSSadaf Ebrahimi 0: .875000282
2281*22dc650dSSadaf Ebrahimi 1: .875
2282*22dc650dSSadaf Ebrahimi    1.235
2283*22dc650dSSadaf Ebrahimi 0: .235
2284*22dc650dSSadaf Ebrahimi 1: .23
2285*22dc650dSSadaf Ebrahimi
2286*22dc650dSSadaf Ebrahimi/(\.\d\d((?=0)|\d(?=\d)))/
2287*22dc650dSSadaf Ebrahimi    1.230003938
2288*22dc650dSSadaf Ebrahimi 0: .23
2289*22dc650dSSadaf Ebrahimi 1: .23
2290*22dc650dSSadaf Ebrahimi 2:
2291*22dc650dSSadaf Ebrahimi    1.875000282
2292*22dc650dSSadaf Ebrahimi 0: .875
2293*22dc650dSSadaf Ebrahimi 1: .875
2294*22dc650dSSadaf Ebrahimi 2: 5
2295*22dc650dSSadaf Ebrahimi\= Expect no match
2296*22dc650dSSadaf Ebrahimi    1.235
2297*22dc650dSSadaf EbrahimiNo match
2298*22dc650dSSadaf Ebrahimi
2299*22dc650dSSadaf Ebrahimi/a(?)b/
2300*22dc650dSSadaf Ebrahimi    ab
2301*22dc650dSSadaf Ebrahimi 0: ab
2302*22dc650dSSadaf Ebrahimi
2303*22dc650dSSadaf Ebrahimi/\b(foo)\s+(\w+)/i
2304*22dc650dSSadaf Ebrahimi    Food is on the foo table
2305*22dc650dSSadaf Ebrahimi 0: foo table
2306*22dc650dSSadaf Ebrahimi 1: foo
2307*22dc650dSSadaf Ebrahimi 2: table
2308*22dc650dSSadaf Ebrahimi
2309*22dc650dSSadaf Ebrahimi/foo(.*)bar/
2310*22dc650dSSadaf Ebrahimi    The food is under the bar in the barn.
2311*22dc650dSSadaf Ebrahimi 0: food is under the bar in the bar
2312*22dc650dSSadaf Ebrahimi 1: d is under the bar in the
2313*22dc650dSSadaf Ebrahimi
2314*22dc650dSSadaf Ebrahimi/foo(.*?)bar/
2315*22dc650dSSadaf Ebrahimi    The food is under the bar in the barn.
2316*22dc650dSSadaf Ebrahimi 0: food is under the bar
2317*22dc650dSSadaf Ebrahimi 1: d is under the
2318*22dc650dSSadaf Ebrahimi
2319*22dc650dSSadaf Ebrahimi/(.*)(\d*)/
2320*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2321*22dc650dSSadaf Ebrahimi 0: I have 2 numbers: 53147
2322*22dc650dSSadaf Ebrahimi 1: I have 2 numbers: 53147
2323*22dc650dSSadaf Ebrahimi 2:
2324*22dc650dSSadaf Ebrahimi
2325*22dc650dSSadaf Ebrahimi/(.*)(\d+)/
2326*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2327*22dc650dSSadaf Ebrahimi 0: I have 2 numbers: 53147
2328*22dc650dSSadaf Ebrahimi 1: I have 2 numbers: 5314
2329*22dc650dSSadaf Ebrahimi 2: 7
2330*22dc650dSSadaf Ebrahimi
2331*22dc650dSSadaf Ebrahimi/(.*?)(\d*)/
2332*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2333*22dc650dSSadaf Ebrahimi 0:
2334*22dc650dSSadaf Ebrahimi 1:
2335*22dc650dSSadaf Ebrahimi 2:
2336*22dc650dSSadaf Ebrahimi
2337*22dc650dSSadaf Ebrahimi/(.*?)(\d+)/
2338*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2339*22dc650dSSadaf Ebrahimi 0: I have 2
2340*22dc650dSSadaf Ebrahimi 1: I have
2341*22dc650dSSadaf Ebrahimi 2: 2
2342*22dc650dSSadaf Ebrahimi
2343*22dc650dSSadaf Ebrahimi/(.*)(\d+)$/
2344*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2345*22dc650dSSadaf Ebrahimi 0: I have 2 numbers: 53147
2346*22dc650dSSadaf Ebrahimi 1: I have 2 numbers: 5314
2347*22dc650dSSadaf Ebrahimi 2: 7
2348*22dc650dSSadaf Ebrahimi
2349*22dc650dSSadaf Ebrahimi/(.*?)(\d+)$/
2350*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2351*22dc650dSSadaf Ebrahimi 0: I have 2 numbers: 53147
2352*22dc650dSSadaf Ebrahimi 1: I have 2 numbers:
2353*22dc650dSSadaf Ebrahimi 2: 53147
2354*22dc650dSSadaf Ebrahimi
2355*22dc650dSSadaf Ebrahimi/(.*)\b(\d+)$/
2356*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2357*22dc650dSSadaf Ebrahimi 0: I have 2 numbers: 53147
2358*22dc650dSSadaf Ebrahimi 1: I have 2 numbers:
2359*22dc650dSSadaf Ebrahimi 2: 53147
2360*22dc650dSSadaf Ebrahimi
2361*22dc650dSSadaf Ebrahimi/(.*\D)(\d+)$/
2362*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
2363*22dc650dSSadaf Ebrahimi 0: I have 2 numbers: 53147
2364*22dc650dSSadaf Ebrahimi 1: I have 2 numbers:
2365*22dc650dSSadaf Ebrahimi 2: 53147
2366*22dc650dSSadaf Ebrahimi
2367*22dc650dSSadaf Ebrahimi/^\D*(?!123)/
2368*22dc650dSSadaf Ebrahimi    ABC123
2369*22dc650dSSadaf Ebrahimi 0: AB
2370*22dc650dSSadaf Ebrahimi
2371*22dc650dSSadaf Ebrahimi/^(\D*)(?=\d)(?!123)/
2372*22dc650dSSadaf Ebrahimi    ABC445
2373*22dc650dSSadaf Ebrahimi 0: ABC
2374*22dc650dSSadaf Ebrahimi 1: ABC
2375*22dc650dSSadaf Ebrahimi\= Expect no match
2376*22dc650dSSadaf Ebrahimi    ABC123
2377*22dc650dSSadaf EbrahimiNo match
2378*22dc650dSSadaf Ebrahimi
2379*22dc650dSSadaf Ebrahimi/^[W-]46]/
2380*22dc650dSSadaf Ebrahimi    W46]789
2381*22dc650dSSadaf Ebrahimi 0: W46]
2382*22dc650dSSadaf Ebrahimi    -46]789
2383*22dc650dSSadaf Ebrahimi 0: -46]
2384*22dc650dSSadaf Ebrahimi\= Expect no match
2385*22dc650dSSadaf Ebrahimi    Wall
2386*22dc650dSSadaf EbrahimiNo match
2387*22dc650dSSadaf Ebrahimi    Zebra
2388*22dc650dSSadaf EbrahimiNo match
2389*22dc650dSSadaf Ebrahimi    42
2390*22dc650dSSadaf EbrahimiNo match
2391*22dc650dSSadaf Ebrahimi    [abcd]
2392*22dc650dSSadaf EbrahimiNo match
2393*22dc650dSSadaf Ebrahimi    ]abcd[
2394*22dc650dSSadaf EbrahimiNo match
2395*22dc650dSSadaf Ebrahimi
2396*22dc650dSSadaf Ebrahimi/^[W-\]46]/
2397*22dc650dSSadaf Ebrahimi    W46]789
2398*22dc650dSSadaf Ebrahimi 0: W
2399*22dc650dSSadaf Ebrahimi    Wall
2400*22dc650dSSadaf Ebrahimi 0: W
2401*22dc650dSSadaf Ebrahimi    Zebra
2402*22dc650dSSadaf Ebrahimi 0: Z
2403*22dc650dSSadaf Ebrahimi    Xylophone
2404*22dc650dSSadaf Ebrahimi 0: X
2405*22dc650dSSadaf Ebrahimi    42
2406*22dc650dSSadaf Ebrahimi 0: 4
2407*22dc650dSSadaf Ebrahimi    [abcd]
2408*22dc650dSSadaf Ebrahimi 0: [
2409*22dc650dSSadaf Ebrahimi    ]abcd[
2410*22dc650dSSadaf Ebrahimi 0: ]
2411*22dc650dSSadaf Ebrahimi    \\backslash
2412*22dc650dSSadaf Ebrahimi 0: \
2413*22dc650dSSadaf Ebrahimi\= Expect no match
2414*22dc650dSSadaf Ebrahimi    -46]789
2415*22dc650dSSadaf EbrahimiNo match
2416*22dc650dSSadaf Ebrahimi    well
2417*22dc650dSSadaf EbrahimiNo match
2418*22dc650dSSadaf Ebrahimi
2419*22dc650dSSadaf Ebrahimi/\d\d\/\d\d\/\d\d\d\d/
2420*22dc650dSSadaf Ebrahimi    01/01/2000
2421*22dc650dSSadaf Ebrahimi 0: 01/01/2000
2422*22dc650dSSadaf Ebrahimi
2423*22dc650dSSadaf Ebrahimi/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
2424*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark otherword
2425*22dc650dSSadaf Ebrahimi 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
2426*22dc650dSSadaf Ebrahimi\= Expect no match
2427*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark
2428*22dc650dSSadaf EbrahimiNo match
2429*22dc650dSSadaf Ebrahimi
2430*22dc650dSSadaf Ebrahimi/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
2431*22dc650dSSadaf Ebrahimi\= Expect no match
2432*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
2433*22dc650dSSadaf EbrahimiNo match
2434*22dc650dSSadaf Ebrahimi
2435*22dc650dSSadaf Ebrahimi/^(a){0,0}/
2436*22dc650dSSadaf Ebrahimi    bcd
2437*22dc650dSSadaf Ebrahimi 0:
2438*22dc650dSSadaf Ebrahimi    abc
2439*22dc650dSSadaf Ebrahimi 0:
2440*22dc650dSSadaf Ebrahimi    aab
2441*22dc650dSSadaf Ebrahimi 0:
2442*22dc650dSSadaf Ebrahimi
2443*22dc650dSSadaf Ebrahimi/^(a){0,1}/
2444*22dc650dSSadaf Ebrahimi    bcd
2445*22dc650dSSadaf Ebrahimi 0:
2446*22dc650dSSadaf Ebrahimi    abc
2447*22dc650dSSadaf Ebrahimi 0: a
2448*22dc650dSSadaf Ebrahimi 1: a
2449*22dc650dSSadaf Ebrahimi    aab
2450*22dc650dSSadaf Ebrahimi 0: a
2451*22dc650dSSadaf Ebrahimi 1: a
2452*22dc650dSSadaf Ebrahimi
2453*22dc650dSSadaf Ebrahimi/^(a){0,2}/
2454*22dc650dSSadaf Ebrahimi    bcd
2455*22dc650dSSadaf Ebrahimi 0:
2456*22dc650dSSadaf Ebrahimi    abc
2457*22dc650dSSadaf Ebrahimi 0: a
2458*22dc650dSSadaf Ebrahimi 1: a
2459*22dc650dSSadaf Ebrahimi    aab
2460*22dc650dSSadaf Ebrahimi 0: aa
2461*22dc650dSSadaf Ebrahimi 1: a
2462*22dc650dSSadaf Ebrahimi
2463*22dc650dSSadaf Ebrahimi/^(a){0,3}/
2464*22dc650dSSadaf Ebrahimi    bcd
2465*22dc650dSSadaf Ebrahimi 0:
2466*22dc650dSSadaf Ebrahimi    abc
2467*22dc650dSSadaf Ebrahimi 0: a
2468*22dc650dSSadaf Ebrahimi 1: a
2469*22dc650dSSadaf Ebrahimi    aab
2470*22dc650dSSadaf Ebrahimi 0: aa
2471*22dc650dSSadaf Ebrahimi 1: a
2472*22dc650dSSadaf Ebrahimi    aaa
2473*22dc650dSSadaf Ebrahimi 0: aaa
2474*22dc650dSSadaf Ebrahimi 1: a
2475*22dc650dSSadaf Ebrahimi
2476*22dc650dSSadaf Ebrahimi/^(a){0,}/
2477*22dc650dSSadaf Ebrahimi    bcd
2478*22dc650dSSadaf Ebrahimi 0:
2479*22dc650dSSadaf Ebrahimi    abc
2480*22dc650dSSadaf Ebrahimi 0: a
2481*22dc650dSSadaf Ebrahimi 1: a
2482*22dc650dSSadaf Ebrahimi    aab
2483*22dc650dSSadaf Ebrahimi 0: aa
2484*22dc650dSSadaf Ebrahimi 1: a
2485*22dc650dSSadaf Ebrahimi    aaa
2486*22dc650dSSadaf Ebrahimi 0: aaa
2487*22dc650dSSadaf Ebrahimi 1: a
2488*22dc650dSSadaf Ebrahimi    aaaaaaaa
2489*22dc650dSSadaf Ebrahimi 0: aaaaaaaa
2490*22dc650dSSadaf Ebrahimi 1: a
2491*22dc650dSSadaf Ebrahimi
2492*22dc650dSSadaf Ebrahimi/^(a){1,1}/
2493*22dc650dSSadaf Ebrahimi    abc
2494*22dc650dSSadaf Ebrahimi 0: a
2495*22dc650dSSadaf Ebrahimi 1: a
2496*22dc650dSSadaf Ebrahimi    aab
2497*22dc650dSSadaf Ebrahimi 0: a
2498*22dc650dSSadaf Ebrahimi 1: a
2499*22dc650dSSadaf Ebrahimi\= Expect no match
2500*22dc650dSSadaf Ebrahimi    bcd
2501*22dc650dSSadaf EbrahimiNo match
2502*22dc650dSSadaf Ebrahimi
2503*22dc650dSSadaf Ebrahimi/^(a){1,2}/
2504*22dc650dSSadaf Ebrahimi    abc
2505*22dc650dSSadaf Ebrahimi 0: a
2506*22dc650dSSadaf Ebrahimi 1: a
2507*22dc650dSSadaf Ebrahimi    aab
2508*22dc650dSSadaf Ebrahimi 0: aa
2509*22dc650dSSadaf Ebrahimi 1: a
2510*22dc650dSSadaf Ebrahimi\= Expect no match
2511*22dc650dSSadaf Ebrahimi    bcd
2512*22dc650dSSadaf EbrahimiNo match
2513*22dc650dSSadaf Ebrahimi
2514*22dc650dSSadaf Ebrahimi/^(a){1,3}/
2515*22dc650dSSadaf Ebrahimi    abc
2516*22dc650dSSadaf Ebrahimi 0: a
2517*22dc650dSSadaf Ebrahimi 1: a
2518*22dc650dSSadaf Ebrahimi    aab
2519*22dc650dSSadaf Ebrahimi 0: aa
2520*22dc650dSSadaf Ebrahimi 1: a
2521*22dc650dSSadaf Ebrahimi    aaa
2522*22dc650dSSadaf Ebrahimi 0: aaa
2523*22dc650dSSadaf Ebrahimi 1: a
2524*22dc650dSSadaf Ebrahimi\= Expect no match
2525*22dc650dSSadaf Ebrahimi    bcd
2526*22dc650dSSadaf EbrahimiNo match
2527*22dc650dSSadaf Ebrahimi
2528*22dc650dSSadaf Ebrahimi/^(a){1,}/
2529*22dc650dSSadaf Ebrahimi    abc
2530*22dc650dSSadaf Ebrahimi 0: a
2531*22dc650dSSadaf Ebrahimi 1: a
2532*22dc650dSSadaf Ebrahimi    aab
2533*22dc650dSSadaf Ebrahimi 0: aa
2534*22dc650dSSadaf Ebrahimi 1: a
2535*22dc650dSSadaf Ebrahimi    aaa
2536*22dc650dSSadaf Ebrahimi 0: aaa
2537*22dc650dSSadaf Ebrahimi 1: a
2538*22dc650dSSadaf Ebrahimi    aaaaaaaa
2539*22dc650dSSadaf Ebrahimi 0: aaaaaaaa
2540*22dc650dSSadaf Ebrahimi 1: a
2541*22dc650dSSadaf Ebrahimi\= Expect no match
2542*22dc650dSSadaf Ebrahimi    bcd
2543*22dc650dSSadaf EbrahimiNo match
2544*22dc650dSSadaf Ebrahimi
2545*22dc650dSSadaf Ebrahimi/.*\.gif/
2546*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2547*22dc650dSSadaf Ebrahimi 0: bib.gif
2548*22dc650dSSadaf Ebrahimi
2549*22dc650dSSadaf Ebrahimi/.{0,}\.gif/
2550*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2551*22dc650dSSadaf Ebrahimi 0: bib.gif
2552*22dc650dSSadaf Ebrahimi
2553*22dc650dSSadaf Ebrahimi/.*\.gif/m
2554*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2555*22dc650dSSadaf Ebrahimi 0: bib.gif
2556*22dc650dSSadaf Ebrahimi
2557*22dc650dSSadaf Ebrahimi/.*\.gif/s
2558*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2559*22dc650dSSadaf Ebrahimi 0: borfle\x0abib.gif
2560*22dc650dSSadaf Ebrahimi
2561*22dc650dSSadaf Ebrahimi/.*\.gif/ms
2562*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2563*22dc650dSSadaf Ebrahimi 0: borfle\x0abib.gif
2564*22dc650dSSadaf Ebrahimi
2565*22dc650dSSadaf Ebrahimi/.*$/
2566*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2567*22dc650dSSadaf Ebrahimi 0: no
2568*22dc650dSSadaf Ebrahimi
2569*22dc650dSSadaf Ebrahimi/.*$/m
2570*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2571*22dc650dSSadaf Ebrahimi 0: borfle
2572*22dc650dSSadaf Ebrahimi
2573*22dc650dSSadaf Ebrahimi/.*$/s
2574*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2575*22dc650dSSadaf Ebrahimi 0: borfle\x0abib.gif\x0ano
2576*22dc650dSSadaf Ebrahimi
2577*22dc650dSSadaf Ebrahimi/.*$/ms
2578*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
2579*22dc650dSSadaf Ebrahimi 0: borfle\x0abib.gif\x0ano
2580*22dc650dSSadaf Ebrahimi
2581*22dc650dSSadaf Ebrahimi/.*$/
2582*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
2583*22dc650dSSadaf Ebrahimi 0: no
2584*22dc650dSSadaf Ebrahimi
2585*22dc650dSSadaf Ebrahimi/.*$/m
2586*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
2587*22dc650dSSadaf Ebrahimi 0: borfle
2588*22dc650dSSadaf Ebrahimi
2589*22dc650dSSadaf Ebrahimi/.*$/s
2590*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
2591*22dc650dSSadaf Ebrahimi 0: borfle\x0abib.gif\x0ano\x0a
2592*22dc650dSSadaf Ebrahimi
2593*22dc650dSSadaf Ebrahimi/.*$/ms
2594*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
2595*22dc650dSSadaf Ebrahimi 0: borfle\x0abib.gif\x0ano\x0a
2596*22dc650dSSadaf Ebrahimi
2597*22dc650dSSadaf Ebrahimi/(.*X|^B)/
2598*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
2599*22dc650dSSadaf Ebrahimi 0: 1234X
2600*22dc650dSSadaf Ebrahimi 1: 1234X
2601*22dc650dSSadaf Ebrahimi    BarFoo
2602*22dc650dSSadaf Ebrahimi 0: B
2603*22dc650dSSadaf Ebrahimi 1: B
2604*22dc650dSSadaf Ebrahimi\= Expect no match
2605*22dc650dSSadaf Ebrahimi    abcde\nBar
2606*22dc650dSSadaf EbrahimiNo match
2607*22dc650dSSadaf Ebrahimi
2608*22dc650dSSadaf Ebrahimi/(.*X|^B)/m
2609*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
2610*22dc650dSSadaf Ebrahimi 0: 1234X
2611*22dc650dSSadaf Ebrahimi 1: 1234X
2612*22dc650dSSadaf Ebrahimi    BarFoo
2613*22dc650dSSadaf Ebrahimi 0: B
2614*22dc650dSSadaf Ebrahimi 1: B
2615*22dc650dSSadaf Ebrahimi    abcde\nBar
2616*22dc650dSSadaf Ebrahimi 0: B
2617*22dc650dSSadaf Ebrahimi 1: B
2618*22dc650dSSadaf Ebrahimi
2619*22dc650dSSadaf Ebrahimi/(.*X|^B)/s
2620*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
2621*22dc650dSSadaf Ebrahimi 0: abcde\x0a1234X
2622*22dc650dSSadaf Ebrahimi 1: abcde\x0a1234X
2623*22dc650dSSadaf Ebrahimi    BarFoo
2624*22dc650dSSadaf Ebrahimi 0: B
2625*22dc650dSSadaf Ebrahimi 1: B
2626*22dc650dSSadaf Ebrahimi\= Expect no match
2627*22dc650dSSadaf Ebrahimi    abcde\nBar
2628*22dc650dSSadaf EbrahimiNo match
2629*22dc650dSSadaf Ebrahimi
2630*22dc650dSSadaf Ebrahimi/(.*X|^B)/ms
2631*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
2632*22dc650dSSadaf Ebrahimi 0: abcde\x0a1234X
2633*22dc650dSSadaf Ebrahimi 1: abcde\x0a1234X
2634*22dc650dSSadaf Ebrahimi    BarFoo
2635*22dc650dSSadaf Ebrahimi 0: B
2636*22dc650dSSadaf Ebrahimi 1: B
2637*22dc650dSSadaf Ebrahimi    abcde\nBar
2638*22dc650dSSadaf Ebrahimi 0: B
2639*22dc650dSSadaf Ebrahimi 1: B
2640*22dc650dSSadaf Ebrahimi
2641*22dc650dSSadaf Ebrahimi/(?s)(.*X|^B)/
2642*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
2643*22dc650dSSadaf Ebrahimi 0: abcde\x0a1234X
2644*22dc650dSSadaf Ebrahimi 1: abcde\x0a1234X
2645*22dc650dSSadaf Ebrahimi    BarFoo
2646*22dc650dSSadaf Ebrahimi 0: B
2647*22dc650dSSadaf Ebrahimi 1: B
2648*22dc650dSSadaf Ebrahimi\= Expect no match
2649*22dc650dSSadaf Ebrahimi    abcde\nBar
2650*22dc650dSSadaf EbrahimiNo match
2651*22dc650dSSadaf Ebrahimi
2652*22dc650dSSadaf Ebrahimi/(?s:.*X|^B)/
2653*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
2654*22dc650dSSadaf Ebrahimi 0: abcde\x0a1234X
2655*22dc650dSSadaf Ebrahimi    BarFoo
2656*22dc650dSSadaf Ebrahimi 0: B
2657*22dc650dSSadaf Ebrahimi\= Expect no match
2658*22dc650dSSadaf Ebrahimi    abcde\nBar
2659*22dc650dSSadaf EbrahimiNo match
2660*22dc650dSSadaf Ebrahimi
2661*22dc650dSSadaf Ebrahimi/^.*B/
2662*22dc650dSSadaf Ebrahimi\= Expect no match
2663*22dc650dSSadaf Ebrahimi    abc\nB
2664*22dc650dSSadaf EbrahimiNo match
2665*22dc650dSSadaf Ebrahimi
2666*22dc650dSSadaf Ebrahimi/(?s)^.*B/
2667*22dc650dSSadaf Ebrahimi    abc\nB
2668*22dc650dSSadaf Ebrahimi 0: abc\x0aB
2669*22dc650dSSadaf Ebrahimi
2670*22dc650dSSadaf Ebrahimi/(?m)^.*B/
2671*22dc650dSSadaf Ebrahimi    abc\nB
2672*22dc650dSSadaf Ebrahimi 0: B
2673*22dc650dSSadaf Ebrahimi
2674*22dc650dSSadaf Ebrahimi/(?ms)^.*B/
2675*22dc650dSSadaf Ebrahimi    abc\nB
2676*22dc650dSSadaf Ebrahimi 0: abc\x0aB
2677*22dc650dSSadaf Ebrahimi
2678*22dc650dSSadaf Ebrahimi/(?ms)^B/
2679*22dc650dSSadaf Ebrahimi    abc\nB
2680*22dc650dSSadaf Ebrahimi 0: B
2681*22dc650dSSadaf Ebrahimi
2682*22dc650dSSadaf Ebrahimi/(?s)B$/
2683*22dc650dSSadaf Ebrahimi    B\n
2684*22dc650dSSadaf Ebrahimi 0: B
2685*22dc650dSSadaf Ebrahimi
2686*22dc650dSSadaf Ebrahimi/^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/
2687*22dc650dSSadaf Ebrahimi    123456654321
2688*22dc650dSSadaf Ebrahimi 0: 123456654321
2689*22dc650dSSadaf Ebrahimi
2690*22dc650dSSadaf Ebrahimi/^\d\d\d\d\d\d\d\d\d\d\d\d/
2691*22dc650dSSadaf Ebrahimi    123456654321
2692*22dc650dSSadaf Ebrahimi 0: 123456654321
2693*22dc650dSSadaf Ebrahimi
2694*22dc650dSSadaf Ebrahimi/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
2695*22dc650dSSadaf Ebrahimi    123456654321
2696*22dc650dSSadaf Ebrahimi 0: 123456654321
2697*22dc650dSSadaf Ebrahimi
2698*22dc650dSSadaf Ebrahimi/^[abc]{12}/
2699*22dc650dSSadaf Ebrahimi    abcabcabcabc
2700*22dc650dSSadaf Ebrahimi 0: abcabcabcabc
2701*22dc650dSSadaf Ebrahimi
2702*22dc650dSSadaf Ebrahimi/^[a-c]{12}/
2703*22dc650dSSadaf Ebrahimi    abcabcabcabc
2704*22dc650dSSadaf Ebrahimi 0: abcabcabcabc
2705*22dc650dSSadaf Ebrahimi
2706*22dc650dSSadaf Ebrahimi/^(a|b|c){12}/
2707*22dc650dSSadaf Ebrahimi    abcabcabcabc
2708*22dc650dSSadaf Ebrahimi 0: abcabcabcabc
2709*22dc650dSSadaf Ebrahimi 1: c
2710*22dc650dSSadaf Ebrahimi
2711*22dc650dSSadaf Ebrahimi/^[abcdefghijklmnopqrstuvwxy0123456789]/
2712*22dc650dSSadaf Ebrahimi    n
2713*22dc650dSSadaf Ebrahimi 0: n
2714*22dc650dSSadaf Ebrahimi\= Expect no match
2715*22dc650dSSadaf Ebrahimi    z
2716*22dc650dSSadaf EbrahimiNo match
2717*22dc650dSSadaf Ebrahimi
2718*22dc650dSSadaf Ebrahimi/abcde{0,0}/
2719*22dc650dSSadaf Ebrahimi    abcd
2720*22dc650dSSadaf Ebrahimi 0: abcd
2721*22dc650dSSadaf Ebrahimi\= Expect no match
2722*22dc650dSSadaf Ebrahimi    abce
2723*22dc650dSSadaf EbrahimiNo match
2724*22dc650dSSadaf Ebrahimi
2725*22dc650dSSadaf Ebrahimi/ab[cd]{0,0}e/
2726*22dc650dSSadaf Ebrahimi    abe
2727*22dc650dSSadaf Ebrahimi 0: abe
2728*22dc650dSSadaf Ebrahimi\= Expect no match
2729*22dc650dSSadaf Ebrahimi    abcde
2730*22dc650dSSadaf EbrahimiNo match
2731*22dc650dSSadaf Ebrahimi
2732*22dc650dSSadaf Ebrahimi/ab(c){0,0}d/
2733*22dc650dSSadaf Ebrahimi    abd
2734*22dc650dSSadaf Ebrahimi 0: abd
2735*22dc650dSSadaf Ebrahimi\= Expect no match
2736*22dc650dSSadaf Ebrahimi    abcd
2737*22dc650dSSadaf EbrahimiNo match
2738*22dc650dSSadaf Ebrahimi
2739*22dc650dSSadaf Ebrahimi/a(b*)/
2740*22dc650dSSadaf Ebrahimi    a
2741*22dc650dSSadaf Ebrahimi 0: a
2742*22dc650dSSadaf Ebrahimi 1:
2743*22dc650dSSadaf Ebrahimi    ab
2744*22dc650dSSadaf Ebrahimi 0: ab
2745*22dc650dSSadaf Ebrahimi 1: b
2746*22dc650dSSadaf Ebrahimi    abbbb
2747*22dc650dSSadaf Ebrahimi 0: abbbb
2748*22dc650dSSadaf Ebrahimi 1: bbbb
2749*22dc650dSSadaf Ebrahimi\= Expect no match
2750*22dc650dSSadaf Ebrahimi    bbbbb
2751*22dc650dSSadaf EbrahimiNo match
2752*22dc650dSSadaf Ebrahimi
2753*22dc650dSSadaf Ebrahimi/ab\d{0}e/
2754*22dc650dSSadaf Ebrahimi    abe
2755*22dc650dSSadaf Ebrahimi 0: abe
2756*22dc650dSSadaf Ebrahimi\= Expect no match
2757*22dc650dSSadaf Ebrahimi    ab1e
2758*22dc650dSSadaf EbrahimiNo match
2759*22dc650dSSadaf Ebrahimi
2760*22dc650dSSadaf Ebrahimi/"([^\\"]+|\\.)*"/
2761*22dc650dSSadaf Ebrahimi    the \"quick\" brown fox
2762*22dc650dSSadaf Ebrahimi 0: "quick"
2763*22dc650dSSadaf Ebrahimi 1: quick
2764*22dc650dSSadaf Ebrahimi    \"the \\\"quick\\\" brown fox\"
2765*22dc650dSSadaf Ebrahimi 0: "the \"quick\" brown fox"
2766*22dc650dSSadaf Ebrahimi 1:  brown fox
2767*22dc650dSSadaf Ebrahimi
2768*22dc650dSSadaf Ebrahimi/.*?/g,aftertext
2769*22dc650dSSadaf Ebrahimi    abc
2770*22dc650dSSadaf Ebrahimi 0:
2771*22dc650dSSadaf Ebrahimi 0+ abc
2772*22dc650dSSadaf Ebrahimi 0: a
2773*22dc650dSSadaf Ebrahimi 0+ bc
2774*22dc650dSSadaf Ebrahimi 0:
2775*22dc650dSSadaf Ebrahimi 0+ bc
2776*22dc650dSSadaf Ebrahimi 0: b
2777*22dc650dSSadaf Ebrahimi 0+ c
2778*22dc650dSSadaf Ebrahimi 0:
2779*22dc650dSSadaf Ebrahimi 0+ c
2780*22dc650dSSadaf Ebrahimi 0: c
2781*22dc650dSSadaf Ebrahimi 0+
2782*22dc650dSSadaf Ebrahimi 0:
2783*22dc650dSSadaf Ebrahimi 0+
2784*22dc650dSSadaf Ebrahimi
2785*22dc650dSSadaf Ebrahimi/\b/g,aftertext
2786*22dc650dSSadaf Ebrahimi    abc
2787*22dc650dSSadaf Ebrahimi 0:
2788*22dc650dSSadaf Ebrahimi 0+ abc
2789*22dc650dSSadaf Ebrahimi 0:
2790*22dc650dSSadaf Ebrahimi 0+
2791*22dc650dSSadaf Ebrahimi
2792*22dc650dSSadaf Ebrahimi/\b/g,aftertext
2793*22dc650dSSadaf Ebrahimi    abc
2794*22dc650dSSadaf Ebrahimi 0:
2795*22dc650dSSadaf Ebrahimi 0+ abc
2796*22dc650dSSadaf Ebrahimi 0:
2797*22dc650dSSadaf Ebrahimi 0+
2798*22dc650dSSadaf Ebrahimi
2799*22dc650dSSadaf Ebrahimi//g
2800*22dc650dSSadaf Ebrahimi    abc
2801*22dc650dSSadaf Ebrahimi 0:
2802*22dc650dSSadaf Ebrahimi 0:
2803*22dc650dSSadaf Ebrahimi 0:
2804*22dc650dSSadaf Ebrahimi 0:
2805*22dc650dSSadaf Ebrahimi
2806*22dc650dSSadaf Ebrahimi/<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
2807*22dc650dSSadaf Ebrahimi  <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2808*22dc650dSSadaf Ebrahimi 0: <TR BGCOLOR='#DBE9E9'><TD align=left valign=top>43.<a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)</a></TD><TD align=left valign=top>Lega lstaff.com</TD><TD align=left valign=top>CA - Statewide</TD></TR>
2809*22dc650dSSadaf Ebrahimi 1:  BGCOLOR='#DBE9E9'
2810*22dc650dSSadaf Ebrahimi 2:  align=left valign=top
2811*22dc650dSSadaf Ebrahimi 3: 43.
2812*22dc650dSSadaf Ebrahimi 4: <a href='joblist.cfm?JobID=94 6735&Keyword='>Word Processor<BR>(N-1286)
2813*22dc650dSSadaf Ebrahimi 5:
2814*22dc650dSSadaf Ebrahimi 6:
2815*22dc650dSSadaf Ebrahimi 7: <unset>
2816*22dc650dSSadaf Ebrahimi 8:  align=left valign=top
2817*22dc650dSSadaf Ebrahimi 9: Lega lstaff.com
2818*22dc650dSSadaf Ebrahimi10:  align=left valign=top
2819*22dc650dSSadaf Ebrahimi11: CA - Statewide
2820*22dc650dSSadaf Ebrahimi
2821*22dc650dSSadaf Ebrahimi/a[^a]b/
2822*22dc650dSSadaf Ebrahimi    acb
2823*22dc650dSSadaf Ebrahimi 0: acb
2824*22dc650dSSadaf Ebrahimi    a\nb
2825*22dc650dSSadaf Ebrahimi 0: a\x0ab
2826*22dc650dSSadaf Ebrahimi
2827*22dc650dSSadaf Ebrahimi/a.b/
2828*22dc650dSSadaf Ebrahimi    acb
2829*22dc650dSSadaf Ebrahimi 0: acb
2830*22dc650dSSadaf Ebrahimi\= Expect no match
2831*22dc650dSSadaf Ebrahimi    a\nb
2832*22dc650dSSadaf EbrahimiNo match
2833*22dc650dSSadaf Ebrahimi
2834*22dc650dSSadaf Ebrahimi/a[^a]b/s
2835*22dc650dSSadaf Ebrahimi    acb
2836*22dc650dSSadaf Ebrahimi 0: acb
2837*22dc650dSSadaf Ebrahimi    a\nb
2838*22dc650dSSadaf Ebrahimi 0: a\x0ab
2839*22dc650dSSadaf Ebrahimi
2840*22dc650dSSadaf Ebrahimi/a.b/s
2841*22dc650dSSadaf Ebrahimi    acb
2842*22dc650dSSadaf Ebrahimi 0: acb
2843*22dc650dSSadaf Ebrahimi    a\nb
2844*22dc650dSSadaf Ebrahimi 0: a\x0ab
2845*22dc650dSSadaf Ebrahimi
2846*22dc650dSSadaf Ebrahimi/^(b+?|a){1,2}?c/
2847*22dc650dSSadaf Ebrahimi    bac
2848*22dc650dSSadaf Ebrahimi 0: bac
2849*22dc650dSSadaf Ebrahimi 1: a
2850*22dc650dSSadaf Ebrahimi    bbac
2851*22dc650dSSadaf Ebrahimi 0: bbac
2852*22dc650dSSadaf Ebrahimi 1: a
2853*22dc650dSSadaf Ebrahimi    bbbac
2854*22dc650dSSadaf Ebrahimi 0: bbbac
2855*22dc650dSSadaf Ebrahimi 1: a
2856*22dc650dSSadaf Ebrahimi    bbbbac
2857*22dc650dSSadaf Ebrahimi 0: bbbbac
2858*22dc650dSSadaf Ebrahimi 1: a
2859*22dc650dSSadaf Ebrahimi    bbbbbac
2860*22dc650dSSadaf Ebrahimi 0: bbbbbac
2861*22dc650dSSadaf Ebrahimi 1: a
2862*22dc650dSSadaf Ebrahimi
2863*22dc650dSSadaf Ebrahimi/^(b+|a){1,2}?c/
2864*22dc650dSSadaf Ebrahimi    bac
2865*22dc650dSSadaf Ebrahimi 0: bac
2866*22dc650dSSadaf Ebrahimi 1: a
2867*22dc650dSSadaf Ebrahimi    bbac
2868*22dc650dSSadaf Ebrahimi 0: bbac
2869*22dc650dSSadaf Ebrahimi 1: a
2870*22dc650dSSadaf Ebrahimi    bbbac
2871*22dc650dSSadaf Ebrahimi 0: bbbac
2872*22dc650dSSadaf Ebrahimi 1: a
2873*22dc650dSSadaf Ebrahimi    bbbbac
2874*22dc650dSSadaf Ebrahimi 0: bbbbac
2875*22dc650dSSadaf Ebrahimi 1: a
2876*22dc650dSSadaf Ebrahimi    bbbbbac
2877*22dc650dSSadaf Ebrahimi 0: bbbbbac
2878*22dc650dSSadaf Ebrahimi 1: a
2879*22dc650dSSadaf Ebrahimi
2880*22dc650dSSadaf Ebrahimi/(?!\A)x/m
2881*22dc650dSSadaf Ebrahimi    a\bx\n
2882*22dc650dSSadaf Ebrahimi 0: x
2883*22dc650dSSadaf Ebrahimi    a\nx\n
2884*22dc650dSSadaf Ebrahimi 0: x
2885*22dc650dSSadaf Ebrahimi\= Expect no match
2886*22dc650dSSadaf Ebrahimi    x\nb\n
2887*22dc650dSSadaf EbrahimiNo match
2888*22dc650dSSadaf Ebrahimi
2889*22dc650dSSadaf Ebrahimi/(A|B)*?CD/
2890*22dc650dSSadaf Ebrahimi    CD
2891*22dc650dSSadaf Ebrahimi 0: CD
2892*22dc650dSSadaf Ebrahimi
2893*22dc650dSSadaf Ebrahimi/(A|B)*CD/
2894*22dc650dSSadaf Ebrahimi    CD
2895*22dc650dSSadaf Ebrahimi 0: CD
2896*22dc650dSSadaf Ebrahimi
2897*22dc650dSSadaf Ebrahimi/(AB)*?\1/
2898*22dc650dSSadaf Ebrahimi    ABABAB
2899*22dc650dSSadaf Ebrahimi 0: ABAB
2900*22dc650dSSadaf Ebrahimi 1: AB
2901*22dc650dSSadaf Ebrahimi
2902*22dc650dSSadaf Ebrahimi/(AB)*\1/
2903*22dc650dSSadaf Ebrahimi    ABABAB
2904*22dc650dSSadaf Ebrahimi 0: ABABAB
2905*22dc650dSSadaf Ebrahimi 1: AB
2906*22dc650dSSadaf Ebrahimi
2907*22dc650dSSadaf Ebrahimi/(?<!bar)foo/
2908*22dc650dSSadaf Ebrahimi    foo
2909*22dc650dSSadaf Ebrahimi 0: foo
2910*22dc650dSSadaf Ebrahimi    catfood
2911*22dc650dSSadaf Ebrahimi 0: foo
2912*22dc650dSSadaf Ebrahimi    arfootle
2913*22dc650dSSadaf Ebrahimi 0: foo
2914*22dc650dSSadaf Ebrahimi    rfoosh
2915*22dc650dSSadaf Ebrahimi 0: foo
2916*22dc650dSSadaf Ebrahimi\= Expect no match
2917*22dc650dSSadaf Ebrahimi    barfoo
2918*22dc650dSSadaf EbrahimiNo match
2919*22dc650dSSadaf Ebrahimi    towbarfoo
2920*22dc650dSSadaf EbrahimiNo match
2921*22dc650dSSadaf Ebrahimi
2922*22dc650dSSadaf Ebrahimi/\w{3}(?<!bar)foo/
2923*22dc650dSSadaf Ebrahimi    catfood
2924*22dc650dSSadaf Ebrahimi 0: catfoo
2925*22dc650dSSadaf Ebrahimi\= Expect no match
2926*22dc650dSSadaf Ebrahimi    foo
2927*22dc650dSSadaf EbrahimiNo match
2928*22dc650dSSadaf Ebrahimi    barfoo
2929*22dc650dSSadaf EbrahimiNo match
2930*22dc650dSSadaf Ebrahimi    towbarfoo
2931*22dc650dSSadaf EbrahimiNo match
2932*22dc650dSSadaf Ebrahimi
2933*22dc650dSSadaf Ebrahimi/(?<=(foo)a)bar/
2934*22dc650dSSadaf Ebrahimi    fooabar
2935*22dc650dSSadaf Ebrahimi 0: bar
2936*22dc650dSSadaf Ebrahimi 1: foo
2937*22dc650dSSadaf Ebrahimi\= Expect no match
2938*22dc650dSSadaf Ebrahimi    bar
2939*22dc650dSSadaf EbrahimiNo match
2940*22dc650dSSadaf Ebrahimi    foobbar
2941*22dc650dSSadaf EbrahimiNo match
2942*22dc650dSSadaf Ebrahimi
2943*22dc650dSSadaf Ebrahimi/\Aabc\z/m
2944*22dc650dSSadaf Ebrahimi    abc
2945*22dc650dSSadaf Ebrahimi 0: abc
2946*22dc650dSSadaf Ebrahimi\= Expect no match
2947*22dc650dSSadaf Ebrahimi    abc\n
2948*22dc650dSSadaf EbrahimiNo match
2949*22dc650dSSadaf Ebrahimi    qqq\nabc
2950*22dc650dSSadaf EbrahimiNo match
2951*22dc650dSSadaf Ebrahimi    abc\nzzz
2952*22dc650dSSadaf EbrahimiNo match
2953*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
2954*22dc650dSSadaf EbrahimiNo match
2955*22dc650dSSadaf Ebrahimi
2956*22dc650dSSadaf Ebrahimi/(?>.*\/)foo/
2957*22dc650dSSadaf Ebrahimi    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2958*22dc650dSSadaf Ebrahimi 0: /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
2959*22dc650dSSadaf Ebrahimi\= Expect no match
2960*22dc650dSSadaf Ebrahimi    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
2961*22dc650dSSadaf EbrahimiNo match
2962*22dc650dSSadaf Ebrahimi
2963*22dc650dSSadaf Ebrahimi/(?>(\.\d\d[1-9]?))\d+/
2964*22dc650dSSadaf Ebrahimi    1.230003938
2965*22dc650dSSadaf Ebrahimi 0: .230003938
2966*22dc650dSSadaf Ebrahimi 1: .23
2967*22dc650dSSadaf Ebrahimi    1.875000282
2968*22dc650dSSadaf Ebrahimi 0: .875000282
2969*22dc650dSSadaf Ebrahimi 1: .875
2970*22dc650dSSadaf Ebrahimi\= Expect no match
2971*22dc650dSSadaf Ebrahimi    1.235
2972*22dc650dSSadaf EbrahimiNo match
2973*22dc650dSSadaf Ebrahimi
2974*22dc650dSSadaf Ebrahimi/^((?>\w+)|(?>\s+))*$/
2975*22dc650dSSadaf Ebrahimi    now is the time for all good men to come to the aid of the party
2976*22dc650dSSadaf Ebrahimi 0: now is the time for all good men to come to the aid of the party
2977*22dc650dSSadaf Ebrahimi 1: party
2978*22dc650dSSadaf Ebrahimi\= Expect no match
2979*22dc650dSSadaf Ebrahimi    this is not a line with only words and spaces!
2980*22dc650dSSadaf EbrahimiNo match
2981*22dc650dSSadaf Ebrahimi
2982*22dc650dSSadaf Ebrahimi/(\d+)(\w)/
2983*22dc650dSSadaf Ebrahimi    12345a
2984*22dc650dSSadaf Ebrahimi 0: 12345a
2985*22dc650dSSadaf Ebrahimi 1: 12345
2986*22dc650dSSadaf Ebrahimi 2: a
2987*22dc650dSSadaf Ebrahimi    12345+
2988*22dc650dSSadaf Ebrahimi 0: 12345
2989*22dc650dSSadaf Ebrahimi 1: 1234
2990*22dc650dSSadaf Ebrahimi 2: 5
2991*22dc650dSSadaf Ebrahimi
2992*22dc650dSSadaf Ebrahimi/((?>\d+))(\w)/
2993*22dc650dSSadaf Ebrahimi    12345a
2994*22dc650dSSadaf Ebrahimi 0: 12345a
2995*22dc650dSSadaf Ebrahimi 1: 12345
2996*22dc650dSSadaf Ebrahimi 2: a
2997*22dc650dSSadaf Ebrahimi\= Expect no match
2998*22dc650dSSadaf Ebrahimi    12345+
2999*22dc650dSSadaf EbrahimiNo match
3000*22dc650dSSadaf Ebrahimi
3001*22dc650dSSadaf Ebrahimi/(?>a+)b/
3002*22dc650dSSadaf Ebrahimi    aaab
3003*22dc650dSSadaf Ebrahimi 0: aaab
3004*22dc650dSSadaf Ebrahimi
3005*22dc650dSSadaf Ebrahimi/((?>a+)b)/
3006*22dc650dSSadaf Ebrahimi    aaab
3007*22dc650dSSadaf Ebrahimi 0: aaab
3008*22dc650dSSadaf Ebrahimi 1: aaab
3009*22dc650dSSadaf Ebrahimi
3010*22dc650dSSadaf Ebrahimi/(?>(a+))b/
3011*22dc650dSSadaf Ebrahimi    aaab
3012*22dc650dSSadaf Ebrahimi 0: aaab
3013*22dc650dSSadaf Ebrahimi 1: aaa
3014*22dc650dSSadaf Ebrahimi
3015*22dc650dSSadaf Ebrahimi/(?>b)+/
3016*22dc650dSSadaf Ebrahimi    aaabbbccc
3017*22dc650dSSadaf Ebrahimi 0: bbb
3018*22dc650dSSadaf Ebrahimi
3019*22dc650dSSadaf Ebrahimi/(?>a+|b+|c+)*c/
3020*22dc650dSSadaf Ebrahimi    aaabbbbccccd
3021*22dc650dSSadaf Ebrahimi 0: aaabbbbc
3022*22dc650dSSadaf Ebrahimi
3023*22dc650dSSadaf Ebrahimi/((?>[^()]+)|\([^()]*\))+/
3024*22dc650dSSadaf Ebrahimi    ((abc(ade)ufh()()x
3025*22dc650dSSadaf Ebrahimi 0: abc(ade)ufh()()x
3026*22dc650dSSadaf Ebrahimi 1: x
3027*22dc650dSSadaf Ebrahimi
3028*22dc650dSSadaf Ebrahimi/\(((?>[^()]+)|\([^()]+\))+\)/
3029*22dc650dSSadaf Ebrahimi    (abc)
3030*22dc650dSSadaf Ebrahimi 0: (abc)
3031*22dc650dSSadaf Ebrahimi 1: abc
3032*22dc650dSSadaf Ebrahimi    (abc(def)xyz)
3033*22dc650dSSadaf Ebrahimi 0: (abc(def)xyz)
3034*22dc650dSSadaf Ebrahimi 1: xyz
3035*22dc650dSSadaf Ebrahimi\= Expect no match
3036*22dc650dSSadaf Ebrahimi    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3037*22dc650dSSadaf EbrahimiNo match
3038*22dc650dSSadaf Ebrahimi
3039*22dc650dSSadaf Ebrahimi/a(?-i)b/i
3040*22dc650dSSadaf Ebrahimi    ab
3041*22dc650dSSadaf Ebrahimi 0: ab
3042*22dc650dSSadaf Ebrahimi    Ab
3043*22dc650dSSadaf Ebrahimi 0: Ab
3044*22dc650dSSadaf Ebrahimi\= Expect no match
3045*22dc650dSSadaf Ebrahimi    aB
3046*22dc650dSSadaf EbrahimiNo match
3047*22dc650dSSadaf Ebrahimi    AB
3048*22dc650dSSadaf EbrahimiNo match
3049*22dc650dSSadaf Ebrahimi
3050*22dc650dSSadaf Ebrahimi/(a (?x)b c)d e/
3051*22dc650dSSadaf Ebrahimi    a bcd e
3052*22dc650dSSadaf Ebrahimi 0: a bcd e
3053*22dc650dSSadaf Ebrahimi 1: a bc
3054*22dc650dSSadaf Ebrahimi\= Expect no match
3055*22dc650dSSadaf Ebrahimi    a b cd e
3056*22dc650dSSadaf EbrahimiNo match
3057*22dc650dSSadaf Ebrahimi    abcd e
3058*22dc650dSSadaf EbrahimiNo match
3059*22dc650dSSadaf Ebrahimi    a bcde
3060*22dc650dSSadaf EbrahimiNo match
3061*22dc650dSSadaf Ebrahimi
3062*22dc650dSSadaf Ebrahimi/(a b(?x)c d (?-x)e f)/
3063*22dc650dSSadaf Ebrahimi    a bcde f
3064*22dc650dSSadaf Ebrahimi 0: a bcde f
3065*22dc650dSSadaf Ebrahimi 1: a bcde f
3066*22dc650dSSadaf Ebrahimi\= Expect no match
3067*22dc650dSSadaf Ebrahimi    abcdef
3068*22dc650dSSadaf EbrahimiNo match
3069*22dc650dSSadaf Ebrahimi
3070*22dc650dSSadaf Ebrahimi/(a(?i)b)c/
3071*22dc650dSSadaf Ebrahimi    abc
3072*22dc650dSSadaf Ebrahimi 0: abc
3073*22dc650dSSadaf Ebrahimi 1: ab
3074*22dc650dSSadaf Ebrahimi    aBc
3075*22dc650dSSadaf Ebrahimi 0: aBc
3076*22dc650dSSadaf Ebrahimi 1: aB
3077*22dc650dSSadaf Ebrahimi\= Expect no match
3078*22dc650dSSadaf Ebrahimi    abC
3079*22dc650dSSadaf EbrahimiNo match
3080*22dc650dSSadaf Ebrahimi    aBC
3081*22dc650dSSadaf EbrahimiNo match
3082*22dc650dSSadaf Ebrahimi    Abc
3083*22dc650dSSadaf EbrahimiNo match
3084*22dc650dSSadaf Ebrahimi    ABc
3085*22dc650dSSadaf EbrahimiNo match
3086*22dc650dSSadaf Ebrahimi    ABC
3087*22dc650dSSadaf EbrahimiNo match
3088*22dc650dSSadaf Ebrahimi    AbC
3089*22dc650dSSadaf EbrahimiNo match
3090*22dc650dSSadaf Ebrahimi
3091*22dc650dSSadaf Ebrahimi/a(?i:b)c/
3092*22dc650dSSadaf Ebrahimi    abc
3093*22dc650dSSadaf Ebrahimi 0: abc
3094*22dc650dSSadaf Ebrahimi    aBc
3095*22dc650dSSadaf Ebrahimi 0: aBc
3096*22dc650dSSadaf Ebrahimi\= Expect no match
3097*22dc650dSSadaf Ebrahimi    ABC
3098*22dc650dSSadaf EbrahimiNo match
3099*22dc650dSSadaf Ebrahimi    abC
3100*22dc650dSSadaf EbrahimiNo match
3101*22dc650dSSadaf Ebrahimi    aBC
3102*22dc650dSSadaf EbrahimiNo match
3103*22dc650dSSadaf Ebrahimi
3104*22dc650dSSadaf Ebrahimi/a(?i:b)*c/
3105*22dc650dSSadaf Ebrahimi    aBc
3106*22dc650dSSadaf Ebrahimi 0: aBc
3107*22dc650dSSadaf Ebrahimi    aBBc
3108*22dc650dSSadaf Ebrahimi 0: aBBc
3109*22dc650dSSadaf Ebrahimi\= Expect no match
3110*22dc650dSSadaf Ebrahimi    aBC
3111*22dc650dSSadaf EbrahimiNo match
3112*22dc650dSSadaf Ebrahimi    aBBC
3113*22dc650dSSadaf EbrahimiNo match
3114*22dc650dSSadaf Ebrahimi
3115*22dc650dSSadaf Ebrahimi/a(?=b(?i)c)\w\wd/
3116*22dc650dSSadaf Ebrahimi    abcd
3117*22dc650dSSadaf Ebrahimi 0: abcd
3118*22dc650dSSadaf Ebrahimi    abCd
3119*22dc650dSSadaf Ebrahimi 0: abCd
3120*22dc650dSSadaf Ebrahimi\= Expect no match
3121*22dc650dSSadaf Ebrahimi    aBCd
3122*22dc650dSSadaf EbrahimiNo match
3123*22dc650dSSadaf Ebrahimi    abcD
3124*22dc650dSSadaf EbrahimiNo match
3125*22dc650dSSadaf Ebrahimi
3126*22dc650dSSadaf Ebrahimi/(?s-i:more.*than).*million/i
3127*22dc650dSSadaf Ebrahimi    more than million
3128*22dc650dSSadaf Ebrahimi 0: more than million
3129*22dc650dSSadaf Ebrahimi    more than MILLION
3130*22dc650dSSadaf Ebrahimi 0: more than MILLION
3131*22dc650dSSadaf Ebrahimi    more \n than Million
3132*22dc650dSSadaf Ebrahimi 0: more \x0a than Million
3133*22dc650dSSadaf Ebrahimi\= Expect no match
3134*22dc650dSSadaf Ebrahimi    MORE THAN MILLION
3135*22dc650dSSadaf EbrahimiNo match
3136*22dc650dSSadaf Ebrahimi    more \n than \n million
3137*22dc650dSSadaf EbrahimiNo match
3138*22dc650dSSadaf Ebrahimi
3139*22dc650dSSadaf Ebrahimi/(?:(?s-i)more.*than).*million/i
3140*22dc650dSSadaf Ebrahimi    more than million
3141*22dc650dSSadaf Ebrahimi 0: more than million
3142*22dc650dSSadaf Ebrahimi    more than MILLION
3143*22dc650dSSadaf Ebrahimi 0: more than MILLION
3144*22dc650dSSadaf Ebrahimi    more \n than Million
3145*22dc650dSSadaf Ebrahimi 0: more \x0a than Million
3146*22dc650dSSadaf Ebrahimi\= Expect no match
3147*22dc650dSSadaf Ebrahimi    MORE THAN MILLION
3148*22dc650dSSadaf EbrahimiNo match
3149*22dc650dSSadaf Ebrahimi    more \n than \n million
3150*22dc650dSSadaf EbrahimiNo match
3151*22dc650dSSadaf Ebrahimi
3152*22dc650dSSadaf Ebrahimi/(?>a(?i)b+)+c/
3153*22dc650dSSadaf Ebrahimi    abc
3154*22dc650dSSadaf Ebrahimi 0: abc
3155*22dc650dSSadaf Ebrahimi    aBbc
3156*22dc650dSSadaf Ebrahimi 0: aBbc
3157*22dc650dSSadaf Ebrahimi    aBBc
3158*22dc650dSSadaf Ebrahimi 0: aBBc
3159*22dc650dSSadaf Ebrahimi\= Expect no match
3160*22dc650dSSadaf Ebrahimi    Abc
3161*22dc650dSSadaf EbrahimiNo match
3162*22dc650dSSadaf Ebrahimi    abAb
3163*22dc650dSSadaf EbrahimiNo match
3164*22dc650dSSadaf Ebrahimi    abbC
3165*22dc650dSSadaf EbrahimiNo match
3166*22dc650dSSadaf Ebrahimi
3167*22dc650dSSadaf Ebrahimi/(?=a(?i)b)\w\wc/
3168*22dc650dSSadaf Ebrahimi    abc
3169*22dc650dSSadaf Ebrahimi 0: abc
3170*22dc650dSSadaf Ebrahimi    aBc
3171*22dc650dSSadaf Ebrahimi 0: aBc
3172*22dc650dSSadaf Ebrahimi\= Expect no match
3173*22dc650dSSadaf Ebrahimi    Ab
3174*22dc650dSSadaf EbrahimiNo match
3175*22dc650dSSadaf Ebrahimi    abC
3176*22dc650dSSadaf EbrahimiNo match
3177*22dc650dSSadaf Ebrahimi    aBC
3178*22dc650dSSadaf EbrahimiNo match
3179*22dc650dSSadaf Ebrahimi
3180*22dc650dSSadaf Ebrahimi/(?<=a(?i)b)(\w\w)c/
3181*22dc650dSSadaf Ebrahimi    abxxc
3182*22dc650dSSadaf Ebrahimi 0: xxc
3183*22dc650dSSadaf Ebrahimi 1: xx
3184*22dc650dSSadaf Ebrahimi    aBxxc
3185*22dc650dSSadaf Ebrahimi 0: xxc
3186*22dc650dSSadaf Ebrahimi 1: xx
3187*22dc650dSSadaf Ebrahimi\= Expect no match
3188*22dc650dSSadaf Ebrahimi    Abxxc
3189*22dc650dSSadaf EbrahimiNo match
3190*22dc650dSSadaf Ebrahimi    ABxxc
3191*22dc650dSSadaf EbrahimiNo match
3192*22dc650dSSadaf Ebrahimi    abxxC
3193*22dc650dSSadaf EbrahimiNo match
3194*22dc650dSSadaf Ebrahimi
3195*22dc650dSSadaf Ebrahimi/(?:(a)|b)(?(1)A|B)/
3196*22dc650dSSadaf Ebrahimi    aA
3197*22dc650dSSadaf Ebrahimi 0: aA
3198*22dc650dSSadaf Ebrahimi 1: a
3199*22dc650dSSadaf Ebrahimi    bB
3200*22dc650dSSadaf Ebrahimi 0: bB
3201*22dc650dSSadaf Ebrahimi\= Expect no match
3202*22dc650dSSadaf Ebrahimi    aB
3203*22dc650dSSadaf EbrahimiNo match
3204*22dc650dSSadaf Ebrahimi    bA
3205*22dc650dSSadaf EbrahimiNo match
3206*22dc650dSSadaf Ebrahimi
3207*22dc650dSSadaf Ebrahimi/^(a)?(?(1)a|b)+$/
3208*22dc650dSSadaf Ebrahimi    aa
3209*22dc650dSSadaf Ebrahimi 0: aa
3210*22dc650dSSadaf Ebrahimi 1: a
3211*22dc650dSSadaf Ebrahimi    b
3212*22dc650dSSadaf Ebrahimi 0: b
3213*22dc650dSSadaf Ebrahimi    bb
3214*22dc650dSSadaf Ebrahimi 0: bb
3215*22dc650dSSadaf Ebrahimi\= Expect no match
3216*22dc650dSSadaf Ebrahimi    ab
3217*22dc650dSSadaf EbrahimiNo match
3218*22dc650dSSadaf Ebrahimi
3219*22dc650dSSadaf Ebrahimi# Perl gets this next one wrong if the pattern ends with $; in that case it
3220*22dc650dSSadaf Ebrahimi# fails to match "12".
3221*22dc650dSSadaf Ebrahimi
3222*22dc650dSSadaf Ebrahimi/^(?(?=abc)\w{3}:|\d\d)/
3223*22dc650dSSadaf Ebrahimi    abc:
3224*22dc650dSSadaf Ebrahimi 0: abc:
3225*22dc650dSSadaf Ebrahimi    12
3226*22dc650dSSadaf Ebrahimi 0: 12
3227*22dc650dSSadaf Ebrahimi    123
3228*22dc650dSSadaf Ebrahimi 0: 12
3229*22dc650dSSadaf Ebrahimi\= Expect no match
3230*22dc650dSSadaf Ebrahimi    xyz
3231*22dc650dSSadaf EbrahimiNo match
3232*22dc650dSSadaf Ebrahimi
3233*22dc650dSSadaf Ebrahimi/^(?(?!abc)\d\d|\w{3}:)$/
3234*22dc650dSSadaf Ebrahimi    abc:
3235*22dc650dSSadaf Ebrahimi 0: abc:
3236*22dc650dSSadaf Ebrahimi    12
3237*22dc650dSSadaf Ebrahimi 0: 12
3238*22dc650dSSadaf Ebrahimi\= Expect no match
3239*22dc650dSSadaf Ebrahimi    123
3240*22dc650dSSadaf EbrahimiNo match
3241*22dc650dSSadaf Ebrahimi    xyz
3242*22dc650dSSadaf EbrahimiNo match
3243*22dc650dSSadaf Ebrahimi
3244*22dc650dSSadaf Ebrahimi/(?(?<=foo)bar|cat)/
3245*22dc650dSSadaf Ebrahimi    foobar
3246*22dc650dSSadaf Ebrahimi 0: bar
3247*22dc650dSSadaf Ebrahimi    cat
3248*22dc650dSSadaf Ebrahimi 0: cat
3249*22dc650dSSadaf Ebrahimi    fcat
3250*22dc650dSSadaf Ebrahimi 0: cat
3251*22dc650dSSadaf Ebrahimi    focat
3252*22dc650dSSadaf Ebrahimi 0: cat
3253*22dc650dSSadaf Ebrahimi\= Expect no match
3254*22dc650dSSadaf Ebrahimi    foocat
3255*22dc650dSSadaf EbrahimiNo match
3256*22dc650dSSadaf Ebrahimi
3257*22dc650dSSadaf Ebrahimi/(?(?<!foo)cat|bar)/
3258*22dc650dSSadaf Ebrahimi    foobar
3259*22dc650dSSadaf Ebrahimi 0: bar
3260*22dc650dSSadaf Ebrahimi    cat
3261*22dc650dSSadaf Ebrahimi 0: cat
3262*22dc650dSSadaf Ebrahimi    fcat
3263*22dc650dSSadaf Ebrahimi 0: cat
3264*22dc650dSSadaf Ebrahimi    focat
3265*22dc650dSSadaf Ebrahimi 0: cat
3266*22dc650dSSadaf Ebrahimi\= Expect no match
3267*22dc650dSSadaf Ebrahimi    foocat
3268*22dc650dSSadaf EbrahimiNo match
3269*22dc650dSSadaf Ebrahimi
3270*22dc650dSSadaf Ebrahimi/( \( )? [^()]+ (?(1) \) |) /x
3271*22dc650dSSadaf Ebrahimi    abcd
3272*22dc650dSSadaf Ebrahimi 0: abcd
3273*22dc650dSSadaf Ebrahimi    (abcd)
3274*22dc650dSSadaf Ebrahimi 0: (abcd)
3275*22dc650dSSadaf Ebrahimi 1: (
3276*22dc650dSSadaf Ebrahimi    the quick (abcd) fox
3277*22dc650dSSadaf Ebrahimi 0: the quick
3278*22dc650dSSadaf Ebrahimi    (abcd
3279*22dc650dSSadaf Ebrahimi 0: abcd
3280*22dc650dSSadaf Ebrahimi
3281*22dc650dSSadaf Ebrahimi/( \( )? [^()]+ (?(1) \) ) /x
3282*22dc650dSSadaf Ebrahimi    abcd
3283*22dc650dSSadaf Ebrahimi 0: abcd
3284*22dc650dSSadaf Ebrahimi    (abcd)
3285*22dc650dSSadaf Ebrahimi 0: (abcd)
3286*22dc650dSSadaf Ebrahimi 1: (
3287*22dc650dSSadaf Ebrahimi    the quick (abcd) fox
3288*22dc650dSSadaf Ebrahimi 0: the quick
3289*22dc650dSSadaf Ebrahimi    (abcd
3290*22dc650dSSadaf Ebrahimi 0: abcd
3291*22dc650dSSadaf Ebrahimi
3292*22dc650dSSadaf Ebrahimi/^(?(2)a|(1)(2))+$/
3293*22dc650dSSadaf Ebrahimi    12
3294*22dc650dSSadaf Ebrahimi 0: 12
3295*22dc650dSSadaf Ebrahimi 1: 1
3296*22dc650dSSadaf Ebrahimi 2: 2
3297*22dc650dSSadaf Ebrahimi    12a
3298*22dc650dSSadaf Ebrahimi 0: 12a
3299*22dc650dSSadaf Ebrahimi 1: 1
3300*22dc650dSSadaf Ebrahimi 2: 2
3301*22dc650dSSadaf Ebrahimi    12aa
3302*22dc650dSSadaf Ebrahimi 0: 12aa
3303*22dc650dSSadaf Ebrahimi 1: 1
3304*22dc650dSSadaf Ebrahimi 2: 2
3305*22dc650dSSadaf Ebrahimi\= Expect no match
3306*22dc650dSSadaf Ebrahimi    1234
3307*22dc650dSSadaf EbrahimiNo match
3308*22dc650dSSadaf Ebrahimi
3309*22dc650dSSadaf Ebrahimi/((?i)blah)\s+\1/
3310*22dc650dSSadaf Ebrahimi    blah blah
3311*22dc650dSSadaf Ebrahimi 0: blah blah
3312*22dc650dSSadaf Ebrahimi 1: blah
3313*22dc650dSSadaf Ebrahimi    BLAH BLAH
3314*22dc650dSSadaf Ebrahimi 0: BLAH BLAH
3315*22dc650dSSadaf Ebrahimi 1: BLAH
3316*22dc650dSSadaf Ebrahimi    Blah Blah
3317*22dc650dSSadaf Ebrahimi 0: Blah Blah
3318*22dc650dSSadaf Ebrahimi 1: Blah
3319*22dc650dSSadaf Ebrahimi    blaH blaH
3320*22dc650dSSadaf Ebrahimi 0: blaH blaH
3321*22dc650dSSadaf Ebrahimi 1: blaH
3322*22dc650dSSadaf Ebrahimi\= Expect no match
3323*22dc650dSSadaf Ebrahimi    blah BLAH
3324*22dc650dSSadaf EbrahimiNo match
3325*22dc650dSSadaf Ebrahimi    Blah blah
3326*22dc650dSSadaf EbrahimiNo match
3327*22dc650dSSadaf Ebrahimi    blaH blah
3328*22dc650dSSadaf EbrahimiNo match
3329*22dc650dSSadaf Ebrahimi
3330*22dc650dSSadaf Ebrahimi/((?i)blah)\s+(?i:\1)/
3331*22dc650dSSadaf Ebrahimi    blah blah
3332*22dc650dSSadaf Ebrahimi 0: blah blah
3333*22dc650dSSadaf Ebrahimi 1: blah
3334*22dc650dSSadaf Ebrahimi    BLAH BLAH
3335*22dc650dSSadaf Ebrahimi 0: BLAH BLAH
3336*22dc650dSSadaf Ebrahimi 1: BLAH
3337*22dc650dSSadaf Ebrahimi    Blah Blah
3338*22dc650dSSadaf Ebrahimi 0: Blah Blah
3339*22dc650dSSadaf Ebrahimi 1: Blah
3340*22dc650dSSadaf Ebrahimi    blaH blaH
3341*22dc650dSSadaf Ebrahimi 0: blaH blaH
3342*22dc650dSSadaf Ebrahimi 1: blaH
3343*22dc650dSSadaf Ebrahimi    blah BLAH
3344*22dc650dSSadaf Ebrahimi 0: blah BLAH
3345*22dc650dSSadaf Ebrahimi 1: blah
3346*22dc650dSSadaf Ebrahimi    Blah blah
3347*22dc650dSSadaf Ebrahimi 0: Blah blah
3348*22dc650dSSadaf Ebrahimi 1: Blah
3349*22dc650dSSadaf Ebrahimi    blaH blah
3350*22dc650dSSadaf Ebrahimi 0: blaH blah
3351*22dc650dSSadaf Ebrahimi 1: blaH
3352*22dc650dSSadaf Ebrahimi
3353*22dc650dSSadaf Ebrahimi/((?i)blah)\s+(?m)A(?i:\1)/
3354*22dc650dSSadaf Ebrahimi    blah ABLAH
3355*22dc650dSSadaf Ebrahimi 0: blah ABLAH
3356*22dc650dSSadaf Ebrahimi 1: blah
3357*22dc650dSSadaf Ebrahimi\= Expect no match
3358*22dc650dSSadaf Ebrahimi    blah aBLAH
3359*22dc650dSSadaf EbrahimiNo match
3360*22dc650dSSadaf Ebrahimi
3361*22dc650dSSadaf Ebrahimi/(?>a*)*/
3362*22dc650dSSadaf Ebrahimi    a
3363*22dc650dSSadaf Ebrahimi 0: a
3364*22dc650dSSadaf Ebrahimi    aa
3365*22dc650dSSadaf Ebrahimi 0: aa
3366*22dc650dSSadaf Ebrahimi    aaaa
3367*22dc650dSSadaf Ebrahimi 0: aaaa
3368*22dc650dSSadaf Ebrahimi
3369*22dc650dSSadaf Ebrahimi/(abc|)+/
3370*22dc650dSSadaf Ebrahimi    abc
3371*22dc650dSSadaf Ebrahimi 0: abc
3372*22dc650dSSadaf Ebrahimi 1:
3373*22dc650dSSadaf Ebrahimi    abcabc
3374*22dc650dSSadaf Ebrahimi 0: abcabc
3375*22dc650dSSadaf Ebrahimi 1:
3376*22dc650dSSadaf Ebrahimi    abcabcabc
3377*22dc650dSSadaf Ebrahimi 0: abcabcabc
3378*22dc650dSSadaf Ebrahimi 1:
3379*22dc650dSSadaf Ebrahimi    xyz
3380*22dc650dSSadaf Ebrahimi 0:
3381*22dc650dSSadaf Ebrahimi 1:
3382*22dc650dSSadaf Ebrahimi
3383*22dc650dSSadaf Ebrahimi/([a]*)*/
3384*22dc650dSSadaf Ebrahimi    a
3385*22dc650dSSadaf Ebrahimi 0: a
3386*22dc650dSSadaf Ebrahimi 1:
3387*22dc650dSSadaf Ebrahimi    aaaaa
3388*22dc650dSSadaf Ebrahimi 0: aaaaa
3389*22dc650dSSadaf Ebrahimi 1:
3390*22dc650dSSadaf Ebrahimi
3391*22dc650dSSadaf Ebrahimi/([ab]*)*/
3392*22dc650dSSadaf Ebrahimi    a
3393*22dc650dSSadaf Ebrahimi 0: a
3394*22dc650dSSadaf Ebrahimi 1:
3395*22dc650dSSadaf Ebrahimi    b
3396*22dc650dSSadaf Ebrahimi 0: b
3397*22dc650dSSadaf Ebrahimi 1:
3398*22dc650dSSadaf Ebrahimi    ababab
3399*22dc650dSSadaf Ebrahimi 0: ababab
3400*22dc650dSSadaf Ebrahimi 1:
3401*22dc650dSSadaf Ebrahimi    aaaabcde
3402*22dc650dSSadaf Ebrahimi 0: aaaab
3403*22dc650dSSadaf Ebrahimi 1:
3404*22dc650dSSadaf Ebrahimi    bbbb
3405*22dc650dSSadaf Ebrahimi 0: bbbb
3406*22dc650dSSadaf Ebrahimi 1:
3407*22dc650dSSadaf Ebrahimi
3408*22dc650dSSadaf Ebrahimi/([^a]*)*/
3409*22dc650dSSadaf Ebrahimi    b
3410*22dc650dSSadaf Ebrahimi 0: b
3411*22dc650dSSadaf Ebrahimi 1:
3412*22dc650dSSadaf Ebrahimi    bbbb
3413*22dc650dSSadaf Ebrahimi 0: bbbb
3414*22dc650dSSadaf Ebrahimi 1:
3415*22dc650dSSadaf Ebrahimi    aaa
3416*22dc650dSSadaf Ebrahimi 0:
3417*22dc650dSSadaf Ebrahimi 1:
3418*22dc650dSSadaf Ebrahimi
3419*22dc650dSSadaf Ebrahimi/([^ab]*)*/
3420*22dc650dSSadaf Ebrahimi    cccc
3421*22dc650dSSadaf Ebrahimi 0: cccc
3422*22dc650dSSadaf Ebrahimi 1:
3423*22dc650dSSadaf Ebrahimi    abab
3424*22dc650dSSadaf Ebrahimi 0:
3425*22dc650dSSadaf Ebrahimi 1:
3426*22dc650dSSadaf Ebrahimi
3427*22dc650dSSadaf Ebrahimi/([a]*?)*/
3428*22dc650dSSadaf Ebrahimi    a
3429*22dc650dSSadaf Ebrahimi 0:
3430*22dc650dSSadaf Ebrahimi 1:
3431*22dc650dSSadaf Ebrahimi    aaaa
3432*22dc650dSSadaf Ebrahimi 0:
3433*22dc650dSSadaf Ebrahimi 1:
3434*22dc650dSSadaf Ebrahimi
3435*22dc650dSSadaf Ebrahimi/([ab]*?)*/
3436*22dc650dSSadaf Ebrahimi    a
3437*22dc650dSSadaf Ebrahimi 0:
3438*22dc650dSSadaf Ebrahimi 1:
3439*22dc650dSSadaf Ebrahimi    b
3440*22dc650dSSadaf Ebrahimi 0:
3441*22dc650dSSadaf Ebrahimi 1:
3442*22dc650dSSadaf Ebrahimi    abab
3443*22dc650dSSadaf Ebrahimi 0:
3444*22dc650dSSadaf Ebrahimi 1:
3445*22dc650dSSadaf Ebrahimi    baba
3446*22dc650dSSadaf Ebrahimi 0:
3447*22dc650dSSadaf Ebrahimi 1:
3448*22dc650dSSadaf Ebrahimi
3449*22dc650dSSadaf Ebrahimi/([^a]*?)*/
3450*22dc650dSSadaf Ebrahimi    b
3451*22dc650dSSadaf Ebrahimi 0:
3452*22dc650dSSadaf Ebrahimi 1:
3453*22dc650dSSadaf Ebrahimi    bbbb
3454*22dc650dSSadaf Ebrahimi 0:
3455*22dc650dSSadaf Ebrahimi 1:
3456*22dc650dSSadaf Ebrahimi    aaa
3457*22dc650dSSadaf Ebrahimi 0:
3458*22dc650dSSadaf Ebrahimi 1:
3459*22dc650dSSadaf Ebrahimi
3460*22dc650dSSadaf Ebrahimi/([^ab]*?)*/
3461*22dc650dSSadaf Ebrahimi    c
3462*22dc650dSSadaf Ebrahimi 0:
3463*22dc650dSSadaf Ebrahimi 1:
3464*22dc650dSSadaf Ebrahimi    cccc
3465*22dc650dSSadaf Ebrahimi 0:
3466*22dc650dSSadaf Ebrahimi 1:
3467*22dc650dSSadaf Ebrahimi    baba
3468*22dc650dSSadaf Ebrahimi 0:
3469*22dc650dSSadaf Ebrahimi 1:
3470*22dc650dSSadaf Ebrahimi
3471*22dc650dSSadaf Ebrahimi/(?>a*)*/
3472*22dc650dSSadaf Ebrahimi    a
3473*22dc650dSSadaf Ebrahimi 0: a
3474*22dc650dSSadaf Ebrahimi    aaabcde
3475*22dc650dSSadaf Ebrahimi 0: aaa
3476*22dc650dSSadaf Ebrahimi
3477*22dc650dSSadaf Ebrahimi/((?>a*))*/
3478*22dc650dSSadaf Ebrahimi    aaaaa
3479*22dc650dSSadaf Ebrahimi 0: aaaaa
3480*22dc650dSSadaf Ebrahimi 1:
3481*22dc650dSSadaf Ebrahimi    aabbaa
3482*22dc650dSSadaf Ebrahimi 0: aa
3483*22dc650dSSadaf Ebrahimi 1:
3484*22dc650dSSadaf Ebrahimi
3485*22dc650dSSadaf Ebrahimi/((?>a*?))*/
3486*22dc650dSSadaf Ebrahimi    aaaaa
3487*22dc650dSSadaf Ebrahimi 0:
3488*22dc650dSSadaf Ebrahimi 1:
3489*22dc650dSSadaf Ebrahimi    aabbaa
3490*22dc650dSSadaf Ebrahimi 0:
3491*22dc650dSSadaf Ebrahimi 1:
3492*22dc650dSSadaf Ebrahimi
3493*22dc650dSSadaf Ebrahimi/(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
3494*22dc650dSSadaf Ebrahimi    12-sep-98
3495*22dc650dSSadaf Ebrahimi 0: 12-sep-98
3496*22dc650dSSadaf Ebrahimi    12-09-98
3497*22dc650dSSadaf Ebrahimi 0: 12-09-98
3498*22dc650dSSadaf Ebrahimi\= Expect no match
3499*22dc650dSSadaf Ebrahimi    sep-12-98
3500*22dc650dSSadaf EbrahimiNo match
3501*22dc650dSSadaf Ebrahimi
3502*22dc650dSSadaf Ebrahimi/(?<=(foo))bar\1/
3503*22dc650dSSadaf Ebrahimi    foobarfoo
3504*22dc650dSSadaf Ebrahimi 0: barfoo
3505*22dc650dSSadaf Ebrahimi 1: foo
3506*22dc650dSSadaf Ebrahimi    foobarfootling
3507*22dc650dSSadaf Ebrahimi 0: barfoo
3508*22dc650dSSadaf Ebrahimi 1: foo
3509*22dc650dSSadaf Ebrahimi\= Expect no match
3510*22dc650dSSadaf Ebrahimi    foobar
3511*22dc650dSSadaf EbrahimiNo match
3512*22dc650dSSadaf Ebrahimi    barfoo
3513*22dc650dSSadaf EbrahimiNo match
3514*22dc650dSSadaf Ebrahimi
3515*22dc650dSSadaf Ebrahimi/(?i:saturday|sunday)/
3516*22dc650dSSadaf Ebrahimi    saturday
3517*22dc650dSSadaf Ebrahimi 0: saturday
3518*22dc650dSSadaf Ebrahimi    sunday
3519*22dc650dSSadaf Ebrahimi 0: sunday
3520*22dc650dSSadaf Ebrahimi    Saturday
3521*22dc650dSSadaf Ebrahimi 0: Saturday
3522*22dc650dSSadaf Ebrahimi    Sunday
3523*22dc650dSSadaf Ebrahimi 0: Sunday
3524*22dc650dSSadaf Ebrahimi    SATURDAY
3525*22dc650dSSadaf Ebrahimi 0: SATURDAY
3526*22dc650dSSadaf Ebrahimi    SUNDAY
3527*22dc650dSSadaf Ebrahimi 0: SUNDAY
3528*22dc650dSSadaf Ebrahimi    SunDay
3529*22dc650dSSadaf Ebrahimi 0: SunDay
3530*22dc650dSSadaf Ebrahimi
3531*22dc650dSSadaf Ebrahimi/(a(?i)bc|BB)x/
3532*22dc650dSSadaf Ebrahimi    abcx
3533*22dc650dSSadaf Ebrahimi 0: abcx
3534*22dc650dSSadaf Ebrahimi 1: abc
3535*22dc650dSSadaf Ebrahimi    aBCx
3536*22dc650dSSadaf Ebrahimi 0: aBCx
3537*22dc650dSSadaf Ebrahimi 1: aBC
3538*22dc650dSSadaf Ebrahimi    bbx
3539*22dc650dSSadaf Ebrahimi 0: bbx
3540*22dc650dSSadaf Ebrahimi 1: bb
3541*22dc650dSSadaf Ebrahimi    BBx
3542*22dc650dSSadaf Ebrahimi 0: BBx
3543*22dc650dSSadaf Ebrahimi 1: BB
3544*22dc650dSSadaf Ebrahimi\= Expect no match
3545*22dc650dSSadaf Ebrahimi    abcX
3546*22dc650dSSadaf EbrahimiNo match
3547*22dc650dSSadaf Ebrahimi    aBCX
3548*22dc650dSSadaf EbrahimiNo match
3549*22dc650dSSadaf Ebrahimi    bbX
3550*22dc650dSSadaf EbrahimiNo match
3551*22dc650dSSadaf Ebrahimi    BBX
3552*22dc650dSSadaf EbrahimiNo match
3553*22dc650dSSadaf Ebrahimi
3554*22dc650dSSadaf Ebrahimi/^([ab](?i)[cd]|[ef])/
3555*22dc650dSSadaf Ebrahimi    ac
3556*22dc650dSSadaf Ebrahimi 0: ac
3557*22dc650dSSadaf Ebrahimi 1: ac
3558*22dc650dSSadaf Ebrahimi    aC
3559*22dc650dSSadaf Ebrahimi 0: aC
3560*22dc650dSSadaf Ebrahimi 1: aC
3561*22dc650dSSadaf Ebrahimi    bD
3562*22dc650dSSadaf Ebrahimi 0: bD
3563*22dc650dSSadaf Ebrahimi 1: bD
3564*22dc650dSSadaf Ebrahimi    elephant
3565*22dc650dSSadaf Ebrahimi 0: e
3566*22dc650dSSadaf Ebrahimi 1: e
3567*22dc650dSSadaf Ebrahimi    Europe
3568*22dc650dSSadaf Ebrahimi 0: E
3569*22dc650dSSadaf Ebrahimi 1: E
3570*22dc650dSSadaf Ebrahimi    frog
3571*22dc650dSSadaf Ebrahimi 0: f
3572*22dc650dSSadaf Ebrahimi 1: f
3573*22dc650dSSadaf Ebrahimi    France
3574*22dc650dSSadaf Ebrahimi 0: F
3575*22dc650dSSadaf Ebrahimi 1: F
3576*22dc650dSSadaf Ebrahimi\= Expect no match
3577*22dc650dSSadaf Ebrahimi    Africa
3578*22dc650dSSadaf EbrahimiNo match
3579*22dc650dSSadaf Ebrahimi
3580*22dc650dSSadaf Ebrahimi/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
3581*22dc650dSSadaf Ebrahimi    ab
3582*22dc650dSSadaf Ebrahimi 0: ab
3583*22dc650dSSadaf Ebrahimi 1: ab
3584*22dc650dSSadaf Ebrahimi    aBd
3585*22dc650dSSadaf Ebrahimi 0: aBd
3586*22dc650dSSadaf Ebrahimi 1: aBd
3587*22dc650dSSadaf Ebrahimi    xy
3588*22dc650dSSadaf Ebrahimi 0: xy
3589*22dc650dSSadaf Ebrahimi 1: xy
3590*22dc650dSSadaf Ebrahimi    xY
3591*22dc650dSSadaf Ebrahimi 0: xY
3592*22dc650dSSadaf Ebrahimi 1: xY
3593*22dc650dSSadaf Ebrahimi    zebra
3594*22dc650dSSadaf Ebrahimi 0: z
3595*22dc650dSSadaf Ebrahimi 1: z
3596*22dc650dSSadaf Ebrahimi    Zambesi
3597*22dc650dSSadaf Ebrahimi 0: Z
3598*22dc650dSSadaf Ebrahimi 1: Z
3599*22dc650dSSadaf Ebrahimi\= Expect no match
3600*22dc650dSSadaf Ebrahimi    aCD
3601*22dc650dSSadaf EbrahimiNo match
3602*22dc650dSSadaf Ebrahimi    XY
3603*22dc650dSSadaf EbrahimiNo match
3604*22dc650dSSadaf Ebrahimi
3605*22dc650dSSadaf Ebrahimi/(?<=foo\n)^bar/m
3606*22dc650dSSadaf Ebrahimi    foo\nbar
3607*22dc650dSSadaf Ebrahimi 0: bar
3608*22dc650dSSadaf Ebrahimi\= Expect no match
3609*22dc650dSSadaf Ebrahimi    bar
3610*22dc650dSSadaf EbrahimiNo match
3611*22dc650dSSadaf Ebrahimi    baz\nbar
3612*22dc650dSSadaf EbrahimiNo match
3613*22dc650dSSadaf Ebrahimi
3614*22dc650dSSadaf Ebrahimi/(?<=(?<!foo)bar)baz/
3615*22dc650dSSadaf Ebrahimi    barbaz
3616*22dc650dSSadaf Ebrahimi 0: baz
3617*22dc650dSSadaf Ebrahimi    barbarbaz
3618*22dc650dSSadaf Ebrahimi 0: baz
3619*22dc650dSSadaf Ebrahimi    koobarbaz
3620*22dc650dSSadaf Ebrahimi 0: baz
3621*22dc650dSSadaf Ebrahimi\= Expect no match
3622*22dc650dSSadaf Ebrahimi    baz
3623*22dc650dSSadaf EbrahimiNo match
3624*22dc650dSSadaf Ebrahimi    foobarbaz
3625*22dc650dSSadaf EbrahimiNo match
3626*22dc650dSSadaf Ebrahimi
3627*22dc650dSSadaf Ebrahimi# The cases of aaaa and aaaaaa are missed out below because Perl does things
3628*22dc650dSSadaf Ebrahimi# differently. We know that odd, and maybe incorrect, things happen with
3629*22dc650dSSadaf Ebrahimi# recursive references in Perl, as far as 5.11.3 - see some stuff in test #2.
3630*22dc650dSSadaf Ebrahimi
3631*22dc650dSSadaf Ebrahimi/^(a\1?){4}$/
3632*22dc650dSSadaf Ebrahimi    aaaaa
3633*22dc650dSSadaf Ebrahimi 0: aaaaa
3634*22dc650dSSadaf Ebrahimi 1: a
3635*22dc650dSSadaf Ebrahimi    aaaaaaa
3636*22dc650dSSadaf Ebrahimi 0: aaaaaaa
3637*22dc650dSSadaf Ebrahimi 1: a
3638*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
3639*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaa
3640*22dc650dSSadaf Ebrahimi 1: aaaa
3641*22dc650dSSadaf Ebrahimi\= Expect no match
3642*22dc650dSSadaf Ebrahimi    a
3643*22dc650dSSadaf EbrahimiNo match
3644*22dc650dSSadaf Ebrahimi    aa
3645*22dc650dSSadaf EbrahimiNo match
3646*22dc650dSSadaf Ebrahimi    aaa
3647*22dc650dSSadaf EbrahimiNo match
3648*22dc650dSSadaf Ebrahimi    aaaaaaaa
3649*22dc650dSSadaf EbrahimiNo match
3650*22dc650dSSadaf Ebrahimi    aaaaaaaaa
3651*22dc650dSSadaf EbrahimiNo match
3652*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
3653*22dc650dSSadaf EbrahimiNo match
3654*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaa
3655*22dc650dSSadaf EbrahimiNo match
3656*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaa
3657*22dc650dSSadaf EbrahimiNo match
3658*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaa
3659*22dc650dSSadaf EbrahimiNo match
3660*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaa
3661*22dc650dSSadaf EbrahimiNo match
3662*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaaa
3663*22dc650dSSadaf EbrahimiNo match
3664*22dc650dSSadaf Ebrahimi
3665*22dc650dSSadaf Ebrahimi/^(a\1?)(a\1?)(a\2?)(a\3?)$/
3666*22dc650dSSadaf Ebrahimi    aaaa
3667*22dc650dSSadaf Ebrahimi 0: aaaa
3668*22dc650dSSadaf Ebrahimi 1: a
3669*22dc650dSSadaf Ebrahimi 2: a
3670*22dc650dSSadaf Ebrahimi 3: a
3671*22dc650dSSadaf Ebrahimi 4: a
3672*22dc650dSSadaf Ebrahimi    aaaaa
3673*22dc650dSSadaf Ebrahimi 0: aaaaa
3674*22dc650dSSadaf Ebrahimi 1: a
3675*22dc650dSSadaf Ebrahimi 2: aa
3676*22dc650dSSadaf Ebrahimi 3: a
3677*22dc650dSSadaf Ebrahimi 4: a
3678*22dc650dSSadaf Ebrahimi    aaaaaa
3679*22dc650dSSadaf Ebrahimi 0: aaaaaa
3680*22dc650dSSadaf Ebrahimi 1: a
3681*22dc650dSSadaf Ebrahimi 2: aa
3682*22dc650dSSadaf Ebrahimi 3: a
3683*22dc650dSSadaf Ebrahimi 4: aa
3684*22dc650dSSadaf Ebrahimi    aaaaaaa
3685*22dc650dSSadaf Ebrahimi 0: aaaaaaa
3686*22dc650dSSadaf Ebrahimi 1: a
3687*22dc650dSSadaf Ebrahimi 2: aa
3688*22dc650dSSadaf Ebrahimi 3: aaa
3689*22dc650dSSadaf Ebrahimi 4: a
3690*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
3691*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaa
3692*22dc650dSSadaf Ebrahimi 1: a
3693*22dc650dSSadaf Ebrahimi 2: aa
3694*22dc650dSSadaf Ebrahimi 3: aaa
3695*22dc650dSSadaf Ebrahimi 4: aaaa
3696*22dc650dSSadaf Ebrahimi\= Expect no match
3697*22dc650dSSadaf Ebrahimi    a
3698*22dc650dSSadaf EbrahimiNo match
3699*22dc650dSSadaf Ebrahimi    aa
3700*22dc650dSSadaf EbrahimiNo match
3701*22dc650dSSadaf Ebrahimi    aaa
3702*22dc650dSSadaf EbrahimiNo match
3703*22dc650dSSadaf Ebrahimi    aaaaaaaa
3704*22dc650dSSadaf EbrahimiNo match
3705*22dc650dSSadaf Ebrahimi    aaaaaaaaa
3706*22dc650dSSadaf EbrahimiNo match
3707*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
3708*22dc650dSSadaf EbrahimiNo match
3709*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaa
3710*22dc650dSSadaf EbrahimiNo match
3711*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaa
3712*22dc650dSSadaf EbrahimiNo match
3713*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaa
3714*22dc650dSSadaf EbrahimiNo match
3715*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaa
3716*22dc650dSSadaf EbrahimiNo match
3717*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaaa
3718*22dc650dSSadaf EbrahimiNo match
3719*22dc650dSSadaf Ebrahimi
3720*22dc650dSSadaf Ebrahimi# The following tests are taken from the Perl 5.005 test suite; some of them
3721*22dc650dSSadaf Ebrahimi# are compatible with 5.004, but I'd rather not have to sort them out.
3722*22dc650dSSadaf Ebrahimi
3723*22dc650dSSadaf Ebrahimi/abc/
3724*22dc650dSSadaf Ebrahimi    abc
3725*22dc650dSSadaf Ebrahimi 0: abc
3726*22dc650dSSadaf Ebrahimi    xabcy
3727*22dc650dSSadaf Ebrahimi 0: abc
3728*22dc650dSSadaf Ebrahimi    ababc
3729*22dc650dSSadaf Ebrahimi 0: abc
3730*22dc650dSSadaf Ebrahimi\= Expect no match
3731*22dc650dSSadaf Ebrahimi    xbc
3732*22dc650dSSadaf EbrahimiNo match
3733*22dc650dSSadaf Ebrahimi    axc
3734*22dc650dSSadaf EbrahimiNo match
3735*22dc650dSSadaf Ebrahimi    abx
3736*22dc650dSSadaf EbrahimiNo match
3737*22dc650dSSadaf Ebrahimi
3738*22dc650dSSadaf Ebrahimi/ab*c/
3739*22dc650dSSadaf Ebrahimi    abc
3740*22dc650dSSadaf Ebrahimi 0: abc
3741*22dc650dSSadaf Ebrahimi
3742*22dc650dSSadaf Ebrahimi/ab*bc/
3743*22dc650dSSadaf Ebrahimi    abc
3744*22dc650dSSadaf Ebrahimi 0: abc
3745*22dc650dSSadaf Ebrahimi    abbc
3746*22dc650dSSadaf Ebrahimi 0: abbc
3747*22dc650dSSadaf Ebrahimi    abbbbc
3748*22dc650dSSadaf Ebrahimi 0: abbbbc
3749*22dc650dSSadaf Ebrahimi
3750*22dc650dSSadaf Ebrahimi/.{1}/
3751*22dc650dSSadaf Ebrahimi    abbbbc
3752*22dc650dSSadaf Ebrahimi 0: a
3753*22dc650dSSadaf Ebrahimi
3754*22dc650dSSadaf Ebrahimi/.{3,4}/
3755*22dc650dSSadaf Ebrahimi    abbbbc
3756*22dc650dSSadaf Ebrahimi 0: abbb
3757*22dc650dSSadaf Ebrahimi
3758*22dc650dSSadaf Ebrahimi/ab{0,}bc/
3759*22dc650dSSadaf Ebrahimi    abbbbc
3760*22dc650dSSadaf Ebrahimi 0: abbbbc
3761*22dc650dSSadaf Ebrahimi
3762*22dc650dSSadaf Ebrahimi/ab+bc/
3763*22dc650dSSadaf Ebrahimi    abbc
3764*22dc650dSSadaf Ebrahimi 0: abbc
3765*22dc650dSSadaf Ebrahimi\= Expect no match
3766*22dc650dSSadaf Ebrahimi    abc
3767*22dc650dSSadaf EbrahimiNo match
3768*22dc650dSSadaf Ebrahimi    abq
3769*22dc650dSSadaf EbrahimiNo match
3770*22dc650dSSadaf Ebrahimi
3771*22dc650dSSadaf Ebrahimi/ab{1,}bc/
3772*22dc650dSSadaf Ebrahimi
3773*22dc650dSSadaf Ebrahimi/ab+bc/
3774*22dc650dSSadaf Ebrahimi    abbbbc
3775*22dc650dSSadaf Ebrahimi 0: abbbbc
3776*22dc650dSSadaf Ebrahimi
3777*22dc650dSSadaf Ebrahimi/ab{1,}bc/
3778*22dc650dSSadaf Ebrahimi    abbbbc
3779*22dc650dSSadaf Ebrahimi 0: abbbbc
3780*22dc650dSSadaf Ebrahimi
3781*22dc650dSSadaf Ebrahimi/ab{1,3}bc/
3782*22dc650dSSadaf Ebrahimi    abbbbc
3783*22dc650dSSadaf Ebrahimi 0: abbbbc
3784*22dc650dSSadaf Ebrahimi
3785*22dc650dSSadaf Ebrahimi/ab{3,4}bc/
3786*22dc650dSSadaf Ebrahimi    abbbbc
3787*22dc650dSSadaf Ebrahimi 0: abbbbc
3788*22dc650dSSadaf Ebrahimi
3789*22dc650dSSadaf Ebrahimi/ab{4,5}bc/
3790*22dc650dSSadaf Ebrahimi\= Expect no match
3791*22dc650dSSadaf Ebrahimi    abq
3792*22dc650dSSadaf EbrahimiNo match
3793*22dc650dSSadaf Ebrahimi    abbbbc
3794*22dc650dSSadaf EbrahimiNo match
3795*22dc650dSSadaf Ebrahimi
3796*22dc650dSSadaf Ebrahimi/ab?bc/
3797*22dc650dSSadaf Ebrahimi    abbc
3798*22dc650dSSadaf Ebrahimi 0: abbc
3799*22dc650dSSadaf Ebrahimi    abc
3800*22dc650dSSadaf Ebrahimi 0: abc
3801*22dc650dSSadaf Ebrahimi
3802*22dc650dSSadaf Ebrahimi/ab{0,1}bc/
3803*22dc650dSSadaf Ebrahimi    abc
3804*22dc650dSSadaf Ebrahimi 0: abc
3805*22dc650dSSadaf Ebrahimi
3806*22dc650dSSadaf Ebrahimi/ab?bc/
3807*22dc650dSSadaf Ebrahimi
3808*22dc650dSSadaf Ebrahimi/ab?c/
3809*22dc650dSSadaf Ebrahimi    abc
3810*22dc650dSSadaf Ebrahimi 0: abc
3811*22dc650dSSadaf Ebrahimi
3812*22dc650dSSadaf Ebrahimi/ab{0,1}c/
3813*22dc650dSSadaf Ebrahimi    abc
3814*22dc650dSSadaf Ebrahimi 0: abc
3815*22dc650dSSadaf Ebrahimi
3816*22dc650dSSadaf Ebrahimi/^abc$/
3817*22dc650dSSadaf Ebrahimi    abc
3818*22dc650dSSadaf Ebrahimi 0: abc
3819*22dc650dSSadaf Ebrahimi\= Expect no match
3820*22dc650dSSadaf Ebrahimi    abbbbc
3821*22dc650dSSadaf EbrahimiNo match
3822*22dc650dSSadaf Ebrahimi    abcc
3823*22dc650dSSadaf EbrahimiNo match
3824*22dc650dSSadaf Ebrahimi
3825*22dc650dSSadaf Ebrahimi/^abc/
3826*22dc650dSSadaf Ebrahimi    abcc
3827*22dc650dSSadaf Ebrahimi 0: abc
3828*22dc650dSSadaf Ebrahimi
3829*22dc650dSSadaf Ebrahimi/^abc$/
3830*22dc650dSSadaf Ebrahimi
3831*22dc650dSSadaf Ebrahimi/abc$/
3832*22dc650dSSadaf Ebrahimi    aabc
3833*22dc650dSSadaf Ebrahimi 0: abc
3834*22dc650dSSadaf Ebrahimi\= Expect no match
3835*22dc650dSSadaf Ebrahimi    aabcd
3836*22dc650dSSadaf EbrahimiNo match
3837*22dc650dSSadaf Ebrahimi
3838*22dc650dSSadaf Ebrahimi/^/
3839*22dc650dSSadaf Ebrahimi    abc
3840*22dc650dSSadaf Ebrahimi 0:
3841*22dc650dSSadaf Ebrahimi
3842*22dc650dSSadaf Ebrahimi/$/
3843*22dc650dSSadaf Ebrahimi    abc
3844*22dc650dSSadaf Ebrahimi 0:
3845*22dc650dSSadaf Ebrahimi
3846*22dc650dSSadaf Ebrahimi/a.c/
3847*22dc650dSSadaf Ebrahimi    abc
3848*22dc650dSSadaf Ebrahimi 0: abc
3849*22dc650dSSadaf Ebrahimi    axc
3850*22dc650dSSadaf Ebrahimi 0: axc
3851*22dc650dSSadaf Ebrahimi
3852*22dc650dSSadaf Ebrahimi/a.*c/
3853*22dc650dSSadaf Ebrahimi    axyzc
3854*22dc650dSSadaf Ebrahimi 0: axyzc
3855*22dc650dSSadaf Ebrahimi
3856*22dc650dSSadaf Ebrahimi/a[bc]d/
3857*22dc650dSSadaf Ebrahimi    abd
3858*22dc650dSSadaf Ebrahimi 0: abd
3859*22dc650dSSadaf Ebrahimi\= Expect no match
3860*22dc650dSSadaf Ebrahimi    axyzd
3861*22dc650dSSadaf EbrahimiNo match
3862*22dc650dSSadaf Ebrahimi    abc
3863*22dc650dSSadaf EbrahimiNo match
3864*22dc650dSSadaf Ebrahimi
3865*22dc650dSSadaf Ebrahimi/a[b-d]e/
3866*22dc650dSSadaf Ebrahimi    ace
3867*22dc650dSSadaf Ebrahimi 0: ace
3868*22dc650dSSadaf Ebrahimi
3869*22dc650dSSadaf Ebrahimi/a[b-d]/
3870*22dc650dSSadaf Ebrahimi    aac
3871*22dc650dSSadaf Ebrahimi 0: ac
3872*22dc650dSSadaf Ebrahimi
3873*22dc650dSSadaf Ebrahimi/a[-b]/
3874*22dc650dSSadaf Ebrahimi    a-
3875*22dc650dSSadaf Ebrahimi 0: a-
3876*22dc650dSSadaf Ebrahimi
3877*22dc650dSSadaf Ebrahimi/a[b-]/
3878*22dc650dSSadaf Ebrahimi    a-
3879*22dc650dSSadaf Ebrahimi 0: a-
3880*22dc650dSSadaf Ebrahimi
3881*22dc650dSSadaf Ebrahimi/a]/
3882*22dc650dSSadaf Ebrahimi    a]
3883*22dc650dSSadaf Ebrahimi 0: a]
3884*22dc650dSSadaf Ebrahimi
3885*22dc650dSSadaf Ebrahimi/a[]]b/
3886*22dc650dSSadaf Ebrahimi    a]b
3887*22dc650dSSadaf Ebrahimi 0: a]b
3888*22dc650dSSadaf Ebrahimi
3889*22dc650dSSadaf Ebrahimi/a[^bc]d/
3890*22dc650dSSadaf Ebrahimi    aed
3891*22dc650dSSadaf Ebrahimi 0: aed
3892*22dc650dSSadaf Ebrahimi\= Expect no match
3893*22dc650dSSadaf Ebrahimi    abd
3894*22dc650dSSadaf EbrahimiNo match
3895*22dc650dSSadaf Ebrahimi    abd
3896*22dc650dSSadaf EbrahimiNo match
3897*22dc650dSSadaf Ebrahimi
3898*22dc650dSSadaf Ebrahimi/a[^-b]c/
3899*22dc650dSSadaf Ebrahimi    adc
3900*22dc650dSSadaf Ebrahimi 0: adc
3901*22dc650dSSadaf Ebrahimi
3902*22dc650dSSadaf Ebrahimi/a[^]b]c/
3903*22dc650dSSadaf Ebrahimi    adc
3904*22dc650dSSadaf Ebrahimi 0: adc
3905*22dc650dSSadaf Ebrahimi    a-c
3906*22dc650dSSadaf Ebrahimi 0: a-c
3907*22dc650dSSadaf Ebrahimi\= Expect no match
3908*22dc650dSSadaf Ebrahimi    a]c
3909*22dc650dSSadaf EbrahimiNo match
3910*22dc650dSSadaf Ebrahimi
3911*22dc650dSSadaf Ebrahimi/\ba\b/
3912*22dc650dSSadaf Ebrahimi    a-
3913*22dc650dSSadaf Ebrahimi 0: a
3914*22dc650dSSadaf Ebrahimi    -a
3915*22dc650dSSadaf Ebrahimi 0: a
3916*22dc650dSSadaf Ebrahimi    -a-
3917*22dc650dSSadaf Ebrahimi 0: a
3918*22dc650dSSadaf Ebrahimi
3919*22dc650dSSadaf Ebrahimi/\by\b/
3920*22dc650dSSadaf Ebrahimi\= Expect no match
3921*22dc650dSSadaf Ebrahimi    xy
3922*22dc650dSSadaf EbrahimiNo match
3923*22dc650dSSadaf Ebrahimi    yz
3924*22dc650dSSadaf EbrahimiNo match
3925*22dc650dSSadaf Ebrahimi    xyz
3926*22dc650dSSadaf EbrahimiNo match
3927*22dc650dSSadaf Ebrahimi
3928*22dc650dSSadaf Ebrahimi/\Ba\B/
3929*22dc650dSSadaf Ebrahimi\= Expect no match
3930*22dc650dSSadaf Ebrahimi    a-
3931*22dc650dSSadaf EbrahimiNo match
3932*22dc650dSSadaf Ebrahimi    -a
3933*22dc650dSSadaf EbrahimiNo match
3934*22dc650dSSadaf Ebrahimi    -a-
3935*22dc650dSSadaf EbrahimiNo match
3936*22dc650dSSadaf Ebrahimi
3937*22dc650dSSadaf Ebrahimi/\By\b/
3938*22dc650dSSadaf Ebrahimi    xy
3939*22dc650dSSadaf Ebrahimi 0: y
3940*22dc650dSSadaf Ebrahimi
3941*22dc650dSSadaf Ebrahimi/\by\B/
3942*22dc650dSSadaf Ebrahimi    yz
3943*22dc650dSSadaf Ebrahimi 0: y
3944*22dc650dSSadaf Ebrahimi
3945*22dc650dSSadaf Ebrahimi/\By\B/
3946*22dc650dSSadaf Ebrahimi    xyz
3947*22dc650dSSadaf Ebrahimi 0: y
3948*22dc650dSSadaf Ebrahimi
3949*22dc650dSSadaf Ebrahimi/\w/
3950*22dc650dSSadaf Ebrahimi    a
3951*22dc650dSSadaf Ebrahimi 0: a
3952*22dc650dSSadaf Ebrahimi
3953*22dc650dSSadaf Ebrahimi/\W/
3954*22dc650dSSadaf Ebrahimi    -
3955*22dc650dSSadaf Ebrahimi 0: -
3956*22dc650dSSadaf Ebrahimi\= Expect no match
3957*22dc650dSSadaf Ebrahimi    a
3958*22dc650dSSadaf EbrahimiNo match
3959*22dc650dSSadaf Ebrahimi
3960*22dc650dSSadaf Ebrahimi/a\sb/
3961*22dc650dSSadaf Ebrahimi    a b
3962*22dc650dSSadaf Ebrahimi 0: a b
3963*22dc650dSSadaf Ebrahimi
3964*22dc650dSSadaf Ebrahimi/a\Sb/
3965*22dc650dSSadaf Ebrahimi    a-b
3966*22dc650dSSadaf Ebrahimi 0: a-b
3967*22dc650dSSadaf Ebrahimi\= Expect no match
3968*22dc650dSSadaf Ebrahimi    a b
3969*22dc650dSSadaf EbrahimiNo match
3970*22dc650dSSadaf Ebrahimi
3971*22dc650dSSadaf Ebrahimi/\d/
3972*22dc650dSSadaf Ebrahimi    1
3973*22dc650dSSadaf Ebrahimi 0: 1
3974*22dc650dSSadaf Ebrahimi
3975*22dc650dSSadaf Ebrahimi/\D/
3976*22dc650dSSadaf Ebrahimi    -
3977*22dc650dSSadaf Ebrahimi 0: -
3978*22dc650dSSadaf Ebrahimi\= Expect no match
3979*22dc650dSSadaf Ebrahimi    1
3980*22dc650dSSadaf EbrahimiNo match
3981*22dc650dSSadaf Ebrahimi
3982*22dc650dSSadaf Ebrahimi/[\w]/
3983*22dc650dSSadaf Ebrahimi    a
3984*22dc650dSSadaf Ebrahimi 0: a
3985*22dc650dSSadaf Ebrahimi
3986*22dc650dSSadaf Ebrahimi/[\W]/
3987*22dc650dSSadaf Ebrahimi    -
3988*22dc650dSSadaf Ebrahimi 0: -
3989*22dc650dSSadaf Ebrahimi\= Expect no match
3990*22dc650dSSadaf Ebrahimi    a
3991*22dc650dSSadaf EbrahimiNo match
3992*22dc650dSSadaf Ebrahimi
3993*22dc650dSSadaf Ebrahimi/a[\s]b/
3994*22dc650dSSadaf Ebrahimi    a b
3995*22dc650dSSadaf Ebrahimi 0: a b
3996*22dc650dSSadaf Ebrahimi
3997*22dc650dSSadaf Ebrahimi/a[\S]b/
3998*22dc650dSSadaf Ebrahimi    a-b
3999*22dc650dSSadaf Ebrahimi 0: a-b
4000*22dc650dSSadaf Ebrahimi\= Expect no match
4001*22dc650dSSadaf Ebrahimi    a b
4002*22dc650dSSadaf EbrahimiNo match
4003*22dc650dSSadaf Ebrahimi
4004*22dc650dSSadaf Ebrahimi/[\d]/
4005*22dc650dSSadaf Ebrahimi    1
4006*22dc650dSSadaf Ebrahimi 0: 1
4007*22dc650dSSadaf Ebrahimi
4008*22dc650dSSadaf Ebrahimi/[\D]/
4009*22dc650dSSadaf Ebrahimi    -
4010*22dc650dSSadaf Ebrahimi 0: -
4011*22dc650dSSadaf Ebrahimi\= Expect no match
4012*22dc650dSSadaf Ebrahimi    1
4013*22dc650dSSadaf EbrahimiNo match
4014*22dc650dSSadaf Ebrahimi
4015*22dc650dSSadaf Ebrahimi/ab|cd/
4016*22dc650dSSadaf Ebrahimi    abc
4017*22dc650dSSadaf Ebrahimi 0: ab
4018*22dc650dSSadaf Ebrahimi    abcd
4019*22dc650dSSadaf Ebrahimi 0: ab
4020*22dc650dSSadaf Ebrahimi
4021*22dc650dSSadaf Ebrahimi/()ef/
4022*22dc650dSSadaf Ebrahimi    def
4023*22dc650dSSadaf Ebrahimi 0: ef
4024*22dc650dSSadaf Ebrahimi 1:
4025*22dc650dSSadaf Ebrahimi
4026*22dc650dSSadaf Ebrahimi/$b/
4027*22dc650dSSadaf Ebrahimi
4028*22dc650dSSadaf Ebrahimi/a\(b/
4029*22dc650dSSadaf Ebrahimi    a(b
4030*22dc650dSSadaf Ebrahimi 0: a(b
4031*22dc650dSSadaf Ebrahimi
4032*22dc650dSSadaf Ebrahimi/a\(*b/
4033*22dc650dSSadaf Ebrahimi    ab
4034*22dc650dSSadaf Ebrahimi 0: ab
4035*22dc650dSSadaf Ebrahimi    a((b
4036*22dc650dSSadaf Ebrahimi 0: a((b
4037*22dc650dSSadaf Ebrahimi
4038*22dc650dSSadaf Ebrahimi/a\\b/
4039*22dc650dSSadaf Ebrahimi    a\\b
4040*22dc650dSSadaf Ebrahimi 0: a\b
4041*22dc650dSSadaf Ebrahimi
4042*22dc650dSSadaf Ebrahimi/((a))/
4043*22dc650dSSadaf Ebrahimi    abc
4044*22dc650dSSadaf Ebrahimi 0: a
4045*22dc650dSSadaf Ebrahimi 1: a
4046*22dc650dSSadaf Ebrahimi 2: a
4047*22dc650dSSadaf Ebrahimi
4048*22dc650dSSadaf Ebrahimi/(a)b(c)/
4049*22dc650dSSadaf Ebrahimi    abc
4050*22dc650dSSadaf Ebrahimi 0: abc
4051*22dc650dSSadaf Ebrahimi 1: a
4052*22dc650dSSadaf Ebrahimi 2: c
4053*22dc650dSSadaf Ebrahimi
4054*22dc650dSSadaf Ebrahimi/a+b+c/
4055*22dc650dSSadaf Ebrahimi    aabbabc
4056*22dc650dSSadaf Ebrahimi 0: abc
4057*22dc650dSSadaf Ebrahimi
4058*22dc650dSSadaf Ebrahimi/a{1,}b{1,}c/
4059*22dc650dSSadaf Ebrahimi    aabbabc
4060*22dc650dSSadaf Ebrahimi 0: abc
4061*22dc650dSSadaf Ebrahimi
4062*22dc650dSSadaf Ebrahimi/a.+?c/
4063*22dc650dSSadaf Ebrahimi    abcabc
4064*22dc650dSSadaf Ebrahimi 0: abc
4065*22dc650dSSadaf Ebrahimi
4066*22dc650dSSadaf Ebrahimi/(a+|b)*/
4067*22dc650dSSadaf Ebrahimi    ab
4068*22dc650dSSadaf Ebrahimi 0: ab
4069*22dc650dSSadaf Ebrahimi 1: b
4070*22dc650dSSadaf Ebrahimi
4071*22dc650dSSadaf Ebrahimi/(a+|b){0,}/
4072*22dc650dSSadaf Ebrahimi    ab
4073*22dc650dSSadaf Ebrahimi 0: ab
4074*22dc650dSSadaf Ebrahimi 1: b
4075*22dc650dSSadaf Ebrahimi
4076*22dc650dSSadaf Ebrahimi/(a+|b)+/
4077*22dc650dSSadaf Ebrahimi    ab
4078*22dc650dSSadaf Ebrahimi 0: ab
4079*22dc650dSSadaf Ebrahimi 1: b
4080*22dc650dSSadaf Ebrahimi
4081*22dc650dSSadaf Ebrahimi/(a+|b){1,}/
4082*22dc650dSSadaf Ebrahimi    ab
4083*22dc650dSSadaf Ebrahimi 0: ab
4084*22dc650dSSadaf Ebrahimi 1: b
4085*22dc650dSSadaf Ebrahimi
4086*22dc650dSSadaf Ebrahimi/(a+|b)?/
4087*22dc650dSSadaf Ebrahimi    ab
4088*22dc650dSSadaf Ebrahimi 0: a
4089*22dc650dSSadaf Ebrahimi 1: a
4090*22dc650dSSadaf Ebrahimi
4091*22dc650dSSadaf Ebrahimi/(a+|b){0,1}/
4092*22dc650dSSadaf Ebrahimi    ab
4093*22dc650dSSadaf Ebrahimi 0: a
4094*22dc650dSSadaf Ebrahimi 1: a
4095*22dc650dSSadaf Ebrahimi
4096*22dc650dSSadaf Ebrahimi/[^ab]*/
4097*22dc650dSSadaf Ebrahimi    cde
4098*22dc650dSSadaf Ebrahimi 0: cde
4099*22dc650dSSadaf Ebrahimi
4100*22dc650dSSadaf Ebrahimi/abc/
4101*22dc650dSSadaf Ebrahimi\= Expect no match
4102*22dc650dSSadaf Ebrahimi    b
4103*22dc650dSSadaf EbrahimiNo match
4104*22dc650dSSadaf Ebrahimi
4105*22dc650dSSadaf Ebrahimi/a*/
4106*22dc650dSSadaf Ebrahimi    \
4107*22dc650dSSadaf Ebrahimi 0:
4108*22dc650dSSadaf Ebrahimi
4109*22dc650dSSadaf Ebrahimi/([abc])*d/
4110*22dc650dSSadaf Ebrahimi    abbbcd
4111*22dc650dSSadaf Ebrahimi 0: abbbcd
4112*22dc650dSSadaf Ebrahimi 1: c
4113*22dc650dSSadaf Ebrahimi
4114*22dc650dSSadaf Ebrahimi/([abc])*bcd/
4115*22dc650dSSadaf Ebrahimi    abcd
4116*22dc650dSSadaf Ebrahimi 0: abcd
4117*22dc650dSSadaf Ebrahimi 1: a
4118*22dc650dSSadaf Ebrahimi
4119*22dc650dSSadaf Ebrahimi/a|b|c|d|e/
4120*22dc650dSSadaf Ebrahimi    e
4121*22dc650dSSadaf Ebrahimi 0: e
4122*22dc650dSSadaf Ebrahimi
4123*22dc650dSSadaf Ebrahimi/(a|b|c|d|e)f/
4124*22dc650dSSadaf Ebrahimi    ef
4125*22dc650dSSadaf Ebrahimi 0: ef
4126*22dc650dSSadaf Ebrahimi 1: e
4127*22dc650dSSadaf Ebrahimi
4128*22dc650dSSadaf Ebrahimi/abcd*efg/
4129*22dc650dSSadaf Ebrahimi    abcdefg
4130*22dc650dSSadaf Ebrahimi 0: abcdefg
4131*22dc650dSSadaf Ebrahimi
4132*22dc650dSSadaf Ebrahimi/ab*/
4133*22dc650dSSadaf Ebrahimi    xabyabbbz
4134*22dc650dSSadaf Ebrahimi 0: ab
4135*22dc650dSSadaf Ebrahimi    xayabbbz
4136*22dc650dSSadaf Ebrahimi 0: a
4137*22dc650dSSadaf Ebrahimi
4138*22dc650dSSadaf Ebrahimi/(ab|cd)e/
4139*22dc650dSSadaf Ebrahimi    abcde
4140*22dc650dSSadaf Ebrahimi 0: cde
4141*22dc650dSSadaf Ebrahimi 1: cd
4142*22dc650dSSadaf Ebrahimi
4143*22dc650dSSadaf Ebrahimi/[abhgefdc]ij/
4144*22dc650dSSadaf Ebrahimi    hij
4145*22dc650dSSadaf Ebrahimi 0: hij
4146*22dc650dSSadaf Ebrahimi
4147*22dc650dSSadaf Ebrahimi/^(ab|cd)e/
4148*22dc650dSSadaf Ebrahimi
4149*22dc650dSSadaf Ebrahimi/(abc|)ef/
4150*22dc650dSSadaf Ebrahimi    abcdef
4151*22dc650dSSadaf Ebrahimi 0: ef
4152*22dc650dSSadaf Ebrahimi 1:
4153*22dc650dSSadaf Ebrahimi
4154*22dc650dSSadaf Ebrahimi/(a|b)c*d/
4155*22dc650dSSadaf Ebrahimi    abcd
4156*22dc650dSSadaf Ebrahimi 0: bcd
4157*22dc650dSSadaf Ebrahimi 1: b
4158*22dc650dSSadaf Ebrahimi
4159*22dc650dSSadaf Ebrahimi/(ab|ab*)bc/
4160*22dc650dSSadaf Ebrahimi    abc
4161*22dc650dSSadaf Ebrahimi 0: abc
4162*22dc650dSSadaf Ebrahimi 1: a
4163*22dc650dSSadaf Ebrahimi
4164*22dc650dSSadaf Ebrahimi/a([bc]*)c*/
4165*22dc650dSSadaf Ebrahimi    abc
4166*22dc650dSSadaf Ebrahimi 0: abc
4167*22dc650dSSadaf Ebrahimi 1: bc
4168*22dc650dSSadaf Ebrahimi
4169*22dc650dSSadaf Ebrahimi/a([bc]*)(c*d)/
4170*22dc650dSSadaf Ebrahimi    abcd
4171*22dc650dSSadaf Ebrahimi 0: abcd
4172*22dc650dSSadaf Ebrahimi 1: bc
4173*22dc650dSSadaf Ebrahimi 2: d
4174*22dc650dSSadaf Ebrahimi
4175*22dc650dSSadaf Ebrahimi/a([bc]+)(c*d)/
4176*22dc650dSSadaf Ebrahimi    abcd
4177*22dc650dSSadaf Ebrahimi 0: abcd
4178*22dc650dSSadaf Ebrahimi 1: bc
4179*22dc650dSSadaf Ebrahimi 2: d
4180*22dc650dSSadaf Ebrahimi
4181*22dc650dSSadaf Ebrahimi/a([bc]*)(c+d)/
4182*22dc650dSSadaf Ebrahimi    abcd
4183*22dc650dSSadaf Ebrahimi 0: abcd
4184*22dc650dSSadaf Ebrahimi 1: b
4185*22dc650dSSadaf Ebrahimi 2: cd
4186*22dc650dSSadaf Ebrahimi
4187*22dc650dSSadaf Ebrahimi/a[bcd]*dcdcde/
4188*22dc650dSSadaf Ebrahimi    adcdcde
4189*22dc650dSSadaf Ebrahimi 0: adcdcde
4190*22dc650dSSadaf Ebrahimi
4191*22dc650dSSadaf Ebrahimi/a[bcd]+dcdcde/
4192*22dc650dSSadaf Ebrahimi\= Expect no match
4193*22dc650dSSadaf Ebrahimi    abcde
4194*22dc650dSSadaf EbrahimiNo match
4195*22dc650dSSadaf Ebrahimi    adcdcde
4196*22dc650dSSadaf EbrahimiNo match
4197*22dc650dSSadaf Ebrahimi
4198*22dc650dSSadaf Ebrahimi/(ab|a)b*c/
4199*22dc650dSSadaf Ebrahimi    abc
4200*22dc650dSSadaf Ebrahimi 0: abc
4201*22dc650dSSadaf Ebrahimi 1: ab
4202*22dc650dSSadaf Ebrahimi
4203*22dc650dSSadaf Ebrahimi/((a)(b)c)(d)/
4204*22dc650dSSadaf Ebrahimi    abcd
4205*22dc650dSSadaf Ebrahimi 0: abcd
4206*22dc650dSSadaf Ebrahimi 1: abc
4207*22dc650dSSadaf Ebrahimi 2: a
4208*22dc650dSSadaf Ebrahimi 3: b
4209*22dc650dSSadaf Ebrahimi 4: d
4210*22dc650dSSadaf Ebrahimi
4211*22dc650dSSadaf Ebrahimi/[a-zA-Z_][a-zA-Z0-9_]*/
4212*22dc650dSSadaf Ebrahimi    alpha
4213*22dc650dSSadaf Ebrahimi 0: alpha
4214*22dc650dSSadaf Ebrahimi
4215*22dc650dSSadaf Ebrahimi/^a(bc+|b[eh])g|.h$/
4216*22dc650dSSadaf Ebrahimi    abh
4217*22dc650dSSadaf Ebrahimi 0: bh
4218*22dc650dSSadaf Ebrahimi
4219*22dc650dSSadaf Ebrahimi/(bc+d$|ef*g.|h?i(j|k))/
4220*22dc650dSSadaf Ebrahimi    effgz
4221*22dc650dSSadaf Ebrahimi 0: effgz
4222*22dc650dSSadaf Ebrahimi 1: effgz
4223*22dc650dSSadaf Ebrahimi    ij
4224*22dc650dSSadaf Ebrahimi 0: ij
4225*22dc650dSSadaf Ebrahimi 1: ij
4226*22dc650dSSadaf Ebrahimi 2: j
4227*22dc650dSSadaf Ebrahimi    reffgz
4228*22dc650dSSadaf Ebrahimi 0: effgz
4229*22dc650dSSadaf Ebrahimi 1: effgz
4230*22dc650dSSadaf Ebrahimi\= Expect no match
4231*22dc650dSSadaf Ebrahimi    effg
4232*22dc650dSSadaf EbrahimiNo match
4233*22dc650dSSadaf Ebrahimi    bcdd
4234*22dc650dSSadaf EbrahimiNo match
4235*22dc650dSSadaf Ebrahimi
4236*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))/
4237*22dc650dSSadaf Ebrahimi    a
4238*22dc650dSSadaf Ebrahimi 0: a
4239*22dc650dSSadaf Ebrahimi 1: a
4240*22dc650dSSadaf Ebrahimi 2: a
4241*22dc650dSSadaf Ebrahimi 3: a
4242*22dc650dSSadaf Ebrahimi 4: a
4243*22dc650dSSadaf Ebrahimi 5: a
4244*22dc650dSSadaf Ebrahimi 6: a
4245*22dc650dSSadaf Ebrahimi 7: a
4246*22dc650dSSadaf Ebrahimi 8: a
4247*22dc650dSSadaf Ebrahimi 9: a
4248*22dc650dSSadaf Ebrahimi10: a
4249*22dc650dSSadaf Ebrahimi
4250*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))\10/
4251*22dc650dSSadaf Ebrahimi    aa
4252*22dc650dSSadaf Ebrahimi 0: aa
4253*22dc650dSSadaf Ebrahimi 1: a
4254*22dc650dSSadaf Ebrahimi 2: a
4255*22dc650dSSadaf Ebrahimi 3: a
4256*22dc650dSSadaf Ebrahimi 4: a
4257*22dc650dSSadaf Ebrahimi 5: a
4258*22dc650dSSadaf Ebrahimi 6: a
4259*22dc650dSSadaf Ebrahimi 7: a
4260*22dc650dSSadaf Ebrahimi 8: a
4261*22dc650dSSadaf Ebrahimi 9: a
4262*22dc650dSSadaf Ebrahimi10: a
4263*22dc650dSSadaf Ebrahimi
4264*22dc650dSSadaf Ebrahimi/(((((((((a)))))))))/
4265*22dc650dSSadaf Ebrahimi    a
4266*22dc650dSSadaf Ebrahimi 0: a
4267*22dc650dSSadaf Ebrahimi 1: a
4268*22dc650dSSadaf Ebrahimi 2: a
4269*22dc650dSSadaf Ebrahimi 3: a
4270*22dc650dSSadaf Ebrahimi 4: a
4271*22dc650dSSadaf Ebrahimi 5: a
4272*22dc650dSSadaf Ebrahimi 6: a
4273*22dc650dSSadaf Ebrahimi 7: a
4274*22dc650dSSadaf Ebrahimi 8: a
4275*22dc650dSSadaf Ebrahimi 9: a
4276*22dc650dSSadaf Ebrahimi
4277*22dc650dSSadaf Ebrahimi/multiple words of text/
4278*22dc650dSSadaf Ebrahimi\= Expect no match
4279*22dc650dSSadaf Ebrahimi    aa
4280*22dc650dSSadaf EbrahimiNo match
4281*22dc650dSSadaf Ebrahimi    uh-uh
4282*22dc650dSSadaf EbrahimiNo match
4283*22dc650dSSadaf Ebrahimi
4284*22dc650dSSadaf Ebrahimi/multiple words/
4285*22dc650dSSadaf Ebrahimi    multiple words, yeah
4286*22dc650dSSadaf Ebrahimi 0: multiple words
4287*22dc650dSSadaf Ebrahimi
4288*22dc650dSSadaf Ebrahimi/(.*)c(.*)/
4289*22dc650dSSadaf Ebrahimi    abcde
4290*22dc650dSSadaf Ebrahimi 0: abcde
4291*22dc650dSSadaf Ebrahimi 1: ab
4292*22dc650dSSadaf Ebrahimi 2: de
4293*22dc650dSSadaf Ebrahimi
4294*22dc650dSSadaf Ebrahimi/\((.*), (.*)\)/
4295*22dc650dSSadaf Ebrahimi    (a, b)
4296*22dc650dSSadaf Ebrahimi 0: (a, b)
4297*22dc650dSSadaf Ebrahimi 1: a
4298*22dc650dSSadaf Ebrahimi 2: b
4299*22dc650dSSadaf Ebrahimi
4300*22dc650dSSadaf Ebrahimi/[k]/
4301*22dc650dSSadaf Ebrahimi
4302*22dc650dSSadaf Ebrahimi/abcd/
4303*22dc650dSSadaf Ebrahimi    abcd
4304*22dc650dSSadaf Ebrahimi 0: abcd
4305*22dc650dSSadaf Ebrahimi
4306*22dc650dSSadaf Ebrahimi/a(bc)d/
4307*22dc650dSSadaf Ebrahimi    abcd
4308*22dc650dSSadaf Ebrahimi 0: abcd
4309*22dc650dSSadaf Ebrahimi 1: bc
4310*22dc650dSSadaf Ebrahimi
4311*22dc650dSSadaf Ebrahimi/a[-]?c/
4312*22dc650dSSadaf Ebrahimi    ac
4313*22dc650dSSadaf Ebrahimi 0: ac
4314*22dc650dSSadaf Ebrahimi
4315*22dc650dSSadaf Ebrahimi/(abc)\1/
4316*22dc650dSSadaf Ebrahimi    abcabc
4317*22dc650dSSadaf Ebrahimi 0: abcabc
4318*22dc650dSSadaf Ebrahimi 1: abc
4319*22dc650dSSadaf Ebrahimi
4320*22dc650dSSadaf Ebrahimi/([a-c]*)\1/
4321*22dc650dSSadaf Ebrahimi    abcabc
4322*22dc650dSSadaf Ebrahimi 0: abcabc
4323*22dc650dSSadaf Ebrahimi 1: abc
4324*22dc650dSSadaf Ebrahimi
4325*22dc650dSSadaf Ebrahimi/(a)|\1/
4326*22dc650dSSadaf Ebrahimi    a
4327*22dc650dSSadaf Ebrahimi 0: a
4328*22dc650dSSadaf Ebrahimi 1: a
4329*22dc650dSSadaf Ebrahimi    ab
4330*22dc650dSSadaf Ebrahimi 0: a
4331*22dc650dSSadaf Ebrahimi 1: a
4332*22dc650dSSadaf Ebrahimi\= Expect no match
4333*22dc650dSSadaf Ebrahimi    x
4334*22dc650dSSadaf EbrahimiNo match
4335*22dc650dSSadaf Ebrahimi
4336*22dc650dSSadaf Ebrahimi/(([a-c])b*?\2)*/
4337*22dc650dSSadaf Ebrahimi    ababbbcbc
4338*22dc650dSSadaf Ebrahimi 0: ababb
4339*22dc650dSSadaf Ebrahimi 1: bb
4340*22dc650dSSadaf Ebrahimi 2: b
4341*22dc650dSSadaf Ebrahimi
4342*22dc650dSSadaf Ebrahimi/(([a-c])b*?\2){3}/
4343*22dc650dSSadaf Ebrahimi    ababbbcbc
4344*22dc650dSSadaf Ebrahimi 0: ababbbcbc
4345*22dc650dSSadaf Ebrahimi 1: cbc
4346*22dc650dSSadaf Ebrahimi 2: c
4347*22dc650dSSadaf Ebrahimi
4348*22dc650dSSadaf Ebrahimi/((\3|b)\2(a)x)+/
4349*22dc650dSSadaf Ebrahimi    aaaxabaxbaaxbbax
4350*22dc650dSSadaf Ebrahimi 0: bbax
4351*22dc650dSSadaf Ebrahimi 1: bbax
4352*22dc650dSSadaf Ebrahimi 2: b
4353*22dc650dSSadaf Ebrahimi 3: a
4354*22dc650dSSadaf Ebrahimi
4355*22dc650dSSadaf Ebrahimi/((\3|b)\2(a)){2,}/
4356*22dc650dSSadaf Ebrahimi    bbaababbabaaaaabbaaaabba
4357*22dc650dSSadaf Ebrahimi 0: bbaaaabba
4358*22dc650dSSadaf Ebrahimi 1: bba
4359*22dc650dSSadaf Ebrahimi 2: b
4360*22dc650dSSadaf Ebrahimi 3: a
4361*22dc650dSSadaf Ebrahimi
4362*22dc650dSSadaf Ebrahimi/abc/i
4363*22dc650dSSadaf Ebrahimi    ABC
4364*22dc650dSSadaf Ebrahimi 0: ABC
4365*22dc650dSSadaf Ebrahimi    XABCY
4366*22dc650dSSadaf Ebrahimi 0: ABC
4367*22dc650dSSadaf Ebrahimi    ABABC
4368*22dc650dSSadaf Ebrahimi 0: ABC
4369*22dc650dSSadaf Ebrahimi\= Expect no match
4370*22dc650dSSadaf Ebrahimi    aaxabxbaxbbx
4371*22dc650dSSadaf EbrahimiNo match
4372*22dc650dSSadaf Ebrahimi    XBC
4373*22dc650dSSadaf EbrahimiNo match
4374*22dc650dSSadaf Ebrahimi    AXC
4375*22dc650dSSadaf EbrahimiNo match
4376*22dc650dSSadaf Ebrahimi    ABX
4377*22dc650dSSadaf EbrahimiNo match
4378*22dc650dSSadaf Ebrahimi
4379*22dc650dSSadaf Ebrahimi/ab*c/i
4380*22dc650dSSadaf Ebrahimi    ABC
4381*22dc650dSSadaf Ebrahimi 0: ABC
4382*22dc650dSSadaf Ebrahimi
4383*22dc650dSSadaf Ebrahimi/ab*bc/i
4384*22dc650dSSadaf Ebrahimi    ABC
4385*22dc650dSSadaf Ebrahimi 0: ABC
4386*22dc650dSSadaf Ebrahimi    ABBC
4387*22dc650dSSadaf Ebrahimi 0: ABBC
4388*22dc650dSSadaf Ebrahimi
4389*22dc650dSSadaf Ebrahimi/ab*?bc/i
4390*22dc650dSSadaf Ebrahimi    ABBBBC
4391*22dc650dSSadaf Ebrahimi 0: ABBBBC
4392*22dc650dSSadaf Ebrahimi
4393*22dc650dSSadaf Ebrahimi/ab{0,}?bc/i
4394*22dc650dSSadaf Ebrahimi    ABBBBC
4395*22dc650dSSadaf Ebrahimi 0: ABBBBC
4396*22dc650dSSadaf Ebrahimi
4397*22dc650dSSadaf Ebrahimi/ab+?bc/i
4398*22dc650dSSadaf Ebrahimi    ABBC
4399*22dc650dSSadaf Ebrahimi 0: ABBC
4400*22dc650dSSadaf Ebrahimi
4401*22dc650dSSadaf Ebrahimi/ab+bc/i
4402*22dc650dSSadaf Ebrahimi\= Expect no match
4403*22dc650dSSadaf Ebrahimi    ABC
4404*22dc650dSSadaf EbrahimiNo match
4405*22dc650dSSadaf Ebrahimi    ABQ
4406*22dc650dSSadaf EbrahimiNo match
4407*22dc650dSSadaf Ebrahimi
4408*22dc650dSSadaf Ebrahimi/ab{1,}bc/i
4409*22dc650dSSadaf Ebrahimi
4410*22dc650dSSadaf Ebrahimi/ab+bc/i
4411*22dc650dSSadaf Ebrahimi    ABBBBC
4412*22dc650dSSadaf Ebrahimi 0: ABBBBC
4413*22dc650dSSadaf Ebrahimi
4414*22dc650dSSadaf Ebrahimi/ab{1,}?bc/i
4415*22dc650dSSadaf Ebrahimi    ABBBBC
4416*22dc650dSSadaf Ebrahimi 0: ABBBBC
4417*22dc650dSSadaf Ebrahimi
4418*22dc650dSSadaf Ebrahimi/ab{1,3}?bc/i
4419*22dc650dSSadaf Ebrahimi    ABBBBC
4420*22dc650dSSadaf Ebrahimi 0: ABBBBC
4421*22dc650dSSadaf Ebrahimi
4422*22dc650dSSadaf Ebrahimi/ab{3,4}?bc/i
4423*22dc650dSSadaf Ebrahimi    ABBBBC
4424*22dc650dSSadaf Ebrahimi 0: ABBBBC
4425*22dc650dSSadaf Ebrahimi
4426*22dc650dSSadaf Ebrahimi/ab{4,5}?bc/i
4427*22dc650dSSadaf Ebrahimi\= Expect no match
4428*22dc650dSSadaf Ebrahimi    ABQ
4429*22dc650dSSadaf EbrahimiNo match
4430*22dc650dSSadaf Ebrahimi    ABBBBC
4431*22dc650dSSadaf EbrahimiNo match
4432*22dc650dSSadaf Ebrahimi
4433*22dc650dSSadaf Ebrahimi/ab??bc/i
4434*22dc650dSSadaf Ebrahimi    ABBC
4435*22dc650dSSadaf Ebrahimi 0: ABBC
4436*22dc650dSSadaf Ebrahimi    ABC
4437*22dc650dSSadaf Ebrahimi 0: ABC
4438*22dc650dSSadaf Ebrahimi
4439*22dc650dSSadaf Ebrahimi/ab{0,1}?bc/i
4440*22dc650dSSadaf Ebrahimi    ABC
4441*22dc650dSSadaf Ebrahimi 0: ABC
4442*22dc650dSSadaf Ebrahimi
4443*22dc650dSSadaf Ebrahimi/ab??bc/i
4444*22dc650dSSadaf Ebrahimi
4445*22dc650dSSadaf Ebrahimi/ab??c/i
4446*22dc650dSSadaf Ebrahimi    ABC
4447*22dc650dSSadaf Ebrahimi 0: ABC
4448*22dc650dSSadaf Ebrahimi
4449*22dc650dSSadaf Ebrahimi/ab{0,1}?c/i
4450*22dc650dSSadaf Ebrahimi    ABC
4451*22dc650dSSadaf Ebrahimi 0: ABC
4452*22dc650dSSadaf Ebrahimi
4453*22dc650dSSadaf Ebrahimi/^abc$/i
4454*22dc650dSSadaf Ebrahimi    ABC
4455*22dc650dSSadaf Ebrahimi 0: ABC
4456*22dc650dSSadaf Ebrahimi\= Expect no match
4457*22dc650dSSadaf Ebrahimi    ABBBBC
4458*22dc650dSSadaf EbrahimiNo match
4459*22dc650dSSadaf Ebrahimi    ABCC
4460*22dc650dSSadaf EbrahimiNo match
4461*22dc650dSSadaf Ebrahimi
4462*22dc650dSSadaf Ebrahimi/^abc/i
4463*22dc650dSSadaf Ebrahimi    ABCC
4464*22dc650dSSadaf Ebrahimi 0: ABC
4465*22dc650dSSadaf Ebrahimi
4466*22dc650dSSadaf Ebrahimi/^abc$/i
4467*22dc650dSSadaf Ebrahimi
4468*22dc650dSSadaf Ebrahimi/abc$/i
4469*22dc650dSSadaf Ebrahimi    AABC
4470*22dc650dSSadaf Ebrahimi 0: ABC
4471*22dc650dSSadaf Ebrahimi
4472*22dc650dSSadaf Ebrahimi/^/i
4473*22dc650dSSadaf Ebrahimi    ABC
4474*22dc650dSSadaf Ebrahimi 0:
4475*22dc650dSSadaf Ebrahimi
4476*22dc650dSSadaf Ebrahimi/$/i
4477*22dc650dSSadaf Ebrahimi    ABC
4478*22dc650dSSadaf Ebrahimi 0:
4479*22dc650dSSadaf Ebrahimi
4480*22dc650dSSadaf Ebrahimi/a.c/i
4481*22dc650dSSadaf Ebrahimi    ABC
4482*22dc650dSSadaf Ebrahimi 0: ABC
4483*22dc650dSSadaf Ebrahimi    AXC
4484*22dc650dSSadaf Ebrahimi 0: AXC
4485*22dc650dSSadaf Ebrahimi
4486*22dc650dSSadaf Ebrahimi/a.*?c/i
4487*22dc650dSSadaf Ebrahimi    AXYZC
4488*22dc650dSSadaf Ebrahimi 0: AXYZC
4489*22dc650dSSadaf Ebrahimi
4490*22dc650dSSadaf Ebrahimi/a.*c/i
4491*22dc650dSSadaf Ebrahimi    AABC
4492*22dc650dSSadaf Ebrahimi 0: AABC
4493*22dc650dSSadaf Ebrahimi\= Expect no match
4494*22dc650dSSadaf Ebrahimi    AXYZD
4495*22dc650dSSadaf EbrahimiNo match
4496*22dc650dSSadaf Ebrahimi
4497*22dc650dSSadaf Ebrahimi/a[bc]d/i
4498*22dc650dSSadaf Ebrahimi    ABD
4499*22dc650dSSadaf Ebrahimi 0: ABD
4500*22dc650dSSadaf Ebrahimi
4501*22dc650dSSadaf Ebrahimi/a[b-d]e/i
4502*22dc650dSSadaf Ebrahimi    ACE
4503*22dc650dSSadaf Ebrahimi 0: ACE
4504*22dc650dSSadaf Ebrahimi\= Expect no match
4505*22dc650dSSadaf Ebrahimi    ABC
4506*22dc650dSSadaf EbrahimiNo match
4507*22dc650dSSadaf Ebrahimi    ABD
4508*22dc650dSSadaf EbrahimiNo match
4509*22dc650dSSadaf Ebrahimi
4510*22dc650dSSadaf Ebrahimi/a[b-d]/i
4511*22dc650dSSadaf Ebrahimi    AAC
4512*22dc650dSSadaf Ebrahimi 0: AC
4513*22dc650dSSadaf Ebrahimi
4514*22dc650dSSadaf Ebrahimi/a[-b]/i
4515*22dc650dSSadaf Ebrahimi    A-
4516*22dc650dSSadaf Ebrahimi 0: A-
4517*22dc650dSSadaf Ebrahimi
4518*22dc650dSSadaf Ebrahimi/a[b-]/i
4519*22dc650dSSadaf Ebrahimi    A-
4520*22dc650dSSadaf Ebrahimi 0: A-
4521*22dc650dSSadaf Ebrahimi
4522*22dc650dSSadaf Ebrahimi/a]/i
4523*22dc650dSSadaf Ebrahimi    A]
4524*22dc650dSSadaf Ebrahimi 0: A]
4525*22dc650dSSadaf Ebrahimi
4526*22dc650dSSadaf Ebrahimi/a[]]b/i
4527*22dc650dSSadaf Ebrahimi    A]B
4528*22dc650dSSadaf Ebrahimi 0: A]B
4529*22dc650dSSadaf Ebrahimi
4530*22dc650dSSadaf Ebrahimi/a[^bc]d/i
4531*22dc650dSSadaf Ebrahimi    AED
4532*22dc650dSSadaf Ebrahimi 0: AED
4533*22dc650dSSadaf Ebrahimi
4534*22dc650dSSadaf Ebrahimi/a[^-b]c/i
4535*22dc650dSSadaf Ebrahimi    ADC
4536*22dc650dSSadaf Ebrahimi 0: ADC
4537*22dc650dSSadaf Ebrahimi\= Expect no match
4538*22dc650dSSadaf Ebrahimi    ABD
4539*22dc650dSSadaf EbrahimiNo match
4540*22dc650dSSadaf Ebrahimi    A-C
4541*22dc650dSSadaf EbrahimiNo match
4542*22dc650dSSadaf Ebrahimi
4543*22dc650dSSadaf Ebrahimi/a[^]b]c/i
4544*22dc650dSSadaf Ebrahimi    ADC
4545*22dc650dSSadaf Ebrahimi 0: ADC
4546*22dc650dSSadaf Ebrahimi
4547*22dc650dSSadaf Ebrahimi/ab|cd/i
4548*22dc650dSSadaf Ebrahimi    ABC
4549*22dc650dSSadaf Ebrahimi 0: AB
4550*22dc650dSSadaf Ebrahimi    ABCD
4551*22dc650dSSadaf Ebrahimi 0: AB
4552*22dc650dSSadaf Ebrahimi
4553*22dc650dSSadaf Ebrahimi/()ef/i
4554*22dc650dSSadaf Ebrahimi    DEF
4555*22dc650dSSadaf Ebrahimi 0: EF
4556*22dc650dSSadaf Ebrahimi 1:
4557*22dc650dSSadaf Ebrahimi
4558*22dc650dSSadaf Ebrahimi/$b/i
4559*22dc650dSSadaf Ebrahimi\= Expect no match
4560*22dc650dSSadaf Ebrahimi    A]C
4561*22dc650dSSadaf EbrahimiNo match
4562*22dc650dSSadaf Ebrahimi    B
4563*22dc650dSSadaf EbrahimiNo match
4564*22dc650dSSadaf Ebrahimi
4565*22dc650dSSadaf Ebrahimi/a\(b/i
4566*22dc650dSSadaf Ebrahimi    A(B
4567*22dc650dSSadaf Ebrahimi 0: A(B
4568*22dc650dSSadaf Ebrahimi
4569*22dc650dSSadaf Ebrahimi/a\(*b/i
4570*22dc650dSSadaf Ebrahimi    AB
4571*22dc650dSSadaf Ebrahimi 0: AB
4572*22dc650dSSadaf Ebrahimi    A((B
4573*22dc650dSSadaf Ebrahimi 0: A((B
4574*22dc650dSSadaf Ebrahimi
4575*22dc650dSSadaf Ebrahimi/a\\b/i
4576*22dc650dSSadaf Ebrahimi    A\\b
4577*22dc650dSSadaf Ebrahimi 0: A\b
4578*22dc650dSSadaf Ebrahimi    a\\B
4579*22dc650dSSadaf Ebrahimi 0: a\B
4580*22dc650dSSadaf Ebrahimi
4581*22dc650dSSadaf Ebrahimi/((a))/i
4582*22dc650dSSadaf Ebrahimi    ABC
4583*22dc650dSSadaf Ebrahimi 0: A
4584*22dc650dSSadaf Ebrahimi 1: A
4585*22dc650dSSadaf Ebrahimi 2: A
4586*22dc650dSSadaf Ebrahimi
4587*22dc650dSSadaf Ebrahimi/(a)b(c)/i
4588*22dc650dSSadaf Ebrahimi    ABC
4589*22dc650dSSadaf Ebrahimi 0: ABC
4590*22dc650dSSadaf Ebrahimi 1: A
4591*22dc650dSSadaf Ebrahimi 2: C
4592*22dc650dSSadaf Ebrahimi
4593*22dc650dSSadaf Ebrahimi/a+b+c/i
4594*22dc650dSSadaf Ebrahimi    AABBABC
4595*22dc650dSSadaf Ebrahimi 0: ABC
4596*22dc650dSSadaf Ebrahimi
4597*22dc650dSSadaf Ebrahimi/a{1,}b{1,}c/i
4598*22dc650dSSadaf Ebrahimi    AABBABC
4599*22dc650dSSadaf Ebrahimi 0: ABC
4600*22dc650dSSadaf Ebrahimi
4601*22dc650dSSadaf Ebrahimi/a.+?c/i
4602*22dc650dSSadaf Ebrahimi    ABCABC
4603*22dc650dSSadaf Ebrahimi 0: ABC
4604*22dc650dSSadaf Ebrahimi
4605*22dc650dSSadaf Ebrahimi/a.*?c/i
4606*22dc650dSSadaf Ebrahimi    ABCABC
4607*22dc650dSSadaf Ebrahimi 0: ABC
4608*22dc650dSSadaf Ebrahimi
4609*22dc650dSSadaf Ebrahimi/a.{0,5}?c/i
4610*22dc650dSSadaf Ebrahimi    ABCABC
4611*22dc650dSSadaf Ebrahimi 0: ABC
4612*22dc650dSSadaf Ebrahimi
4613*22dc650dSSadaf Ebrahimi/(a+|b)*/i
4614*22dc650dSSadaf Ebrahimi    AB
4615*22dc650dSSadaf Ebrahimi 0: AB
4616*22dc650dSSadaf Ebrahimi 1: B
4617*22dc650dSSadaf Ebrahimi
4618*22dc650dSSadaf Ebrahimi/(a+|b){0,}/i
4619*22dc650dSSadaf Ebrahimi    AB
4620*22dc650dSSadaf Ebrahimi 0: AB
4621*22dc650dSSadaf Ebrahimi 1: B
4622*22dc650dSSadaf Ebrahimi
4623*22dc650dSSadaf Ebrahimi/(a+|b)+/i
4624*22dc650dSSadaf Ebrahimi    AB
4625*22dc650dSSadaf Ebrahimi 0: AB
4626*22dc650dSSadaf Ebrahimi 1: B
4627*22dc650dSSadaf Ebrahimi
4628*22dc650dSSadaf Ebrahimi/(a+|b){1,}/i
4629*22dc650dSSadaf Ebrahimi    AB
4630*22dc650dSSadaf Ebrahimi 0: AB
4631*22dc650dSSadaf Ebrahimi 1: B
4632*22dc650dSSadaf Ebrahimi
4633*22dc650dSSadaf Ebrahimi/(a+|b)?/i
4634*22dc650dSSadaf Ebrahimi    AB
4635*22dc650dSSadaf Ebrahimi 0: A
4636*22dc650dSSadaf Ebrahimi 1: A
4637*22dc650dSSadaf Ebrahimi
4638*22dc650dSSadaf Ebrahimi/(a+|b){0,1}/i
4639*22dc650dSSadaf Ebrahimi    AB
4640*22dc650dSSadaf Ebrahimi 0: A
4641*22dc650dSSadaf Ebrahimi 1: A
4642*22dc650dSSadaf Ebrahimi
4643*22dc650dSSadaf Ebrahimi/(a+|b){0,1}?/i
4644*22dc650dSSadaf Ebrahimi    AB
4645*22dc650dSSadaf Ebrahimi 0:
4646*22dc650dSSadaf Ebrahimi
4647*22dc650dSSadaf Ebrahimi/[^ab]*/i
4648*22dc650dSSadaf Ebrahimi    CDE
4649*22dc650dSSadaf Ebrahimi 0: CDE
4650*22dc650dSSadaf Ebrahimi
4651*22dc650dSSadaf Ebrahimi/([abc])*d/i
4652*22dc650dSSadaf Ebrahimi    ABBBCD
4653*22dc650dSSadaf Ebrahimi 0: ABBBCD
4654*22dc650dSSadaf Ebrahimi 1: C
4655*22dc650dSSadaf Ebrahimi
4656*22dc650dSSadaf Ebrahimi/([abc])*bcd/i
4657*22dc650dSSadaf Ebrahimi    ABCD
4658*22dc650dSSadaf Ebrahimi 0: ABCD
4659*22dc650dSSadaf Ebrahimi 1: A
4660*22dc650dSSadaf Ebrahimi
4661*22dc650dSSadaf Ebrahimi/a|b|c|d|e/i
4662*22dc650dSSadaf Ebrahimi    E
4663*22dc650dSSadaf Ebrahimi 0: E
4664*22dc650dSSadaf Ebrahimi
4665*22dc650dSSadaf Ebrahimi/(a|b|c|d|e)f/i
4666*22dc650dSSadaf Ebrahimi    EF
4667*22dc650dSSadaf Ebrahimi 0: EF
4668*22dc650dSSadaf Ebrahimi 1: E
4669*22dc650dSSadaf Ebrahimi
4670*22dc650dSSadaf Ebrahimi/abcd*efg/i
4671*22dc650dSSadaf Ebrahimi    ABCDEFG
4672*22dc650dSSadaf Ebrahimi 0: ABCDEFG
4673*22dc650dSSadaf Ebrahimi
4674*22dc650dSSadaf Ebrahimi/ab*/i
4675*22dc650dSSadaf Ebrahimi    XABYABBBZ
4676*22dc650dSSadaf Ebrahimi 0: AB
4677*22dc650dSSadaf Ebrahimi    XAYABBBZ
4678*22dc650dSSadaf Ebrahimi 0: A
4679*22dc650dSSadaf Ebrahimi
4680*22dc650dSSadaf Ebrahimi/(ab|cd)e/i
4681*22dc650dSSadaf Ebrahimi    ABCDE
4682*22dc650dSSadaf Ebrahimi 0: CDE
4683*22dc650dSSadaf Ebrahimi 1: CD
4684*22dc650dSSadaf Ebrahimi
4685*22dc650dSSadaf Ebrahimi/[abhgefdc]ij/i
4686*22dc650dSSadaf Ebrahimi    HIJ
4687*22dc650dSSadaf Ebrahimi 0: HIJ
4688*22dc650dSSadaf Ebrahimi
4689*22dc650dSSadaf Ebrahimi/^(ab|cd)e/i
4690*22dc650dSSadaf Ebrahimi\= Expect no match
4691*22dc650dSSadaf Ebrahimi    ABCDE
4692*22dc650dSSadaf EbrahimiNo match
4693*22dc650dSSadaf Ebrahimi
4694*22dc650dSSadaf Ebrahimi/(abc|)ef/i
4695*22dc650dSSadaf Ebrahimi    ABCDEF
4696*22dc650dSSadaf Ebrahimi 0: EF
4697*22dc650dSSadaf Ebrahimi 1:
4698*22dc650dSSadaf Ebrahimi
4699*22dc650dSSadaf Ebrahimi/(a|b)c*d/i
4700*22dc650dSSadaf Ebrahimi    ABCD
4701*22dc650dSSadaf Ebrahimi 0: BCD
4702*22dc650dSSadaf Ebrahimi 1: B
4703*22dc650dSSadaf Ebrahimi
4704*22dc650dSSadaf Ebrahimi/(ab|ab*)bc/i
4705*22dc650dSSadaf Ebrahimi    ABC
4706*22dc650dSSadaf Ebrahimi 0: ABC
4707*22dc650dSSadaf Ebrahimi 1: A
4708*22dc650dSSadaf Ebrahimi
4709*22dc650dSSadaf Ebrahimi/a([bc]*)c*/i
4710*22dc650dSSadaf Ebrahimi    ABC
4711*22dc650dSSadaf Ebrahimi 0: ABC
4712*22dc650dSSadaf Ebrahimi 1: BC
4713*22dc650dSSadaf Ebrahimi
4714*22dc650dSSadaf Ebrahimi/a([bc]*)(c*d)/i
4715*22dc650dSSadaf Ebrahimi    ABCD
4716*22dc650dSSadaf Ebrahimi 0: ABCD
4717*22dc650dSSadaf Ebrahimi 1: BC
4718*22dc650dSSadaf Ebrahimi 2: D
4719*22dc650dSSadaf Ebrahimi
4720*22dc650dSSadaf Ebrahimi/a([bc]+)(c*d)/i
4721*22dc650dSSadaf Ebrahimi    ABCD
4722*22dc650dSSadaf Ebrahimi 0: ABCD
4723*22dc650dSSadaf Ebrahimi 1: BC
4724*22dc650dSSadaf Ebrahimi 2: D
4725*22dc650dSSadaf Ebrahimi
4726*22dc650dSSadaf Ebrahimi/a([bc]*)(c+d)/i
4727*22dc650dSSadaf Ebrahimi    ABCD
4728*22dc650dSSadaf Ebrahimi 0: ABCD
4729*22dc650dSSadaf Ebrahimi 1: B
4730*22dc650dSSadaf Ebrahimi 2: CD
4731*22dc650dSSadaf Ebrahimi
4732*22dc650dSSadaf Ebrahimi/a[bcd]*dcdcde/i
4733*22dc650dSSadaf Ebrahimi    ADCDCDE
4734*22dc650dSSadaf Ebrahimi 0: ADCDCDE
4735*22dc650dSSadaf Ebrahimi
4736*22dc650dSSadaf Ebrahimi/a[bcd]+dcdcde/i
4737*22dc650dSSadaf Ebrahimi
4738*22dc650dSSadaf Ebrahimi/(ab|a)b*c/i
4739*22dc650dSSadaf Ebrahimi    ABC
4740*22dc650dSSadaf Ebrahimi 0: ABC
4741*22dc650dSSadaf Ebrahimi 1: AB
4742*22dc650dSSadaf Ebrahimi
4743*22dc650dSSadaf Ebrahimi/((a)(b)c)(d)/i
4744*22dc650dSSadaf Ebrahimi    ABCD
4745*22dc650dSSadaf Ebrahimi 0: ABCD
4746*22dc650dSSadaf Ebrahimi 1: ABC
4747*22dc650dSSadaf Ebrahimi 2: A
4748*22dc650dSSadaf Ebrahimi 3: B
4749*22dc650dSSadaf Ebrahimi 4: D
4750*22dc650dSSadaf Ebrahimi
4751*22dc650dSSadaf Ebrahimi/[a-zA-Z_][a-zA-Z0-9_]*/i
4752*22dc650dSSadaf Ebrahimi    ALPHA
4753*22dc650dSSadaf Ebrahimi 0: ALPHA
4754*22dc650dSSadaf Ebrahimi
4755*22dc650dSSadaf Ebrahimi/^a(bc+|b[eh])g|.h$/i
4756*22dc650dSSadaf Ebrahimi    ABH
4757*22dc650dSSadaf Ebrahimi 0: BH
4758*22dc650dSSadaf Ebrahimi
4759*22dc650dSSadaf Ebrahimi/(bc+d$|ef*g.|h?i(j|k))/i
4760*22dc650dSSadaf Ebrahimi    EFFGZ
4761*22dc650dSSadaf Ebrahimi 0: EFFGZ
4762*22dc650dSSadaf Ebrahimi 1: EFFGZ
4763*22dc650dSSadaf Ebrahimi    IJ
4764*22dc650dSSadaf Ebrahimi 0: IJ
4765*22dc650dSSadaf Ebrahimi 1: IJ
4766*22dc650dSSadaf Ebrahimi 2: J
4767*22dc650dSSadaf Ebrahimi    REFFGZ
4768*22dc650dSSadaf Ebrahimi 0: EFFGZ
4769*22dc650dSSadaf Ebrahimi 1: EFFGZ
4770*22dc650dSSadaf Ebrahimi\= Expect no match
4771*22dc650dSSadaf Ebrahimi    ADCDCDE
4772*22dc650dSSadaf EbrahimiNo match
4773*22dc650dSSadaf Ebrahimi    EFFG
4774*22dc650dSSadaf EbrahimiNo match
4775*22dc650dSSadaf Ebrahimi    BCDD
4776*22dc650dSSadaf EbrahimiNo match
4777*22dc650dSSadaf Ebrahimi
4778*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))/i
4779*22dc650dSSadaf Ebrahimi    A
4780*22dc650dSSadaf Ebrahimi 0: A
4781*22dc650dSSadaf Ebrahimi 1: A
4782*22dc650dSSadaf Ebrahimi 2: A
4783*22dc650dSSadaf Ebrahimi 3: A
4784*22dc650dSSadaf Ebrahimi 4: A
4785*22dc650dSSadaf Ebrahimi 5: A
4786*22dc650dSSadaf Ebrahimi 6: A
4787*22dc650dSSadaf Ebrahimi 7: A
4788*22dc650dSSadaf Ebrahimi 8: A
4789*22dc650dSSadaf Ebrahimi 9: A
4790*22dc650dSSadaf Ebrahimi10: A
4791*22dc650dSSadaf Ebrahimi
4792*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))\10/i
4793*22dc650dSSadaf Ebrahimi    AA
4794*22dc650dSSadaf Ebrahimi 0: AA
4795*22dc650dSSadaf Ebrahimi 1: A
4796*22dc650dSSadaf Ebrahimi 2: A
4797*22dc650dSSadaf Ebrahimi 3: A
4798*22dc650dSSadaf Ebrahimi 4: A
4799*22dc650dSSadaf Ebrahimi 5: A
4800*22dc650dSSadaf Ebrahimi 6: A
4801*22dc650dSSadaf Ebrahimi 7: A
4802*22dc650dSSadaf Ebrahimi 8: A
4803*22dc650dSSadaf Ebrahimi 9: A
4804*22dc650dSSadaf Ebrahimi10: A
4805*22dc650dSSadaf Ebrahimi
4806*22dc650dSSadaf Ebrahimi/(((((((((a)))))))))/i
4807*22dc650dSSadaf Ebrahimi    A
4808*22dc650dSSadaf Ebrahimi 0: A
4809*22dc650dSSadaf Ebrahimi 1: A
4810*22dc650dSSadaf Ebrahimi 2: A
4811*22dc650dSSadaf Ebrahimi 3: A
4812*22dc650dSSadaf Ebrahimi 4: A
4813*22dc650dSSadaf Ebrahimi 5: A
4814*22dc650dSSadaf Ebrahimi 6: A
4815*22dc650dSSadaf Ebrahimi 7: A
4816*22dc650dSSadaf Ebrahimi 8: A
4817*22dc650dSSadaf Ebrahimi 9: A
4818*22dc650dSSadaf Ebrahimi
4819*22dc650dSSadaf Ebrahimi/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
4820*22dc650dSSadaf Ebrahimi    A
4821*22dc650dSSadaf Ebrahimi 0: A
4822*22dc650dSSadaf Ebrahimi 1: A
4823*22dc650dSSadaf Ebrahimi
4824*22dc650dSSadaf Ebrahimi/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
4825*22dc650dSSadaf Ebrahimi    C
4826*22dc650dSSadaf Ebrahimi 0: C
4827*22dc650dSSadaf Ebrahimi 1: C
4828*22dc650dSSadaf Ebrahimi
4829*22dc650dSSadaf Ebrahimi/multiple words of text/i
4830*22dc650dSSadaf Ebrahimi\= Expect no match
4831*22dc650dSSadaf Ebrahimi    AA
4832*22dc650dSSadaf EbrahimiNo match
4833*22dc650dSSadaf Ebrahimi    UH-UH
4834*22dc650dSSadaf EbrahimiNo match
4835*22dc650dSSadaf Ebrahimi
4836*22dc650dSSadaf Ebrahimi/multiple words/i
4837*22dc650dSSadaf Ebrahimi    MULTIPLE WORDS, YEAH
4838*22dc650dSSadaf Ebrahimi 0: MULTIPLE WORDS
4839*22dc650dSSadaf Ebrahimi
4840*22dc650dSSadaf Ebrahimi/(.*)c(.*)/i
4841*22dc650dSSadaf Ebrahimi    ABCDE
4842*22dc650dSSadaf Ebrahimi 0: ABCDE
4843*22dc650dSSadaf Ebrahimi 1: AB
4844*22dc650dSSadaf Ebrahimi 2: DE
4845*22dc650dSSadaf Ebrahimi
4846*22dc650dSSadaf Ebrahimi/\((.*), (.*)\)/i
4847*22dc650dSSadaf Ebrahimi    (A, B)
4848*22dc650dSSadaf Ebrahimi 0: (A, B)
4849*22dc650dSSadaf Ebrahimi 1: A
4850*22dc650dSSadaf Ebrahimi 2: B
4851*22dc650dSSadaf Ebrahimi
4852*22dc650dSSadaf Ebrahimi/[k]/i
4853*22dc650dSSadaf Ebrahimi
4854*22dc650dSSadaf Ebrahimi/abcd/i
4855*22dc650dSSadaf Ebrahimi    ABCD
4856*22dc650dSSadaf Ebrahimi 0: ABCD
4857*22dc650dSSadaf Ebrahimi
4858*22dc650dSSadaf Ebrahimi/a(bc)d/i
4859*22dc650dSSadaf Ebrahimi    ABCD
4860*22dc650dSSadaf Ebrahimi 0: ABCD
4861*22dc650dSSadaf Ebrahimi 1: BC
4862*22dc650dSSadaf Ebrahimi
4863*22dc650dSSadaf Ebrahimi/a[-]?c/i
4864*22dc650dSSadaf Ebrahimi    AC
4865*22dc650dSSadaf Ebrahimi 0: AC
4866*22dc650dSSadaf Ebrahimi
4867*22dc650dSSadaf Ebrahimi/(abc)\1/i
4868*22dc650dSSadaf Ebrahimi    ABCABC
4869*22dc650dSSadaf Ebrahimi 0: ABCABC
4870*22dc650dSSadaf Ebrahimi 1: ABC
4871*22dc650dSSadaf Ebrahimi
4872*22dc650dSSadaf Ebrahimi/([a-c]*)\1/i
4873*22dc650dSSadaf Ebrahimi    ABCABC
4874*22dc650dSSadaf Ebrahimi 0: ABCABC
4875*22dc650dSSadaf Ebrahimi 1: ABC
4876*22dc650dSSadaf Ebrahimi
4877*22dc650dSSadaf Ebrahimi/a(?!b)./
4878*22dc650dSSadaf Ebrahimi    abad
4879*22dc650dSSadaf Ebrahimi 0: ad
4880*22dc650dSSadaf Ebrahimi
4881*22dc650dSSadaf Ebrahimi/a(?=d)./
4882*22dc650dSSadaf Ebrahimi    abad
4883*22dc650dSSadaf Ebrahimi 0: ad
4884*22dc650dSSadaf Ebrahimi
4885*22dc650dSSadaf Ebrahimi/a(?=c|d)./
4886*22dc650dSSadaf Ebrahimi    abad
4887*22dc650dSSadaf Ebrahimi 0: ad
4888*22dc650dSSadaf Ebrahimi
4889*22dc650dSSadaf Ebrahimi/a(?:b|c|d)(.)/
4890*22dc650dSSadaf Ebrahimi    ace
4891*22dc650dSSadaf Ebrahimi 0: ace
4892*22dc650dSSadaf Ebrahimi 1: e
4893*22dc650dSSadaf Ebrahimi
4894*22dc650dSSadaf Ebrahimi/a(?:b|c|d)*(.)/
4895*22dc650dSSadaf Ebrahimi    ace
4896*22dc650dSSadaf Ebrahimi 0: ace
4897*22dc650dSSadaf Ebrahimi 1: e
4898*22dc650dSSadaf Ebrahimi
4899*22dc650dSSadaf Ebrahimi/a(?:b|c|d)+?(.)/
4900*22dc650dSSadaf Ebrahimi    ace
4901*22dc650dSSadaf Ebrahimi 0: ace
4902*22dc650dSSadaf Ebrahimi 1: e
4903*22dc650dSSadaf Ebrahimi    acdbcdbe
4904*22dc650dSSadaf Ebrahimi 0: acd
4905*22dc650dSSadaf Ebrahimi 1: d
4906*22dc650dSSadaf Ebrahimi
4907*22dc650dSSadaf Ebrahimi/a(?:b|c|d)+(.)/
4908*22dc650dSSadaf Ebrahimi    acdbcdbe
4909*22dc650dSSadaf Ebrahimi 0: acdbcdbe
4910*22dc650dSSadaf Ebrahimi 1: e
4911*22dc650dSSadaf Ebrahimi
4912*22dc650dSSadaf Ebrahimi/a(?:b|c|d){2}(.)/
4913*22dc650dSSadaf Ebrahimi    acdbcdbe
4914*22dc650dSSadaf Ebrahimi 0: acdb
4915*22dc650dSSadaf Ebrahimi 1: b
4916*22dc650dSSadaf Ebrahimi
4917*22dc650dSSadaf Ebrahimi/a(?:b|c|d){4,5}(.)/
4918*22dc650dSSadaf Ebrahimi    acdbcdbe
4919*22dc650dSSadaf Ebrahimi 0: acdbcdb
4920*22dc650dSSadaf Ebrahimi 1: b
4921*22dc650dSSadaf Ebrahimi
4922*22dc650dSSadaf Ebrahimi/a(?:b|c|d){4,5}?(.)/
4923*22dc650dSSadaf Ebrahimi    acdbcdbe
4924*22dc650dSSadaf Ebrahimi 0: acdbcd
4925*22dc650dSSadaf Ebrahimi 1: d
4926*22dc650dSSadaf Ebrahimi
4927*22dc650dSSadaf Ebrahimi/a(?:b|c|d){6,7}(.)/
4928*22dc650dSSadaf Ebrahimi    acdbcdbe
4929*22dc650dSSadaf Ebrahimi 0: acdbcdbe
4930*22dc650dSSadaf Ebrahimi 1: e
4931*22dc650dSSadaf Ebrahimi
4932*22dc650dSSadaf Ebrahimi/a(?:b|c|d){6,7}?(.)/
4933*22dc650dSSadaf Ebrahimi    acdbcdbe
4934*22dc650dSSadaf Ebrahimi 0: acdbcdbe
4935*22dc650dSSadaf Ebrahimi 1: e
4936*22dc650dSSadaf Ebrahimi
4937*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,6}(.)/
4938*22dc650dSSadaf Ebrahimi    acdbcdbe
4939*22dc650dSSadaf Ebrahimi 0: acdbcdbe
4940*22dc650dSSadaf Ebrahimi 1: e
4941*22dc650dSSadaf Ebrahimi
4942*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,6}?(.)/
4943*22dc650dSSadaf Ebrahimi    acdbcdbe
4944*22dc650dSSadaf Ebrahimi 0: acdbcdb
4945*22dc650dSSadaf Ebrahimi 1: b
4946*22dc650dSSadaf Ebrahimi
4947*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,7}(.)/
4948*22dc650dSSadaf Ebrahimi    acdbcdbe
4949*22dc650dSSadaf Ebrahimi 0: acdbcdbe
4950*22dc650dSSadaf Ebrahimi 1: e
4951*22dc650dSSadaf Ebrahimi
4952*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,7}?(.)/
4953*22dc650dSSadaf Ebrahimi    acdbcdbe
4954*22dc650dSSadaf Ebrahimi 0: acdbcdb
4955*22dc650dSSadaf Ebrahimi 1: b
4956*22dc650dSSadaf Ebrahimi
4957*22dc650dSSadaf Ebrahimi/a(?:b|(c|e){1,2}?|d)+?(.)/
4958*22dc650dSSadaf Ebrahimi    ace
4959*22dc650dSSadaf Ebrahimi 0: ace
4960*22dc650dSSadaf Ebrahimi 1: c
4961*22dc650dSSadaf Ebrahimi 2: e
4962*22dc650dSSadaf Ebrahimi
4963*22dc650dSSadaf Ebrahimi/^(.+)?B/
4964*22dc650dSSadaf Ebrahimi    AB
4965*22dc650dSSadaf Ebrahimi 0: AB
4966*22dc650dSSadaf Ebrahimi 1: A
4967*22dc650dSSadaf Ebrahimi
4968*22dc650dSSadaf Ebrahimi/^([^a-z])|(\^)$/
4969*22dc650dSSadaf Ebrahimi    .
4970*22dc650dSSadaf Ebrahimi 0: .
4971*22dc650dSSadaf Ebrahimi 1: .
4972*22dc650dSSadaf Ebrahimi
4973*22dc650dSSadaf Ebrahimi/^[<>]&/
4974*22dc650dSSadaf Ebrahimi    <&OUT
4975*22dc650dSSadaf Ebrahimi 0: <&
4976*22dc650dSSadaf Ebrahimi
4977*22dc650dSSadaf Ebrahimi/^(a\1?){4}$/
4978*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
4979*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaa
4980*22dc650dSSadaf Ebrahimi 1: aaaa
4981*22dc650dSSadaf Ebrahimi\= Expect no match
4982*22dc650dSSadaf Ebrahimi    AB
4983*22dc650dSSadaf EbrahimiNo match
4984*22dc650dSSadaf Ebrahimi    aaaaaaaaa
4985*22dc650dSSadaf EbrahimiNo match
4986*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
4987*22dc650dSSadaf EbrahimiNo match
4988*22dc650dSSadaf Ebrahimi
4989*22dc650dSSadaf Ebrahimi/^(a(?(1)\1)){4}$/
4990*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
4991*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaa
4992*22dc650dSSadaf Ebrahimi 1: aaaa
4993*22dc650dSSadaf Ebrahimi\= Expect no match
4994*22dc650dSSadaf Ebrahimi    aaaaaaaaa
4995*22dc650dSSadaf EbrahimiNo match
4996*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
4997*22dc650dSSadaf EbrahimiNo match
4998*22dc650dSSadaf Ebrahimi
4999*22dc650dSSadaf Ebrahimi/(?<=a)b/
5000*22dc650dSSadaf Ebrahimi    ab
5001*22dc650dSSadaf Ebrahimi 0: b
5002*22dc650dSSadaf Ebrahimi\= Expect no match
5003*22dc650dSSadaf Ebrahimi    cb
5004*22dc650dSSadaf EbrahimiNo match
5005*22dc650dSSadaf Ebrahimi    b
5006*22dc650dSSadaf EbrahimiNo match
5007*22dc650dSSadaf Ebrahimi
5008*22dc650dSSadaf Ebrahimi/(?<!c)b/
5009*22dc650dSSadaf Ebrahimi    ab
5010*22dc650dSSadaf Ebrahimi 0: b
5011*22dc650dSSadaf Ebrahimi    b
5012*22dc650dSSadaf Ebrahimi 0: b
5013*22dc650dSSadaf Ebrahimi    b
5014*22dc650dSSadaf Ebrahimi 0: b
5015*22dc650dSSadaf Ebrahimi
5016*22dc650dSSadaf Ebrahimi/(?:..)*a/
5017*22dc650dSSadaf Ebrahimi    aba
5018*22dc650dSSadaf Ebrahimi 0: aba
5019*22dc650dSSadaf Ebrahimi
5020*22dc650dSSadaf Ebrahimi/(?:..)*?a/
5021*22dc650dSSadaf Ebrahimi    aba
5022*22dc650dSSadaf Ebrahimi 0: a
5023*22dc650dSSadaf Ebrahimi
5024*22dc650dSSadaf Ebrahimi/^(?:b|a(?=(.)))*\1/
5025*22dc650dSSadaf Ebrahimi    abc
5026*22dc650dSSadaf Ebrahimi 0: ab
5027*22dc650dSSadaf Ebrahimi 1: b
5028*22dc650dSSadaf Ebrahimi
5029*22dc650dSSadaf Ebrahimi/^(){3,5}/
5030*22dc650dSSadaf Ebrahimi    abc
5031*22dc650dSSadaf Ebrahimi 0:
5032*22dc650dSSadaf Ebrahimi 1:
5033*22dc650dSSadaf Ebrahimi
5034*22dc650dSSadaf Ebrahimi/^(a+)*ax/
5035*22dc650dSSadaf Ebrahimi    aax
5036*22dc650dSSadaf Ebrahimi 0: aax
5037*22dc650dSSadaf Ebrahimi 1: a
5038*22dc650dSSadaf Ebrahimi
5039*22dc650dSSadaf Ebrahimi/^((a|b)+)*ax/
5040*22dc650dSSadaf Ebrahimi    aax
5041*22dc650dSSadaf Ebrahimi 0: aax
5042*22dc650dSSadaf Ebrahimi 1: a
5043*22dc650dSSadaf Ebrahimi 2: a
5044*22dc650dSSadaf Ebrahimi
5045*22dc650dSSadaf Ebrahimi/^((a|bc)+)*ax/
5046*22dc650dSSadaf Ebrahimi    aax
5047*22dc650dSSadaf Ebrahimi 0: aax
5048*22dc650dSSadaf Ebrahimi 1: a
5049*22dc650dSSadaf Ebrahimi 2: a
5050*22dc650dSSadaf Ebrahimi
5051*22dc650dSSadaf Ebrahimi/(a|x)*ab/
5052*22dc650dSSadaf Ebrahimi    cab
5053*22dc650dSSadaf Ebrahimi 0: ab
5054*22dc650dSSadaf Ebrahimi
5055*22dc650dSSadaf Ebrahimi/(a)*ab/
5056*22dc650dSSadaf Ebrahimi    cab
5057*22dc650dSSadaf Ebrahimi 0: ab
5058*22dc650dSSadaf Ebrahimi
5059*22dc650dSSadaf Ebrahimi/(?:(?i)a)b/
5060*22dc650dSSadaf Ebrahimi    ab
5061*22dc650dSSadaf Ebrahimi 0: ab
5062*22dc650dSSadaf Ebrahimi
5063*22dc650dSSadaf Ebrahimi/((?i)a)b/
5064*22dc650dSSadaf Ebrahimi    ab
5065*22dc650dSSadaf Ebrahimi 0: ab
5066*22dc650dSSadaf Ebrahimi 1: a
5067*22dc650dSSadaf Ebrahimi
5068*22dc650dSSadaf Ebrahimi/(?:(?i)a)b/
5069*22dc650dSSadaf Ebrahimi    Ab
5070*22dc650dSSadaf Ebrahimi 0: Ab
5071*22dc650dSSadaf Ebrahimi
5072*22dc650dSSadaf Ebrahimi/((?i)a)b/
5073*22dc650dSSadaf Ebrahimi    Ab
5074*22dc650dSSadaf Ebrahimi 0: Ab
5075*22dc650dSSadaf Ebrahimi 1: A
5076*22dc650dSSadaf Ebrahimi
5077*22dc650dSSadaf Ebrahimi/(?:(?i)a)b/
5078*22dc650dSSadaf Ebrahimi\= Expect no match
5079*22dc650dSSadaf Ebrahimi    cb
5080*22dc650dSSadaf EbrahimiNo match
5081*22dc650dSSadaf Ebrahimi    aB
5082*22dc650dSSadaf EbrahimiNo match
5083*22dc650dSSadaf Ebrahimi
5084*22dc650dSSadaf Ebrahimi/((?i)a)b/
5085*22dc650dSSadaf Ebrahimi
5086*22dc650dSSadaf Ebrahimi/(?i:a)b/
5087*22dc650dSSadaf Ebrahimi    ab
5088*22dc650dSSadaf Ebrahimi 0: ab
5089*22dc650dSSadaf Ebrahimi
5090*22dc650dSSadaf Ebrahimi/((?i:a))b/
5091*22dc650dSSadaf Ebrahimi    ab
5092*22dc650dSSadaf Ebrahimi 0: ab
5093*22dc650dSSadaf Ebrahimi 1: a
5094*22dc650dSSadaf Ebrahimi
5095*22dc650dSSadaf Ebrahimi/(?i:a)b/
5096*22dc650dSSadaf Ebrahimi    Ab
5097*22dc650dSSadaf Ebrahimi 0: Ab
5098*22dc650dSSadaf Ebrahimi
5099*22dc650dSSadaf Ebrahimi/((?i:a))b/
5100*22dc650dSSadaf Ebrahimi    Ab
5101*22dc650dSSadaf Ebrahimi 0: Ab
5102*22dc650dSSadaf Ebrahimi 1: A
5103*22dc650dSSadaf Ebrahimi
5104*22dc650dSSadaf Ebrahimi/(?i:a)b/
5105*22dc650dSSadaf Ebrahimi\= Expect no match
5106*22dc650dSSadaf Ebrahimi    aB
5107*22dc650dSSadaf EbrahimiNo match
5108*22dc650dSSadaf Ebrahimi    aB
5109*22dc650dSSadaf EbrahimiNo match
5110*22dc650dSSadaf Ebrahimi
5111*22dc650dSSadaf Ebrahimi/((?i:a))b/
5112*22dc650dSSadaf Ebrahimi
5113*22dc650dSSadaf Ebrahimi/(?:(?-i)a)b/i
5114*22dc650dSSadaf Ebrahimi    ab
5115*22dc650dSSadaf Ebrahimi 0: ab
5116*22dc650dSSadaf Ebrahimi
5117*22dc650dSSadaf Ebrahimi/((?-i)a)b/i
5118*22dc650dSSadaf Ebrahimi    ab
5119*22dc650dSSadaf Ebrahimi 0: ab
5120*22dc650dSSadaf Ebrahimi 1: a
5121*22dc650dSSadaf Ebrahimi
5122*22dc650dSSadaf Ebrahimi/(?:(?-i)a)b/i
5123*22dc650dSSadaf Ebrahimi    aB
5124*22dc650dSSadaf Ebrahimi 0: aB
5125*22dc650dSSadaf Ebrahimi
5126*22dc650dSSadaf Ebrahimi/((?-i)a)b/i
5127*22dc650dSSadaf Ebrahimi    aB
5128*22dc650dSSadaf Ebrahimi 0: aB
5129*22dc650dSSadaf Ebrahimi 1: a
5130*22dc650dSSadaf Ebrahimi
5131*22dc650dSSadaf Ebrahimi/(?:(?-i)a)b/i
5132*22dc650dSSadaf Ebrahimi    aB
5133*22dc650dSSadaf Ebrahimi 0: aB
5134*22dc650dSSadaf Ebrahimi\= Expect no match
5135*22dc650dSSadaf Ebrahimi    Ab
5136*22dc650dSSadaf EbrahimiNo match
5137*22dc650dSSadaf Ebrahimi    AB
5138*22dc650dSSadaf EbrahimiNo match
5139*22dc650dSSadaf Ebrahimi
5140*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
5141*22dc650dSSadaf Ebrahimi    ab
5142*22dc650dSSadaf Ebrahimi 0: ab
5143*22dc650dSSadaf Ebrahimi
5144*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
5145*22dc650dSSadaf Ebrahimi    ab
5146*22dc650dSSadaf Ebrahimi 0: ab
5147*22dc650dSSadaf Ebrahimi 1: a
5148*22dc650dSSadaf Ebrahimi
5149*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
5150*22dc650dSSadaf Ebrahimi    aB
5151*22dc650dSSadaf Ebrahimi 0: aB
5152*22dc650dSSadaf Ebrahimi
5153*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
5154*22dc650dSSadaf Ebrahimi    aB
5155*22dc650dSSadaf Ebrahimi 0: aB
5156*22dc650dSSadaf Ebrahimi 1: a
5157*22dc650dSSadaf Ebrahimi
5158*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
5159*22dc650dSSadaf Ebrahimi\= Expect no match
5160*22dc650dSSadaf Ebrahimi    AB
5161*22dc650dSSadaf EbrahimiNo match
5162*22dc650dSSadaf Ebrahimi    Ab
5163*22dc650dSSadaf EbrahimiNo match
5164*22dc650dSSadaf Ebrahimi
5165*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
5166*22dc650dSSadaf Ebrahimi
5167*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
5168*22dc650dSSadaf Ebrahimi    aB
5169*22dc650dSSadaf Ebrahimi 0: aB
5170*22dc650dSSadaf Ebrahimi
5171*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
5172*22dc650dSSadaf Ebrahimi    aB
5173*22dc650dSSadaf Ebrahimi 0: aB
5174*22dc650dSSadaf Ebrahimi 1: a
5175*22dc650dSSadaf Ebrahimi
5176*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
5177*22dc650dSSadaf Ebrahimi\= Expect no match
5178*22dc650dSSadaf Ebrahimi    Ab
5179*22dc650dSSadaf EbrahimiNo match
5180*22dc650dSSadaf Ebrahimi    AB
5181*22dc650dSSadaf EbrahimiNo match
5182*22dc650dSSadaf Ebrahimi
5183*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
5184*22dc650dSSadaf Ebrahimi
5185*22dc650dSSadaf Ebrahimi/((?-i:a.))b/i
5186*22dc650dSSadaf Ebrahimi\= Expect no match
5187*22dc650dSSadaf Ebrahimi    AB
5188*22dc650dSSadaf EbrahimiNo match
5189*22dc650dSSadaf Ebrahimi    a\nB
5190*22dc650dSSadaf EbrahimiNo match
5191*22dc650dSSadaf Ebrahimi
5192*22dc650dSSadaf Ebrahimi/((?s-i:a.))b/i
5193*22dc650dSSadaf Ebrahimi    a\nB
5194*22dc650dSSadaf Ebrahimi 0: a\x0aB
5195*22dc650dSSadaf Ebrahimi 1: a\x0a
5196*22dc650dSSadaf Ebrahimi
5197*22dc650dSSadaf Ebrahimi/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
5198*22dc650dSSadaf Ebrahimi    cabbbb
5199*22dc650dSSadaf Ebrahimi 0: cabbbb
5200*22dc650dSSadaf Ebrahimi
5201*22dc650dSSadaf Ebrahimi/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
5202*22dc650dSSadaf Ebrahimi    caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5203*22dc650dSSadaf Ebrahimi 0: caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
5204*22dc650dSSadaf Ebrahimi
5205*22dc650dSSadaf Ebrahimi/(ab)\d\1/i
5206*22dc650dSSadaf Ebrahimi    Ab4ab
5207*22dc650dSSadaf Ebrahimi 0: Ab4ab
5208*22dc650dSSadaf Ebrahimi 1: Ab
5209*22dc650dSSadaf Ebrahimi    ab4Ab
5210*22dc650dSSadaf Ebrahimi 0: ab4Ab
5211*22dc650dSSadaf Ebrahimi 1: ab
5212*22dc650dSSadaf Ebrahimi
5213*22dc650dSSadaf Ebrahimi/foo\w*\d{4}baz/
5214*22dc650dSSadaf Ebrahimi    foobar1234baz
5215*22dc650dSSadaf Ebrahimi 0: foobar1234baz
5216*22dc650dSSadaf Ebrahimi
5217*22dc650dSSadaf Ebrahimi/x(~~)*(?:(?:F)?)?/
5218*22dc650dSSadaf Ebrahimi    x~~
5219*22dc650dSSadaf Ebrahimi 0: x~~
5220*22dc650dSSadaf Ebrahimi 1: ~~
5221*22dc650dSSadaf Ebrahimi
5222*22dc650dSSadaf Ebrahimi/^a(?#xxx){3}c/
5223*22dc650dSSadaf Ebrahimi    aaac
5224*22dc650dSSadaf Ebrahimi 0: aaac
5225*22dc650dSSadaf Ebrahimi
5226*22dc650dSSadaf Ebrahimi/^a (?#xxx) (?#yyy) {3}c/x
5227*22dc650dSSadaf Ebrahimi    aaac
5228*22dc650dSSadaf Ebrahimi 0: aaac
5229*22dc650dSSadaf Ebrahimi
5230*22dc650dSSadaf Ebrahimi/(?<![cd])b/
5231*22dc650dSSadaf Ebrahimi\= Expect no match
5232*22dc650dSSadaf Ebrahimi    B\nB
5233*22dc650dSSadaf EbrahimiNo match
5234*22dc650dSSadaf Ebrahimi    dbcb
5235*22dc650dSSadaf EbrahimiNo match
5236*22dc650dSSadaf Ebrahimi
5237*22dc650dSSadaf Ebrahimi/(?<![cd])[ab]/
5238*22dc650dSSadaf Ebrahimi    dbaacb
5239*22dc650dSSadaf Ebrahimi 0: a
5240*22dc650dSSadaf Ebrahimi
5241*22dc650dSSadaf Ebrahimi/(?<!(c|d))b/
5242*22dc650dSSadaf Ebrahimi
5243*22dc650dSSadaf Ebrahimi/(?<!(c|d))[ab]/
5244*22dc650dSSadaf Ebrahimi    dbaacb
5245*22dc650dSSadaf Ebrahimi 0: a
5246*22dc650dSSadaf Ebrahimi
5247*22dc650dSSadaf Ebrahimi/(?<!cd)[ab]/
5248*22dc650dSSadaf Ebrahimi    cdaccb
5249*22dc650dSSadaf Ebrahimi 0: b
5250*22dc650dSSadaf Ebrahimi
5251*22dc650dSSadaf Ebrahimi/^(?:a?b?)*$/
5252*22dc650dSSadaf Ebrahimi    \
5253*22dc650dSSadaf Ebrahimi 0:
5254*22dc650dSSadaf Ebrahimi    a
5255*22dc650dSSadaf Ebrahimi 0: a
5256*22dc650dSSadaf Ebrahimi    ab
5257*22dc650dSSadaf Ebrahimi 0: ab
5258*22dc650dSSadaf Ebrahimi    aaa
5259*22dc650dSSadaf Ebrahimi 0: aaa
5260*22dc650dSSadaf Ebrahimi\= Expect no match
5261*22dc650dSSadaf Ebrahimi    dbcb
5262*22dc650dSSadaf EbrahimiNo match
5263*22dc650dSSadaf Ebrahimi    a--
5264*22dc650dSSadaf EbrahimiNo match
5265*22dc650dSSadaf Ebrahimi    aa--
5266*22dc650dSSadaf EbrahimiNo match
5267*22dc650dSSadaf Ebrahimi
5268*22dc650dSSadaf Ebrahimi/((?s)^a(.))((?m)^b$)/
5269*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5270*22dc650dSSadaf Ebrahimi 0: a\x0ab
5271*22dc650dSSadaf Ebrahimi 1: a\x0a
5272*22dc650dSSadaf Ebrahimi 2: \x0a
5273*22dc650dSSadaf Ebrahimi 3: b
5274*22dc650dSSadaf Ebrahimi
5275*22dc650dSSadaf Ebrahimi/((?m)^b$)/
5276*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5277*22dc650dSSadaf Ebrahimi 0: b
5278*22dc650dSSadaf Ebrahimi 1: b
5279*22dc650dSSadaf Ebrahimi
5280*22dc650dSSadaf Ebrahimi/(?m)^b/
5281*22dc650dSSadaf Ebrahimi    a\nb\n
5282*22dc650dSSadaf Ebrahimi 0: b
5283*22dc650dSSadaf Ebrahimi
5284*22dc650dSSadaf Ebrahimi/(?m)^(b)/
5285*22dc650dSSadaf Ebrahimi    a\nb\n
5286*22dc650dSSadaf Ebrahimi 0: b
5287*22dc650dSSadaf Ebrahimi 1: b
5288*22dc650dSSadaf Ebrahimi
5289*22dc650dSSadaf Ebrahimi/((?m)^b)/
5290*22dc650dSSadaf Ebrahimi    a\nb\n
5291*22dc650dSSadaf Ebrahimi 0: b
5292*22dc650dSSadaf Ebrahimi 1: b
5293*22dc650dSSadaf Ebrahimi
5294*22dc650dSSadaf Ebrahimi/\n((?m)^b)/
5295*22dc650dSSadaf Ebrahimi    a\nb\n
5296*22dc650dSSadaf Ebrahimi 0: \x0ab
5297*22dc650dSSadaf Ebrahimi 1: b
5298*22dc650dSSadaf Ebrahimi
5299*22dc650dSSadaf Ebrahimi/((?s).)c(?!.)/
5300*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5301*22dc650dSSadaf Ebrahimi 0: \x0ac
5302*22dc650dSSadaf Ebrahimi 1: \x0a
5303*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5304*22dc650dSSadaf Ebrahimi 0: \x0ac
5305*22dc650dSSadaf Ebrahimi 1: \x0a
5306*22dc650dSSadaf Ebrahimi
5307*22dc650dSSadaf Ebrahimi/((?s)b.)c(?!.)/
5308*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5309*22dc650dSSadaf Ebrahimi 0: b\x0ac
5310*22dc650dSSadaf Ebrahimi 1: b\x0a
5311*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5312*22dc650dSSadaf Ebrahimi 0: b\x0ac
5313*22dc650dSSadaf Ebrahimi 1: b\x0a
5314*22dc650dSSadaf Ebrahimi
5315*22dc650dSSadaf Ebrahimi/^b/
5316*22dc650dSSadaf Ebrahimi
5317*22dc650dSSadaf Ebrahimi/()^b/
5318*22dc650dSSadaf Ebrahimi\= Expect no match
5319*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5320*22dc650dSSadaf EbrahimiNo match
5321*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5322*22dc650dSSadaf EbrahimiNo match
5323*22dc650dSSadaf Ebrahimi
5324*22dc650dSSadaf Ebrahimi/((?m)^b)/
5325*22dc650dSSadaf Ebrahimi    a\nb\nc\n
5326*22dc650dSSadaf Ebrahimi 0: b
5327*22dc650dSSadaf Ebrahimi 1: b
5328*22dc650dSSadaf Ebrahimi
5329*22dc650dSSadaf Ebrahimi/(x)?(?(1)a|b)/
5330*22dc650dSSadaf Ebrahimi\= Expect no match
5331*22dc650dSSadaf Ebrahimi    a
5332*22dc650dSSadaf EbrahimiNo match
5333*22dc650dSSadaf Ebrahimi    a
5334*22dc650dSSadaf EbrahimiNo match
5335*22dc650dSSadaf Ebrahimi
5336*22dc650dSSadaf Ebrahimi/(x)?(?(1)b|a)/
5337*22dc650dSSadaf Ebrahimi    a
5338*22dc650dSSadaf Ebrahimi 0: a
5339*22dc650dSSadaf Ebrahimi
5340*22dc650dSSadaf Ebrahimi/()?(?(1)b|a)/
5341*22dc650dSSadaf Ebrahimi    a
5342*22dc650dSSadaf Ebrahimi 0: a
5343*22dc650dSSadaf Ebrahimi
5344*22dc650dSSadaf Ebrahimi/()(?(1)b|a)/
5345*22dc650dSSadaf Ebrahimi
5346*22dc650dSSadaf Ebrahimi/()?(?(1)a|b)/
5347*22dc650dSSadaf Ebrahimi    a
5348*22dc650dSSadaf Ebrahimi 0: a
5349*22dc650dSSadaf Ebrahimi 1:
5350*22dc650dSSadaf Ebrahimi
5351*22dc650dSSadaf Ebrahimi/^(\()?blah(?(1)(\)))$/
5352*22dc650dSSadaf Ebrahimi    (blah)
5353*22dc650dSSadaf Ebrahimi 0: (blah)
5354*22dc650dSSadaf Ebrahimi 1: (
5355*22dc650dSSadaf Ebrahimi 2: )
5356*22dc650dSSadaf Ebrahimi    blah
5357*22dc650dSSadaf Ebrahimi 0: blah
5358*22dc650dSSadaf Ebrahimi\= Expect no match
5359*22dc650dSSadaf Ebrahimi    a
5360*22dc650dSSadaf EbrahimiNo match
5361*22dc650dSSadaf Ebrahimi    blah)
5362*22dc650dSSadaf EbrahimiNo match
5363*22dc650dSSadaf Ebrahimi    (blah
5364*22dc650dSSadaf EbrahimiNo match
5365*22dc650dSSadaf Ebrahimi
5366*22dc650dSSadaf Ebrahimi/^(\(+)?blah(?(1)(\)))$/
5367*22dc650dSSadaf Ebrahimi    (blah)
5368*22dc650dSSadaf Ebrahimi 0: (blah)
5369*22dc650dSSadaf Ebrahimi 1: (
5370*22dc650dSSadaf Ebrahimi 2: )
5371*22dc650dSSadaf Ebrahimi    blah
5372*22dc650dSSadaf Ebrahimi 0: blah
5373*22dc650dSSadaf Ebrahimi\= Expect no match
5374*22dc650dSSadaf Ebrahimi    blah)
5375*22dc650dSSadaf EbrahimiNo match
5376*22dc650dSSadaf Ebrahimi    (blah
5377*22dc650dSSadaf EbrahimiNo match
5378*22dc650dSSadaf Ebrahimi
5379*22dc650dSSadaf Ebrahimi/(?(?!a)a|b)/
5380*22dc650dSSadaf Ebrahimi
5381*22dc650dSSadaf Ebrahimi/(?(?!a)b|a)/
5382*22dc650dSSadaf Ebrahimi    a
5383*22dc650dSSadaf Ebrahimi 0: a
5384*22dc650dSSadaf Ebrahimi
5385*22dc650dSSadaf Ebrahimi/(?(?=a)b|a)/
5386*22dc650dSSadaf Ebrahimi\= Expect no match
5387*22dc650dSSadaf Ebrahimi    a
5388*22dc650dSSadaf EbrahimiNo match
5389*22dc650dSSadaf Ebrahimi    a
5390*22dc650dSSadaf EbrahimiNo match
5391*22dc650dSSadaf Ebrahimi
5392*22dc650dSSadaf Ebrahimi/(?(?=a)a|b)/
5393*22dc650dSSadaf Ebrahimi    a
5394*22dc650dSSadaf Ebrahimi 0: a
5395*22dc650dSSadaf Ebrahimi
5396*22dc650dSSadaf Ebrahimi/(?=(a+?))(\1ab)/
5397*22dc650dSSadaf Ebrahimi    aaab
5398*22dc650dSSadaf Ebrahimi 0: aab
5399*22dc650dSSadaf Ebrahimi 1: a
5400*22dc650dSSadaf Ebrahimi 2: aab
5401*22dc650dSSadaf Ebrahimi
5402*22dc650dSSadaf Ebrahimi/^(?=(a+?))\1ab/
5403*22dc650dSSadaf Ebrahimi
5404*22dc650dSSadaf Ebrahimi/(\w+:)+/
5405*22dc650dSSadaf Ebrahimi    one:
5406*22dc650dSSadaf Ebrahimi 0: one:
5407*22dc650dSSadaf Ebrahimi 1: one:
5408*22dc650dSSadaf Ebrahimi
5409*22dc650dSSadaf Ebrahimi/$(?<=^(a))/
5410*22dc650dSSadaf Ebrahimi    a
5411*22dc650dSSadaf Ebrahimi 0:
5412*22dc650dSSadaf Ebrahimi 1: a
5413*22dc650dSSadaf Ebrahimi
5414*22dc650dSSadaf Ebrahimi/(?=(a+?))(\1ab)/
5415*22dc650dSSadaf Ebrahimi    aaab
5416*22dc650dSSadaf Ebrahimi 0: aab
5417*22dc650dSSadaf Ebrahimi 1: a
5418*22dc650dSSadaf Ebrahimi 2: aab
5419*22dc650dSSadaf Ebrahimi
5420*22dc650dSSadaf Ebrahimi/^(?=(a+?))\1ab/
5421*22dc650dSSadaf Ebrahimi\= Expect no match
5422*22dc650dSSadaf Ebrahimi    aaab
5423*22dc650dSSadaf EbrahimiNo match
5424*22dc650dSSadaf Ebrahimi    aaab
5425*22dc650dSSadaf EbrahimiNo match
5426*22dc650dSSadaf Ebrahimi
5427*22dc650dSSadaf Ebrahimi/([\w:]+::)?(\w+)$/
5428*22dc650dSSadaf Ebrahimi    abcd
5429*22dc650dSSadaf Ebrahimi 0: abcd
5430*22dc650dSSadaf Ebrahimi 1: <unset>
5431*22dc650dSSadaf Ebrahimi 2: abcd
5432*22dc650dSSadaf Ebrahimi    xy:z:::abcd
5433*22dc650dSSadaf Ebrahimi 0: xy:z:::abcd
5434*22dc650dSSadaf Ebrahimi 1: xy:z:::
5435*22dc650dSSadaf Ebrahimi 2: abcd
5436*22dc650dSSadaf Ebrahimi
5437*22dc650dSSadaf Ebrahimi/^[^bcd]*(c+)/
5438*22dc650dSSadaf Ebrahimi    aexycd
5439*22dc650dSSadaf Ebrahimi 0: aexyc
5440*22dc650dSSadaf Ebrahimi 1: c
5441*22dc650dSSadaf Ebrahimi
5442*22dc650dSSadaf Ebrahimi/(a*)b+/
5443*22dc650dSSadaf Ebrahimi    caab
5444*22dc650dSSadaf Ebrahimi 0: aab
5445*22dc650dSSadaf Ebrahimi 1: aa
5446*22dc650dSSadaf Ebrahimi
5447*22dc650dSSadaf Ebrahimi/([\w:]+::)?(\w+)$/
5448*22dc650dSSadaf Ebrahimi    abcd
5449*22dc650dSSadaf Ebrahimi 0: abcd
5450*22dc650dSSadaf Ebrahimi 1: <unset>
5451*22dc650dSSadaf Ebrahimi 2: abcd
5452*22dc650dSSadaf Ebrahimi    xy:z:::abcd
5453*22dc650dSSadaf Ebrahimi 0: xy:z:::abcd
5454*22dc650dSSadaf Ebrahimi 1: xy:z:::
5455*22dc650dSSadaf Ebrahimi 2: abcd
5456*22dc650dSSadaf Ebrahimi\= Expect no match
5457*22dc650dSSadaf Ebrahimi    abcd:
5458*22dc650dSSadaf EbrahimiNo match
5459*22dc650dSSadaf Ebrahimi    abcd:
5460*22dc650dSSadaf EbrahimiNo match
5461*22dc650dSSadaf Ebrahimi
5462*22dc650dSSadaf Ebrahimi/^[^bcd]*(c+)/
5463*22dc650dSSadaf Ebrahimi    aexycd
5464*22dc650dSSadaf Ebrahimi 0: aexyc
5465*22dc650dSSadaf Ebrahimi 1: c
5466*22dc650dSSadaf Ebrahimi
5467*22dc650dSSadaf Ebrahimi/(>a+)ab/
5468*22dc650dSSadaf Ebrahimi
5469*22dc650dSSadaf Ebrahimi/(?>a+)b/
5470*22dc650dSSadaf Ebrahimi    aaab
5471*22dc650dSSadaf Ebrahimi 0: aaab
5472*22dc650dSSadaf Ebrahimi
5473*22dc650dSSadaf Ebrahimi/([[:]+)/
5474*22dc650dSSadaf Ebrahimi    a:[b]:
5475*22dc650dSSadaf Ebrahimi 0: :[
5476*22dc650dSSadaf Ebrahimi 1: :[
5477*22dc650dSSadaf Ebrahimi
5478*22dc650dSSadaf Ebrahimi/([[=]+)/
5479*22dc650dSSadaf Ebrahimi    a=[b]=
5480*22dc650dSSadaf Ebrahimi 0: =[
5481*22dc650dSSadaf Ebrahimi 1: =[
5482*22dc650dSSadaf Ebrahimi
5483*22dc650dSSadaf Ebrahimi/([[.]+)/
5484*22dc650dSSadaf Ebrahimi    a.[b].
5485*22dc650dSSadaf Ebrahimi 0: .[
5486*22dc650dSSadaf Ebrahimi 1: .[
5487*22dc650dSSadaf Ebrahimi
5488*22dc650dSSadaf Ebrahimi/((?>a+)b)/
5489*22dc650dSSadaf Ebrahimi    aaab
5490*22dc650dSSadaf Ebrahimi 0: aaab
5491*22dc650dSSadaf Ebrahimi 1: aaab
5492*22dc650dSSadaf Ebrahimi
5493*22dc650dSSadaf Ebrahimi/(?>(a+))b/
5494*22dc650dSSadaf Ebrahimi    aaab
5495*22dc650dSSadaf Ebrahimi 0: aaab
5496*22dc650dSSadaf Ebrahimi 1: aaa
5497*22dc650dSSadaf Ebrahimi
5498*22dc650dSSadaf Ebrahimi/((?>[^()]+)|\([^()]*\))+/
5499*22dc650dSSadaf Ebrahimi    ((abc(ade)ufh()()x
5500*22dc650dSSadaf Ebrahimi 0: abc(ade)ufh()()x
5501*22dc650dSSadaf Ebrahimi 1: x
5502*22dc650dSSadaf Ebrahimi
5503*22dc650dSSadaf Ebrahimi/a\Z/
5504*22dc650dSSadaf Ebrahimi\= Expect no match
5505*22dc650dSSadaf Ebrahimi    aaab
5506*22dc650dSSadaf EbrahimiNo match
5507*22dc650dSSadaf Ebrahimi    a\nb\n
5508*22dc650dSSadaf EbrahimiNo match
5509*22dc650dSSadaf Ebrahimi
5510*22dc650dSSadaf Ebrahimi/b\Z/
5511*22dc650dSSadaf Ebrahimi    a\nb\n
5512*22dc650dSSadaf Ebrahimi 0: b
5513*22dc650dSSadaf Ebrahimi
5514*22dc650dSSadaf Ebrahimi/b\z/
5515*22dc650dSSadaf Ebrahimi
5516*22dc650dSSadaf Ebrahimi/b\Z/
5517*22dc650dSSadaf Ebrahimi    a\nb
5518*22dc650dSSadaf Ebrahimi 0: b
5519*22dc650dSSadaf Ebrahimi
5520*22dc650dSSadaf Ebrahimi/b\z/
5521*22dc650dSSadaf Ebrahimi    a\nb
5522*22dc650dSSadaf Ebrahimi 0: b
5523*22dc650dSSadaf Ebrahimi
5524*22dc650dSSadaf Ebrahimi/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
5525*22dc650dSSadaf Ebrahimi    a
5526*22dc650dSSadaf Ebrahimi 0: a
5527*22dc650dSSadaf Ebrahimi 1:
5528*22dc650dSSadaf Ebrahimi    abc
5529*22dc650dSSadaf Ebrahimi 0: abc
5530*22dc650dSSadaf Ebrahimi 1:
5531*22dc650dSSadaf Ebrahimi    a-b
5532*22dc650dSSadaf Ebrahimi 0: a-b
5533*22dc650dSSadaf Ebrahimi 1:
5534*22dc650dSSadaf Ebrahimi    0-9
5535*22dc650dSSadaf Ebrahimi 0: 0-9
5536*22dc650dSSadaf Ebrahimi 1:
5537*22dc650dSSadaf Ebrahimi    a.b
5538*22dc650dSSadaf Ebrahimi 0: a.b
5539*22dc650dSSadaf Ebrahimi 1:
5540*22dc650dSSadaf Ebrahimi    5.6.7
5541*22dc650dSSadaf Ebrahimi 0: 5.6.7
5542*22dc650dSSadaf Ebrahimi 1:
5543*22dc650dSSadaf Ebrahimi    the.quick.brown.fox
5544*22dc650dSSadaf Ebrahimi 0: the.quick.brown.fox
5545*22dc650dSSadaf Ebrahimi 1:
5546*22dc650dSSadaf Ebrahimi    a100.b200.300c
5547*22dc650dSSadaf Ebrahimi 0: a100.b200.300c
5548*22dc650dSSadaf Ebrahimi 1:
5549*22dc650dSSadaf Ebrahimi    12-ab.1245
5550*22dc650dSSadaf Ebrahimi 0: 12-ab.1245
5551*22dc650dSSadaf Ebrahimi 1:
5552*22dc650dSSadaf Ebrahimi\= Expect no match
5553*22dc650dSSadaf Ebrahimi    \
5554*22dc650dSSadaf EbrahimiNo match
5555*22dc650dSSadaf Ebrahimi    .a
5556*22dc650dSSadaf EbrahimiNo match
5557*22dc650dSSadaf Ebrahimi    -a
5558*22dc650dSSadaf EbrahimiNo match
5559*22dc650dSSadaf Ebrahimi    a-
5560*22dc650dSSadaf EbrahimiNo match
5561*22dc650dSSadaf Ebrahimi    a.
5562*22dc650dSSadaf EbrahimiNo match
5563*22dc650dSSadaf Ebrahimi    a_b
5564*22dc650dSSadaf EbrahimiNo match
5565*22dc650dSSadaf Ebrahimi    a.-
5566*22dc650dSSadaf EbrahimiNo match
5567*22dc650dSSadaf Ebrahimi    a..
5568*22dc650dSSadaf EbrahimiNo match
5569*22dc650dSSadaf Ebrahimi    ab..bc
5570*22dc650dSSadaf EbrahimiNo match
5571*22dc650dSSadaf Ebrahimi    the.quick.brown.fox-
5572*22dc650dSSadaf EbrahimiNo match
5573*22dc650dSSadaf Ebrahimi    the.quick.brown.fox.
5574*22dc650dSSadaf EbrahimiNo match
5575*22dc650dSSadaf Ebrahimi    the.quick.brown.fox_
5576*22dc650dSSadaf EbrahimiNo match
5577*22dc650dSSadaf Ebrahimi    the.quick.brown.fox+
5578*22dc650dSSadaf EbrahimiNo match
5579*22dc650dSSadaf Ebrahimi
5580*22dc650dSSadaf Ebrahimi/(?>.*)(?<=(abcd|wxyz))/
5581*22dc650dSSadaf Ebrahimi    alphabetabcd
5582*22dc650dSSadaf Ebrahimi 0: alphabetabcd
5583*22dc650dSSadaf Ebrahimi 1: abcd
5584*22dc650dSSadaf Ebrahimi    endingwxyz
5585*22dc650dSSadaf Ebrahimi 0: endingwxyz
5586*22dc650dSSadaf Ebrahimi 1: wxyz
5587*22dc650dSSadaf Ebrahimi\= Expect no match
5588*22dc650dSSadaf Ebrahimi    a rather long string that doesn't end with one of them
5589*22dc650dSSadaf EbrahimiNo match
5590*22dc650dSSadaf Ebrahimi
5591*22dc650dSSadaf Ebrahimi/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
5592*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark otherword
5593*22dc650dSSadaf Ebrahimi 0: word cat dog elephant mussel cow horse canary baboon snake shark otherword
5594*22dc650dSSadaf Ebrahimi\= Expect no match
5595*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark
5596*22dc650dSSadaf EbrahimiNo match
5597*22dc650dSSadaf Ebrahimi
5598*22dc650dSSadaf Ebrahimi/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
5599*22dc650dSSadaf Ebrahimi\= Expect no match
5600*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark the quick brown fox and the lazy dog and several other words getting close to thirty by now I hope
5601*22dc650dSSadaf EbrahimiNo match
5602*22dc650dSSadaf Ebrahimi
5603*22dc650dSSadaf Ebrahimi/(?<=\d{3}(?!999))foo/
5604*22dc650dSSadaf Ebrahimi    999foo
5605*22dc650dSSadaf Ebrahimi 0: foo
5606*22dc650dSSadaf Ebrahimi    123999foo
5607*22dc650dSSadaf Ebrahimi 0: foo
5608*22dc650dSSadaf Ebrahimi\= Expect no match
5609*22dc650dSSadaf Ebrahimi    123abcfoo
5610*22dc650dSSadaf EbrahimiNo match
5611*22dc650dSSadaf Ebrahimi
5612*22dc650dSSadaf Ebrahimi/(?<=(?!...999)\d{3})foo/
5613*22dc650dSSadaf Ebrahimi    999foo
5614*22dc650dSSadaf Ebrahimi 0: foo
5615*22dc650dSSadaf Ebrahimi    123999foo
5616*22dc650dSSadaf Ebrahimi 0: foo
5617*22dc650dSSadaf Ebrahimi\= Expect no match
5618*22dc650dSSadaf Ebrahimi    123abcfoo
5619*22dc650dSSadaf EbrahimiNo match
5620*22dc650dSSadaf Ebrahimi
5621*22dc650dSSadaf Ebrahimi/(?<=\d{3}(?!999)...)foo/
5622*22dc650dSSadaf Ebrahimi    123abcfoo
5623*22dc650dSSadaf Ebrahimi 0: foo
5624*22dc650dSSadaf Ebrahimi    123456foo
5625*22dc650dSSadaf Ebrahimi 0: foo
5626*22dc650dSSadaf Ebrahimi\= Expect no match
5627*22dc650dSSadaf Ebrahimi    123999foo
5628*22dc650dSSadaf EbrahimiNo match
5629*22dc650dSSadaf Ebrahimi
5630*22dc650dSSadaf Ebrahimi/(?<=\d{3}...)(?<!999)foo/
5631*22dc650dSSadaf Ebrahimi    123abcfoo
5632*22dc650dSSadaf Ebrahimi 0: foo
5633*22dc650dSSadaf Ebrahimi    123456foo
5634*22dc650dSSadaf Ebrahimi 0: foo
5635*22dc650dSSadaf Ebrahimi\= Expect no match
5636*22dc650dSSadaf Ebrahimi    123999foo
5637*22dc650dSSadaf EbrahimiNo match
5638*22dc650dSSadaf Ebrahimi
5639*22dc650dSSadaf Ebrahimi/<a[\s]+href[\s]*=[\s]*          # find <a href=
5640*22dc650dSSadaf Ebrahimi ([\"\'])?                       # find single or double quote
5641*22dc650dSSadaf Ebrahimi (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
5642*22dc650dSSadaf Ebrahimi                                 # quote, otherwise match up to next space
5643*22dc650dSSadaf Ebrahimi/isx
5644*22dc650dSSadaf Ebrahimi    <a href=abcd xyz
5645*22dc650dSSadaf Ebrahimi 0: <a href=abcd
5646*22dc650dSSadaf Ebrahimi 1: <unset>
5647*22dc650dSSadaf Ebrahimi 2: <unset>
5648*22dc650dSSadaf Ebrahimi 3: abcd
5649*22dc650dSSadaf Ebrahimi    <a href=\"abcd xyz pqr\" cats
5650*22dc650dSSadaf Ebrahimi 0: <a href="abcd xyz pqr"
5651*22dc650dSSadaf Ebrahimi 1: "
5652*22dc650dSSadaf Ebrahimi 2: abcd xyz pqr
5653*22dc650dSSadaf Ebrahimi    <a href=\'abcd xyz pqr\' cats
5654*22dc650dSSadaf Ebrahimi 0: <a href='abcd xyz pqr'
5655*22dc650dSSadaf Ebrahimi 1: '
5656*22dc650dSSadaf Ebrahimi 2: abcd xyz pqr
5657*22dc650dSSadaf Ebrahimi
5658*22dc650dSSadaf Ebrahimi/<a\s+href\s*=\s*                # find <a href=
5659*22dc650dSSadaf Ebrahimi (["'])?                         # find single or double quote
5660*22dc650dSSadaf Ebrahimi (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
5661*22dc650dSSadaf Ebrahimi                                 # quote, otherwise match up to next space
5662*22dc650dSSadaf Ebrahimi/isx
5663*22dc650dSSadaf Ebrahimi    <a href=abcd xyz
5664*22dc650dSSadaf Ebrahimi 0: <a href=abcd
5665*22dc650dSSadaf Ebrahimi 1: <unset>
5666*22dc650dSSadaf Ebrahimi 2: <unset>
5667*22dc650dSSadaf Ebrahimi 3: abcd
5668*22dc650dSSadaf Ebrahimi    <a href=\"abcd xyz pqr\" cats
5669*22dc650dSSadaf Ebrahimi 0: <a href="abcd xyz pqr"
5670*22dc650dSSadaf Ebrahimi 1: "
5671*22dc650dSSadaf Ebrahimi 2: abcd xyz pqr
5672*22dc650dSSadaf Ebrahimi    <a href       =       \'abcd xyz pqr\' cats
5673*22dc650dSSadaf Ebrahimi 0: <a href       =       'abcd xyz pqr'
5674*22dc650dSSadaf Ebrahimi 1: '
5675*22dc650dSSadaf Ebrahimi 2: abcd xyz pqr
5676*22dc650dSSadaf Ebrahimi
5677*22dc650dSSadaf Ebrahimi/<a\s+href(?>\s*)=(?>\s*)        # find <a href=
5678*22dc650dSSadaf Ebrahimi (["'])?                         # find single or double quote
5679*22dc650dSSadaf Ebrahimi (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
5680*22dc650dSSadaf Ebrahimi                                 # quote, otherwise match up to next space
5681*22dc650dSSadaf Ebrahimi/isx
5682*22dc650dSSadaf Ebrahimi    <a href=abcd xyz
5683*22dc650dSSadaf Ebrahimi 0: <a href=abcd
5684*22dc650dSSadaf Ebrahimi 1: <unset>
5685*22dc650dSSadaf Ebrahimi 2: <unset>
5686*22dc650dSSadaf Ebrahimi 3: abcd
5687*22dc650dSSadaf Ebrahimi    <a href=\"abcd xyz pqr\" cats
5688*22dc650dSSadaf Ebrahimi 0: <a href="abcd xyz pqr"
5689*22dc650dSSadaf Ebrahimi 1: "
5690*22dc650dSSadaf Ebrahimi 2: abcd xyz pqr
5691*22dc650dSSadaf Ebrahimi    <a href       =       \'abcd xyz pqr\' cats
5692*22dc650dSSadaf Ebrahimi 0: <a href       =       'abcd xyz pqr'
5693*22dc650dSSadaf Ebrahimi 1: '
5694*22dc650dSSadaf Ebrahimi 2: abcd xyz pqr
5695*22dc650dSSadaf Ebrahimi
5696*22dc650dSSadaf Ebrahimi/(Z()|A)*/
5697*22dc650dSSadaf Ebrahimi    ZABCDEFG
5698*22dc650dSSadaf Ebrahimi 0: ZA
5699*22dc650dSSadaf Ebrahimi 1: A
5700*22dc650dSSadaf Ebrahimi 2:
5701*22dc650dSSadaf Ebrahimi
5702*22dc650dSSadaf Ebrahimi/(Z(())|A)*/
5703*22dc650dSSadaf Ebrahimi    ZABCDEFG
5704*22dc650dSSadaf Ebrahimi 0: ZA
5705*22dc650dSSadaf Ebrahimi 1: A
5706*22dc650dSSadaf Ebrahimi 2:
5707*22dc650dSSadaf Ebrahimi 3:
5708*22dc650dSSadaf Ebrahimi
5709*22dc650dSSadaf Ebrahimi/((?>Z)+|A)*/
5710*22dc650dSSadaf Ebrahimi    ZABCDEFG
5711*22dc650dSSadaf Ebrahimi 0: ZA
5712*22dc650dSSadaf Ebrahimi 1: A
5713*22dc650dSSadaf Ebrahimi
5714*22dc650dSSadaf Ebrahimi/((?>)+|A)*/
5715*22dc650dSSadaf Ebrahimi    ZABCDEFG
5716*22dc650dSSadaf Ebrahimi 0:
5717*22dc650dSSadaf Ebrahimi 1:
5718*22dc650dSSadaf Ebrahimi
5719*22dc650dSSadaf Ebrahimi/a*/g
5720*22dc650dSSadaf Ebrahimi    abbab
5721*22dc650dSSadaf Ebrahimi 0: a
5722*22dc650dSSadaf Ebrahimi 0:
5723*22dc650dSSadaf Ebrahimi 0:
5724*22dc650dSSadaf Ebrahimi 0: a
5725*22dc650dSSadaf Ebrahimi 0:
5726*22dc650dSSadaf Ebrahimi 0:
5727*22dc650dSSadaf Ebrahimi
5728*22dc650dSSadaf Ebrahimi/[[:space:]]+/
5729*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
5730*22dc650dSSadaf Ebrahimi 0:  \x09\x0a\x0c\x0d\x0b
5731*22dc650dSSadaf Ebrahimi
5732*22dc650dSSadaf Ebrahimi/[[:blank:]]+/
5733*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
5734*22dc650dSSadaf Ebrahimi 0:  \x09
5735*22dc650dSSadaf Ebrahimi
5736*22dc650dSSadaf Ebrahimi/[\s]+/
5737*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
5738*22dc650dSSadaf Ebrahimi 0:  \x09\x0a\x0c\x0d\x0b
5739*22dc650dSSadaf Ebrahimi
5740*22dc650dSSadaf Ebrahimi/\s+/
5741*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
5742*22dc650dSSadaf Ebrahimi 0:  \x09\x0a\x0c\x0d\x0b
5743*22dc650dSSadaf Ebrahimi
5744*22dc650dSSadaf Ebrahimi/ab/x
5745*22dc650dSSadaf Ebrahimi    ab
5746*22dc650dSSadaf Ebrahimi 0: ab
5747*22dc650dSSadaf Ebrahimi
5748*22dc650dSSadaf Ebrahimi/(?!\A)x/m
5749*22dc650dSSadaf Ebrahimi    a\nxb\n
5750*22dc650dSSadaf Ebrahimi 0: x
5751*22dc650dSSadaf Ebrahimi
5752*22dc650dSSadaf Ebrahimi/(?!^)x/m
5753*22dc650dSSadaf Ebrahimi\= Expect no match
5754*22dc650dSSadaf Ebrahimi    a\nxb\n
5755*22dc650dSSadaf EbrahimiNo match
5756*22dc650dSSadaf Ebrahimi
5757*22dc650dSSadaf Ebrahimi/abc\Qabc\Eabc/
5758*22dc650dSSadaf Ebrahimi    abcabcabc
5759*22dc650dSSadaf Ebrahimi 0: abcabcabc
5760*22dc650dSSadaf Ebrahimi
5761*22dc650dSSadaf Ebrahimi/abc\Q(*+|\Eabc/
5762*22dc650dSSadaf Ebrahimi    abc(*+|abc
5763*22dc650dSSadaf Ebrahimi 0: abc(*+|abc
5764*22dc650dSSadaf Ebrahimi
5765*22dc650dSSadaf Ebrahimi/   abc\Q abc\Eabc/x
5766*22dc650dSSadaf Ebrahimi    abc abcabc
5767*22dc650dSSadaf Ebrahimi 0: abc abcabc
5768*22dc650dSSadaf Ebrahimi\= Expect no match
5769*22dc650dSSadaf Ebrahimi    abcabcabc
5770*22dc650dSSadaf EbrahimiNo match
5771*22dc650dSSadaf Ebrahimi
5772*22dc650dSSadaf Ebrahimi/abc#comment
5773*22dc650dSSadaf Ebrahimi    \Q#not comment
5774*22dc650dSSadaf Ebrahimi    literal\E/x
5775*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
5776*22dc650dSSadaf Ebrahimi 0: abc#not comment\x0a    literal
5777*22dc650dSSadaf Ebrahimi
5778*22dc650dSSadaf Ebrahimi/abc#comment
5779*22dc650dSSadaf Ebrahimi    \Q#not comment
5780*22dc650dSSadaf Ebrahimi    literal/x
5781*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
5782*22dc650dSSadaf Ebrahimi 0: abc#not comment\x0a    literal
5783*22dc650dSSadaf Ebrahimi
5784*22dc650dSSadaf Ebrahimi/abc#comment
5785*22dc650dSSadaf Ebrahimi    \Q#not comment
5786*22dc650dSSadaf Ebrahimi    literal\E #more comment
5787*22dc650dSSadaf Ebrahimi    /x
5788*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
5789*22dc650dSSadaf Ebrahimi 0: abc#not comment\x0a    literal
5790*22dc650dSSadaf Ebrahimi
5791*22dc650dSSadaf Ebrahimi/abc#comment
5792*22dc650dSSadaf Ebrahimi    \Q#not comment
5793*22dc650dSSadaf Ebrahimi    literal\E #more comment/x
5794*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
5795*22dc650dSSadaf Ebrahimi 0: abc#not comment\x0a    literal
5796*22dc650dSSadaf Ebrahimi
5797*22dc650dSSadaf Ebrahimi/\Qabc\$xyz\E/
5798*22dc650dSSadaf Ebrahimi    abc\\\$xyz
5799*22dc650dSSadaf Ebrahimi 0: abc\$xyz
5800*22dc650dSSadaf Ebrahimi
5801*22dc650dSSadaf Ebrahimi/\Qabc\E\$\Qxyz\E/
5802*22dc650dSSadaf Ebrahimi    abc\$xyz
5803*22dc650dSSadaf Ebrahimi 0: abc$xyz
5804*22dc650dSSadaf Ebrahimi
5805*22dc650dSSadaf Ebrahimi/\Gabc/
5806*22dc650dSSadaf Ebrahimi    abc
5807*22dc650dSSadaf Ebrahimi 0: abc
5808*22dc650dSSadaf Ebrahimi\= Expect no match
5809*22dc650dSSadaf Ebrahimi    xyzabc
5810*22dc650dSSadaf EbrahimiNo match
5811*22dc650dSSadaf Ebrahimi
5812*22dc650dSSadaf Ebrahimi/\Gabc./g
5813*22dc650dSSadaf Ebrahimi    abc1abc2xyzabc3
5814*22dc650dSSadaf Ebrahimi 0: abc1
5815*22dc650dSSadaf Ebrahimi 0: abc2
5816*22dc650dSSadaf Ebrahimi
5817*22dc650dSSadaf Ebrahimi/abc./g
5818*22dc650dSSadaf Ebrahimi    abc1abc2xyzabc3
5819*22dc650dSSadaf Ebrahimi 0: abc1
5820*22dc650dSSadaf Ebrahimi 0: abc2
5821*22dc650dSSadaf Ebrahimi 0: abc3
5822*22dc650dSSadaf Ebrahimi
5823*22dc650dSSadaf Ebrahimi/a(?x: b c )d/
5824*22dc650dSSadaf Ebrahimi    XabcdY
5825*22dc650dSSadaf Ebrahimi 0: abcd
5826*22dc650dSSadaf Ebrahimi\= Expect no match
5827*22dc650dSSadaf Ebrahimi    Xa b c d Y
5828*22dc650dSSadaf EbrahimiNo match
5829*22dc650dSSadaf Ebrahimi
5830*22dc650dSSadaf Ebrahimi/((?x)x y z | a b c)/
5831*22dc650dSSadaf Ebrahimi    XabcY
5832*22dc650dSSadaf Ebrahimi 0: abc
5833*22dc650dSSadaf Ebrahimi 1: abc
5834*22dc650dSSadaf Ebrahimi    AxyzB
5835*22dc650dSSadaf Ebrahimi 0: xyz
5836*22dc650dSSadaf Ebrahimi 1: xyz
5837*22dc650dSSadaf Ebrahimi
5838*22dc650dSSadaf Ebrahimi/(?i)AB(?-i)C/
5839*22dc650dSSadaf Ebrahimi    XabCY
5840*22dc650dSSadaf Ebrahimi 0: abC
5841*22dc650dSSadaf Ebrahimi\= Expect no match
5842*22dc650dSSadaf Ebrahimi    XabcY
5843*22dc650dSSadaf EbrahimiNo match
5844*22dc650dSSadaf Ebrahimi
5845*22dc650dSSadaf Ebrahimi/((?i)AB(?-i)C|D)E/
5846*22dc650dSSadaf Ebrahimi    abCE
5847*22dc650dSSadaf Ebrahimi 0: abCE
5848*22dc650dSSadaf Ebrahimi 1: abC
5849*22dc650dSSadaf Ebrahimi    DE
5850*22dc650dSSadaf Ebrahimi 0: DE
5851*22dc650dSSadaf Ebrahimi 1: D
5852*22dc650dSSadaf Ebrahimi\= Expect no match
5853*22dc650dSSadaf Ebrahimi    abcE
5854*22dc650dSSadaf EbrahimiNo match
5855*22dc650dSSadaf Ebrahimi    abCe
5856*22dc650dSSadaf EbrahimiNo match
5857*22dc650dSSadaf Ebrahimi    dE
5858*22dc650dSSadaf EbrahimiNo match
5859*22dc650dSSadaf Ebrahimi    De
5860*22dc650dSSadaf EbrahimiNo match
5861*22dc650dSSadaf Ebrahimi
5862*22dc650dSSadaf Ebrahimi/(.*)\d+\1/
5863*22dc650dSSadaf Ebrahimi    abc123abc
5864*22dc650dSSadaf Ebrahimi 0: abc123abc
5865*22dc650dSSadaf Ebrahimi 1: abc
5866*22dc650dSSadaf Ebrahimi    abc123bc
5867*22dc650dSSadaf Ebrahimi 0: bc123bc
5868*22dc650dSSadaf Ebrahimi 1: bc
5869*22dc650dSSadaf Ebrahimi
5870*22dc650dSSadaf Ebrahimi/(.*)\d+\1/s
5871*22dc650dSSadaf Ebrahimi    abc123abc
5872*22dc650dSSadaf Ebrahimi 0: abc123abc
5873*22dc650dSSadaf Ebrahimi 1: abc
5874*22dc650dSSadaf Ebrahimi    abc123bc
5875*22dc650dSSadaf Ebrahimi 0: bc123bc
5876*22dc650dSSadaf Ebrahimi 1: bc
5877*22dc650dSSadaf Ebrahimi
5878*22dc650dSSadaf Ebrahimi/((.*))\d+\1/
5879*22dc650dSSadaf Ebrahimi    abc123abc
5880*22dc650dSSadaf Ebrahimi 0: abc123abc
5881*22dc650dSSadaf Ebrahimi 1: abc
5882*22dc650dSSadaf Ebrahimi 2: abc
5883*22dc650dSSadaf Ebrahimi    abc123bc
5884*22dc650dSSadaf Ebrahimi 0: bc123bc
5885*22dc650dSSadaf Ebrahimi 1: bc
5886*22dc650dSSadaf Ebrahimi 2: bc
5887*22dc650dSSadaf Ebrahimi
5888*22dc650dSSadaf Ebrahimi# This tests for an IPv6 address in the form where it can have up to
5889*22dc650dSSadaf Ebrahimi# eight components, one and only one of which is empty. This must be
5890*22dc650dSSadaf Ebrahimi# an internal component.
5891*22dc650dSSadaf Ebrahimi
5892*22dc650dSSadaf Ebrahimi/^(?!:)                       # colon disallowed at start
5893*22dc650dSSadaf Ebrahimi  (?:                         # start of item
5894*22dc650dSSadaf Ebrahimi    (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
5895*22dc650dSSadaf Ebrahimi    (?(1)0 | () ) )           # if null previously matched, fail; else null
5896*22dc650dSSadaf Ebrahimi    :                         # followed by colon
5897*22dc650dSSadaf Ebrahimi  ){1,7}                      # end item; 1-7 of them required
5898*22dc650dSSadaf Ebrahimi  [0-9a-f]{1,4} $             # final hex number at end of string
5899*22dc650dSSadaf Ebrahimi  (?(1)|.)                    # check that there was an empty component
5900*22dc650dSSadaf Ebrahimi  /ix
5901*22dc650dSSadaf Ebrahimi    a123::a123
5902*22dc650dSSadaf Ebrahimi 0: a123::a123
5903*22dc650dSSadaf Ebrahimi 1:
5904*22dc650dSSadaf Ebrahimi    a123:b342::abcd
5905*22dc650dSSadaf Ebrahimi 0: a123:b342::abcd
5906*22dc650dSSadaf Ebrahimi 1:
5907*22dc650dSSadaf Ebrahimi    a123:b342::324e:abcd
5908*22dc650dSSadaf Ebrahimi 0: a123:b342::324e:abcd
5909*22dc650dSSadaf Ebrahimi 1:
5910*22dc650dSSadaf Ebrahimi    a123:ddde:b342::324e:abcd
5911*22dc650dSSadaf Ebrahimi 0: a123:ddde:b342::324e:abcd
5912*22dc650dSSadaf Ebrahimi 1:
5913*22dc650dSSadaf Ebrahimi    a123:ddde:b342::324e:dcba:abcd
5914*22dc650dSSadaf Ebrahimi 0: a123:ddde:b342::324e:dcba:abcd
5915*22dc650dSSadaf Ebrahimi 1:
5916*22dc650dSSadaf Ebrahimi    a123:ddde:9999:b342::324e:dcba:abcd
5917*22dc650dSSadaf Ebrahimi 0: a123:ddde:9999:b342::324e:dcba:abcd
5918*22dc650dSSadaf Ebrahimi 1:
5919*22dc650dSSadaf Ebrahimi\= Expect no match
5920*22dc650dSSadaf Ebrahimi    1:2:3:4:5:6:7:8
5921*22dc650dSSadaf EbrahimiNo match
5922*22dc650dSSadaf Ebrahimi    a123:bce:ddde:9999:b342::324e:dcba:abcd
5923*22dc650dSSadaf EbrahimiNo match
5924*22dc650dSSadaf Ebrahimi    a123::9999:b342::324e:dcba:abcd
5925*22dc650dSSadaf EbrahimiNo match
5926*22dc650dSSadaf Ebrahimi    abcde:2:3:4:5:6:7:8
5927*22dc650dSSadaf EbrahimiNo match
5928*22dc650dSSadaf Ebrahimi    ::1
5929*22dc650dSSadaf EbrahimiNo match
5930*22dc650dSSadaf Ebrahimi    abcd:fee0:123::
5931*22dc650dSSadaf EbrahimiNo match
5932*22dc650dSSadaf Ebrahimi    :1
5933*22dc650dSSadaf EbrahimiNo match
5934*22dc650dSSadaf Ebrahimi    1:
5935*22dc650dSSadaf EbrahimiNo match
5936*22dc650dSSadaf Ebrahimi
5937*22dc650dSSadaf Ebrahimi/[z\Qa-d]\E]/
5938*22dc650dSSadaf Ebrahimi    z
5939*22dc650dSSadaf Ebrahimi 0: z
5940*22dc650dSSadaf Ebrahimi    a
5941*22dc650dSSadaf Ebrahimi 0: a
5942*22dc650dSSadaf Ebrahimi    -
5943*22dc650dSSadaf Ebrahimi 0: -
5944*22dc650dSSadaf Ebrahimi    d
5945*22dc650dSSadaf Ebrahimi 0: d
5946*22dc650dSSadaf Ebrahimi    ]
5947*22dc650dSSadaf Ebrahimi 0: ]
5948*22dc650dSSadaf Ebrahimi\= Expect no match
5949*22dc650dSSadaf Ebrahimi    b
5950*22dc650dSSadaf EbrahimiNo match
5951*22dc650dSSadaf Ebrahimi
5952*22dc650dSSadaf Ebrahimi/(a+)*b/
5953*22dc650dSSadaf Ebrahimi\= Expect no match
5954*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
5955*22dc650dSSadaf EbrahimiNo match
5956*22dc650dSSadaf Ebrahimi
5957*22dc650dSSadaf Ebrahimi/(?i)reg(?:ul(?:[a�]|ae)r|ex)/
5958*22dc650dSSadaf Ebrahimi    REGular
5959*22dc650dSSadaf Ebrahimi 0: REGular
5960*22dc650dSSadaf Ebrahimi    regulaer
5961*22dc650dSSadaf Ebrahimi 0: regulaer
5962*22dc650dSSadaf Ebrahimi    Regex
5963*22dc650dSSadaf Ebrahimi 0: Regex
5964*22dc650dSSadaf Ebrahimi    regul�r
5965*22dc650dSSadaf Ebrahimi 0: regul\xe4r
5966*22dc650dSSadaf Ebrahimi
5967*22dc650dSSadaf Ebrahimi/����[�-��-�]+/
5968*22dc650dSSadaf Ebrahimi    �����
5969*22dc650dSSadaf Ebrahimi 0: \xc5\xe6\xe5\xe4\xe0
5970*22dc650dSSadaf Ebrahimi    �����
5971*22dc650dSSadaf Ebrahimi 0: \xc5\xe6\xe5\xe4\xff
5972*22dc650dSSadaf Ebrahimi    �����
5973*22dc650dSSadaf Ebrahimi 0: \xc5\xe6\xe5\xe4\xc0
5974*22dc650dSSadaf Ebrahimi    �����
5975*22dc650dSSadaf Ebrahimi 0: \xc5\xe6\xe5\xe4\xdf
5976*22dc650dSSadaf Ebrahimi
5977*22dc650dSSadaf Ebrahimi/(?<=Z)X./
5978*22dc650dSSadaf Ebrahimi  \x84XAZXB
5979*22dc650dSSadaf Ebrahimi 0: XB
5980*22dc650dSSadaf Ebrahimi
5981*22dc650dSSadaf Ebrahimi/ab cd (?x) de fg/
5982*22dc650dSSadaf Ebrahimi    ab cd defg
5983*22dc650dSSadaf Ebrahimi 0: ab cd defg
5984*22dc650dSSadaf Ebrahimi
5985*22dc650dSSadaf Ebrahimi/ab cd(?x) de fg/
5986*22dc650dSSadaf Ebrahimi    ab cddefg
5987*22dc650dSSadaf Ebrahimi 0: ab cddefg
5988*22dc650dSSadaf Ebrahimi\= Expect no match
5989*22dc650dSSadaf Ebrahimi    abcddefg
5990*22dc650dSSadaf EbrahimiNo match
5991*22dc650dSSadaf Ebrahimi
5992*22dc650dSSadaf Ebrahimi/(?<![^f]oo)(bar)/
5993*22dc650dSSadaf Ebrahimi    foobarX
5994*22dc650dSSadaf Ebrahimi 0: bar
5995*22dc650dSSadaf Ebrahimi 1: bar
5996*22dc650dSSadaf Ebrahimi\= Expect no match
5997*22dc650dSSadaf Ebrahimi    boobarX
5998*22dc650dSSadaf EbrahimiNo match
5999*22dc650dSSadaf Ebrahimi
6000*22dc650dSSadaf Ebrahimi/(?<![^f])X/
6001*22dc650dSSadaf Ebrahimi    offX
6002*22dc650dSSadaf Ebrahimi 0: X
6003*22dc650dSSadaf Ebrahimi\= Expect no match
6004*22dc650dSSadaf Ebrahimi    onyX
6005*22dc650dSSadaf EbrahimiNo match
6006*22dc650dSSadaf Ebrahimi
6007*22dc650dSSadaf Ebrahimi/(?<=[^f])X/
6008*22dc650dSSadaf Ebrahimi    onyX
6009*22dc650dSSadaf Ebrahimi 0: X
6010*22dc650dSSadaf Ebrahimi\= Expect no match
6011*22dc650dSSadaf Ebrahimi    offX
6012*22dc650dSSadaf EbrahimiNo match
6013*22dc650dSSadaf Ebrahimi
6014*22dc650dSSadaf Ebrahimi/^/gm
6015*22dc650dSSadaf Ebrahimi    a\nb\nc\n
6016*22dc650dSSadaf Ebrahimi 0:
6017*22dc650dSSadaf Ebrahimi 0:
6018*22dc650dSSadaf Ebrahimi 0:
6019*22dc650dSSadaf Ebrahimi    \
6020*22dc650dSSadaf Ebrahimi 0:
6021*22dc650dSSadaf Ebrahimi
6022*22dc650dSSadaf Ebrahimi/(?<=C\n)^/gm
6023*22dc650dSSadaf Ebrahimi    A\nC\nC\n
6024*22dc650dSSadaf Ebrahimi 0:
6025*22dc650dSSadaf Ebrahimi
6026*22dc650dSSadaf Ebrahimi/(?:(?(1)a|b)(X))+/
6027*22dc650dSSadaf Ebrahimi    bXaX
6028*22dc650dSSadaf Ebrahimi 0: bXaX
6029*22dc650dSSadaf Ebrahimi 1: X
6030*22dc650dSSadaf Ebrahimi
6031*22dc650dSSadaf Ebrahimi/(?:(?(1)\1a|b)(X|Y))+/
6032*22dc650dSSadaf Ebrahimi    bXXaYYaY
6033*22dc650dSSadaf Ebrahimi 0: bXXaYYaY
6034*22dc650dSSadaf Ebrahimi 1: Y
6035*22dc650dSSadaf Ebrahimi    bXYaXXaX
6036*22dc650dSSadaf Ebrahimi 0: bX
6037*22dc650dSSadaf Ebrahimi 1: X
6038*22dc650dSSadaf Ebrahimi
6039*22dc650dSSadaf Ebrahimi/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
6040*22dc650dSSadaf Ebrahimi    bXXaYYaY
6041*22dc650dSSadaf Ebrahimi 0: bX
6042*22dc650dSSadaf Ebrahimi 1:
6043*22dc650dSSadaf Ebrahimi 2:
6044*22dc650dSSadaf Ebrahimi 3:
6045*22dc650dSSadaf Ebrahimi 4:
6046*22dc650dSSadaf Ebrahimi 5:
6047*22dc650dSSadaf Ebrahimi 6:
6048*22dc650dSSadaf Ebrahimi 7:
6049*22dc650dSSadaf Ebrahimi 8:
6050*22dc650dSSadaf Ebrahimi 9:
6051*22dc650dSSadaf Ebrahimi10: X
6052*22dc650dSSadaf Ebrahimi
6053*22dc650dSSadaf Ebrahimi/[[,abc,]+]/
6054*22dc650dSSadaf Ebrahimi    abc]
6055*22dc650dSSadaf Ebrahimi 0: abc]
6056*22dc650dSSadaf Ebrahimi    a,b]
6057*22dc650dSSadaf Ebrahimi 0: a,b]
6058*22dc650dSSadaf Ebrahimi    [a,b,c]
6059*22dc650dSSadaf Ebrahimi 0: [a,b,c]
6060*22dc650dSSadaf Ebrahimi
6061*22dc650dSSadaf Ebrahimi/(?-x: )/x
6062*22dc650dSSadaf Ebrahimi    A\x20B
6063*22dc650dSSadaf Ebrahimi 0:
6064*22dc650dSSadaf Ebrahimi
6065*22dc650dSSadaf Ebrahimi/(?x)(?-x: \s*#\s*)/
6066*22dc650dSSadaf Ebrahimi    A # B
6067*22dc650dSSadaf Ebrahimi 0:  #
6068*22dc650dSSadaf Ebrahimi\= Expect no match
6069*22dc650dSSadaf Ebrahimi    #
6070*22dc650dSSadaf EbrahimiNo match
6071*22dc650dSSadaf Ebrahimi    A s#s B
6072*22dc650dSSadaf EbrahimiNo match
6073*22dc650dSSadaf Ebrahimi
6074*22dc650dSSadaf Ebrahimi/(?x-is)(?:(?-ixs) \s*#\s*) include/
6075*22dc650dSSadaf Ebrahimi    A #include
6076*22dc650dSSadaf Ebrahimi 0:  #include
6077*22dc650dSSadaf Ebrahimi\= Expect no match
6078*22dc650dSSadaf Ebrahimi    A#include
6079*22dc650dSSadaf EbrahimiNo match
6080*22dc650dSSadaf Ebrahimi    A #Include
6081*22dc650dSSadaf EbrahimiNo match
6082*22dc650dSSadaf Ebrahimi
6083*22dc650dSSadaf Ebrahimi/a*b*\w/
6084*22dc650dSSadaf Ebrahimi    aaabbbb
6085*22dc650dSSadaf Ebrahimi 0: aaabbbb
6086*22dc650dSSadaf Ebrahimi    aaaa
6087*22dc650dSSadaf Ebrahimi 0: aaaa
6088*22dc650dSSadaf Ebrahimi    a
6089*22dc650dSSadaf Ebrahimi 0: a
6090*22dc650dSSadaf Ebrahimi
6091*22dc650dSSadaf Ebrahimi/a*b?\w/
6092*22dc650dSSadaf Ebrahimi    aaabbbb
6093*22dc650dSSadaf Ebrahimi 0: aaabb
6094*22dc650dSSadaf Ebrahimi    aaaa
6095*22dc650dSSadaf Ebrahimi 0: aaaa
6096*22dc650dSSadaf Ebrahimi    a
6097*22dc650dSSadaf Ebrahimi 0: a
6098*22dc650dSSadaf Ebrahimi
6099*22dc650dSSadaf Ebrahimi/a*b{0,4}\w/
6100*22dc650dSSadaf Ebrahimi    aaabbbb
6101*22dc650dSSadaf Ebrahimi 0: aaabbbb
6102*22dc650dSSadaf Ebrahimi    aaaa
6103*22dc650dSSadaf Ebrahimi 0: aaaa
6104*22dc650dSSadaf Ebrahimi    a
6105*22dc650dSSadaf Ebrahimi 0: a
6106*22dc650dSSadaf Ebrahimi
6107*22dc650dSSadaf Ebrahimi/a*b{0,}\w/
6108*22dc650dSSadaf Ebrahimi    aaabbbb
6109*22dc650dSSadaf Ebrahimi 0: aaabbbb
6110*22dc650dSSadaf Ebrahimi    aaaa
6111*22dc650dSSadaf Ebrahimi 0: aaaa
6112*22dc650dSSadaf Ebrahimi    a
6113*22dc650dSSadaf Ebrahimi 0: a
6114*22dc650dSSadaf Ebrahimi
6115*22dc650dSSadaf Ebrahimi/a*\d*\w/
6116*22dc650dSSadaf Ebrahimi    0a
6117*22dc650dSSadaf Ebrahimi 0: 0a
6118*22dc650dSSadaf Ebrahimi    a
6119*22dc650dSSadaf Ebrahimi 0: a
6120*22dc650dSSadaf Ebrahimi
6121*22dc650dSSadaf Ebrahimi/a*b *\w/x
6122*22dc650dSSadaf Ebrahimi    a
6123*22dc650dSSadaf Ebrahimi 0: a
6124*22dc650dSSadaf Ebrahimi
6125*22dc650dSSadaf Ebrahimi/a*b#comment
6126*22dc650dSSadaf Ebrahimi  *\w/x
6127*22dc650dSSadaf Ebrahimi    a
6128*22dc650dSSadaf Ebrahimi 0: a
6129*22dc650dSSadaf Ebrahimi
6130*22dc650dSSadaf Ebrahimi/a* b *\w/x
6131*22dc650dSSadaf Ebrahimi    a
6132*22dc650dSSadaf Ebrahimi 0: a
6133*22dc650dSSadaf Ebrahimi
6134*22dc650dSSadaf Ebrahimi/^\w+=.*(\\\n.*)*/
6135*22dc650dSSadaf Ebrahimi    abc=xyz\\\npqr
6136*22dc650dSSadaf Ebrahimi 0: abc=xyz\
6137*22dc650dSSadaf Ebrahimi
6138*22dc650dSSadaf Ebrahimi/(?=(\w+))\1:/
6139*22dc650dSSadaf Ebrahimi    abcd:
6140*22dc650dSSadaf Ebrahimi 0: abcd:
6141*22dc650dSSadaf Ebrahimi 1: abcd
6142*22dc650dSSadaf Ebrahimi
6143*22dc650dSSadaf Ebrahimi/^(?=(\w+))\1:/
6144*22dc650dSSadaf Ebrahimi    abcd:
6145*22dc650dSSadaf Ebrahimi 0: abcd:
6146*22dc650dSSadaf Ebrahimi 1: abcd
6147*22dc650dSSadaf Ebrahimi
6148*22dc650dSSadaf Ebrahimi/^\Eabc/
6149*22dc650dSSadaf Ebrahimi    abc
6150*22dc650dSSadaf Ebrahimi 0: abc
6151*22dc650dSSadaf Ebrahimi
6152*22dc650dSSadaf Ebrahimi/^[\Eabc]/
6153*22dc650dSSadaf Ebrahimi    a
6154*22dc650dSSadaf Ebrahimi 0: a
6155*22dc650dSSadaf Ebrahimi\= Expect no match
6156*22dc650dSSadaf Ebrahimi    E
6157*22dc650dSSadaf EbrahimiNo match
6158*22dc650dSSadaf Ebrahimi
6159*22dc650dSSadaf Ebrahimi/^[a-\Ec]/
6160*22dc650dSSadaf Ebrahimi    b
6161*22dc650dSSadaf Ebrahimi 0: b
6162*22dc650dSSadaf Ebrahimi\= Expect no match
6163*22dc650dSSadaf Ebrahimi    -
6164*22dc650dSSadaf EbrahimiNo match
6165*22dc650dSSadaf Ebrahimi    E
6166*22dc650dSSadaf EbrahimiNo match
6167*22dc650dSSadaf Ebrahimi
6168*22dc650dSSadaf Ebrahimi/^[a\E\E-\Ec]/
6169*22dc650dSSadaf Ebrahimi    b
6170*22dc650dSSadaf Ebrahimi 0: b
6171*22dc650dSSadaf Ebrahimi\= Expect no match
6172*22dc650dSSadaf Ebrahimi    -
6173*22dc650dSSadaf EbrahimiNo match
6174*22dc650dSSadaf Ebrahimi    E
6175*22dc650dSSadaf EbrahimiNo match
6176*22dc650dSSadaf Ebrahimi
6177*22dc650dSSadaf Ebrahimi/^[\E\Qa\E-\Qz\E]+/
6178*22dc650dSSadaf Ebrahimi    b
6179*22dc650dSSadaf Ebrahimi 0: b
6180*22dc650dSSadaf Ebrahimi\= Expect no match
6181*22dc650dSSadaf Ebrahimi    -
6182*22dc650dSSadaf EbrahimiNo match
6183*22dc650dSSadaf Ebrahimi
6184*22dc650dSSadaf Ebrahimi/^[a\Q]bc\E]/
6185*22dc650dSSadaf Ebrahimi    a
6186*22dc650dSSadaf Ebrahimi 0: a
6187*22dc650dSSadaf Ebrahimi    ]
6188*22dc650dSSadaf Ebrahimi 0: ]
6189*22dc650dSSadaf Ebrahimi    c
6190*22dc650dSSadaf Ebrahimi 0: c
6191*22dc650dSSadaf Ebrahimi
6192*22dc650dSSadaf Ebrahimi/^[a-\Q\E]/
6193*22dc650dSSadaf Ebrahimi    a
6194*22dc650dSSadaf Ebrahimi 0: a
6195*22dc650dSSadaf Ebrahimi    -
6196*22dc650dSSadaf Ebrahimi 0: -
6197*22dc650dSSadaf Ebrahimi
6198*22dc650dSSadaf Ebrahimi/^(a()*)*/
6199*22dc650dSSadaf Ebrahimi    aaaa
6200*22dc650dSSadaf Ebrahimi 0: aaaa
6201*22dc650dSSadaf Ebrahimi 1: a
6202*22dc650dSSadaf Ebrahimi 2:
6203*22dc650dSSadaf Ebrahimi
6204*22dc650dSSadaf Ebrahimi/^(?:a(?:(?:))*)*/
6205*22dc650dSSadaf Ebrahimi    aaaa
6206*22dc650dSSadaf Ebrahimi 0: aaaa
6207*22dc650dSSadaf Ebrahimi
6208*22dc650dSSadaf Ebrahimi/^(a()+)+/
6209*22dc650dSSadaf Ebrahimi    aaaa
6210*22dc650dSSadaf Ebrahimi 0: aaaa
6211*22dc650dSSadaf Ebrahimi 1: a
6212*22dc650dSSadaf Ebrahimi 2:
6213*22dc650dSSadaf Ebrahimi
6214*22dc650dSSadaf Ebrahimi/^(?:a(?:(?:))+)+/
6215*22dc650dSSadaf Ebrahimi    aaaa
6216*22dc650dSSadaf Ebrahimi 0: aaaa
6217*22dc650dSSadaf Ebrahimi
6218*22dc650dSSadaf Ebrahimi/(a){0,3}(?(1)b|(c|))*D/
6219*22dc650dSSadaf Ebrahimi    abbD
6220*22dc650dSSadaf Ebrahimi 0: abbD
6221*22dc650dSSadaf Ebrahimi 1: a
6222*22dc650dSSadaf Ebrahimi    ccccD
6223*22dc650dSSadaf Ebrahimi 0: ccccD
6224*22dc650dSSadaf Ebrahimi 1: <unset>
6225*22dc650dSSadaf Ebrahimi 2:
6226*22dc650dSSadaf Ebrahimi    D
6227*22dc650dSSadaf Ebrahimi 0: D
6228*22dc650dSSadaf Ebrahimi 1: <unset>
6229*22dc650dSSadaf Ebrahimi 2:
6230*22dc650dSSadaf Ebrahimi
6231*22dc650dSSadaf Ebrahimi/(a|)*\d/
6232*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6233*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6234*22dc650dSSadaf Ebrahimi 1:
6235*22dc650dSSadaf Ebrahimi\= Expect no match
6236*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6237*22dc650dSSadaf EbrahimiNo match
6238*22dc650dSSadaf Ebrahimi
6239*22dc650dSSadaf Ebrahimi/(?>a|)*\d/
6240*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6241*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6242*22dc650dSSadaf Ebrahimi\= Expect no match
6243*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6244*22dc650dSSadaf EbrahimiNo match
6245*22dc650dSSadaf Ebrahimi
6246*22dc650dSSadaf Ebrahimi/(?:a|)*\d/
6247*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6248*22dc650dSSadaf Ebrahimi 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
6249*22dc650dSSadaf Ebrahimi\= Expect no match
6250*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
6251*22dc650dSSadaf EbrahimiNo match
6252*22dc650dSSadaf Ebrahimi
6253*22dc650dSSadaf Ebrahimi/\Z/g
6254*22dc650dSSadaf Ebrahimi  abc\n
6255*22dc650dSSadaf Ebrahimi 0:
6256*22dc650dSSadaf Ebrahimi 0:
6257*22dc650dSSadaf Ebrahimi
6258*22dc650dSSadaf Ebrahimi/^(?s)(?>.*)(?<!\n)/
6259*22dc650dSSadaf Ebrahimi  abc
6260*22dc650dSSadaf Ebrahimi 0: abc
6261*22dc650dSSadaf Ebrahimi\= Expect no match
6262*22dc650dSSadaf Ebrahimi  abc\n
6263*22dc650dSSadaf EbrahimiNo match
6264*22dc650dSSadaf Ebrahimi
6265*22dc650dSSadaf Ebrahimi/^(?![^\n]*\n\z)/
6266*22dc650dSSadaf Ebrahimi  abc
6267*22dc650dSSadaf Ebrahimi 0:
6268*22dc650dSSadaf Ebrahimi\= Expect no match
6269*22dc650dSSadaf Ebrahimi  abc\n
6270*22dc650dSSadaf EbrahimiNo match
6271*22dc650dSSadaf Ebrahimi
6272*22dc650dSSadaf Ebrahimi/\z(?<!\n)/
6273*22dc650dSSadaf Ebrahimi  abc
6274*22dc650dSSadaf Ebrahimi 0:
6275*22dc650dSSadaf Ebrahimi\= Expect no match
6276*22dc650dSSadaf Ebrahimi  abc\n
6277*22dc650dSSadaf EbrahimiNo match
6278*22dc650dSSadaf Ebrahimi
6279*22dc650dSSadaf Ebrahimi/(.*(.)?)*/
6280*22dc650dSSadaf Ebrahimi    abcd
6281*22dc650dSSadaf Ebrahimi 0: abcd
6282*22dc650dSSadaf Ebrahimi 1:
6283*22dc650dSSadaf Ebrahimi
6284*22dc650dSSadaf Ebrahimi/( (A | (?(1)0|) )*   )/x
6285*22dc650dSSadaf Ebrahimi    abcd
6286*22dc650dSSadaf Ebrahimi 0:
6287*22dc650dSSadaf Ebrahimi 1:
6288*22dc650dSSadaf Ebrahimi 2:
6289*22dc650dSSadaf Ebrahimi
6290*22dc650dSSadaf Ebrahimi/( ( (?(1)0|) )*   )/x
6291*22dc650dSSadaf Ebrahimi    abcd
6292*22dc650dSSadaf Ebrahimi 0:
6293*22dc650dSSadaf Ebrahimi 1:
6294*22dc650dSSadaf Ebrahimi 2:
6295*22dc650dSSadaf Ebrahimi
6296*22dc650dSSadaf Ebrahimi/(  (?(1)0|)*   )/x
6297*22dc650dSSadaf Ebrahimi    abcd
6298*22dc650dSSadaf Ebrahimi 0:
6299*22dc650dSSadaf Ebrahimi 1:
6300*22dc650dSSadaf Ebrahimi
6301*22dc650dSSadaf Ebrahimi/[[:abcd:xyz]]/
6302*22dc650dSSadaf Ebrahimi    a]
6303*22dc650dSSadaf Ebrahimi 0: a]
6304*22dc650dSSadaf Ebrahimi    :]
6305*22dc650dSSadaf Ebrahimi 0: :]
6306*22dc650dSSadaf Ebrahimi
6307*22dc650dSSadaf Ebrahimi/[abc[:x\]pqr]/
6308*22dc650dSSadaf Ebrahimi    a
6309*22dc650dSSadaf Ebrahimi 0: a
6310*22dc650dSSadaf Ebrahimi    [
6311*22dc650dSSadaf Ebrahimi 0: [
6312*22dc650dSSadaf Ebrahimi    :
6313*22dc650dSSadaf Ebrahimi 0: :
6314*22dc650dSSadaf Ebrahimi    ]
6315*22dc650dSSadaf Ebrahimi 0: ]
6316*22dc650dSSadaf Ebrahimi    p
6317*22dc650dSSadaf Ebrahimi 0: p
6318*22dc650dSSadaf Ebrahimi
6319*22dc650dSSadaf Ebrahimi/.*[op][xyz]/
6320*22dc650dSSadaf Ebrahimi\= Expect no match
6321*22dc650dSSadaf Ebrahimi    fooabcfoo
6322*22dc650dSSadaf EbrahimiNo match
6323*22dc650dSSadaf Ebrahimi
6324*22dc650dSSadaf Ebrahimi/(?(?=.*b)b|^)/
6325*22dc650dSSadaf Ebrahimi   adc
6326*22dc650dSSadaf Ebrahimi 0:
6327*22dc650dSSadaf Ebrahimi   abc
6328*22dc650dSSadaf Ebrahimi 0: b
6329*22dc650dSSadaf Ebrahimi
6330*22dc650dSSadaf Ebrahimi/(?(?=^.*b)b|^)/
6331*22dc650dSSadaf Ebrahimi   adc
6332*22dc650dSSadaf Ebrahimi 0:
6333*22dc650dSSadaf Ebrahimi\= Expect no match
6334*22dc650dSSadaf Ebrahimi   abc
6335*22dc650dSSadaf EbrahimiNo match
6336*22dc650dSSadaf Ebrahimi
6337*22dc650dSSadaf Ebrahimi/(?(?=.*b)b|^)*/
6338*22dc650dSSadaf Ebrahimi   adc
6339*22dc650dSSadaf Ebrahimi 0:
6340*22dc650dSSadaf Ebrahimi   abc
6341*22dc650dSSadaf Ebrahimi 0:
6342*22dc650dSSadaf Ebrahimi
6343*22dc650dSSadaf Ebrahimi/(?(?=.*b)b|^)+/
6344*22dc650dSSadaf Ebrahimi   adc
6345*22dc650dSSadaf Ebrahimi 0:
6346*22dc650dSSadaf Ebrahimi   abc
6347*22dc650dSSadaf Ebrahimi 0: b
6348*22dc650dSSadaf Ebrahimi
6349*22dc650dSSadaf Ebrahimi/(?(?=b).*b|^d)/
6350*22dc650dSSadaf Ebrahimi    abc
6351*22dc650dSSadaf Ebrahimi 0: b
6352*22dc650dSSadaf Ebrahimi
6353*22dc650dSSadaf Ebrahimi/(?(?=.*b).*b|^d)/
6354*22dc650dSSadaf Ebrahimi    abc
6355*22dc650dSSadaf Ebrahimi 0: ab
6356*22dc650dSSadaf Ebrahimi
6357*22dc650dSSadaf Ebrahimi/^%((?(?=[a])[^%])|b)*%$/
6358*22dc650dSSadaf Ebrahimi    %ab%
6359*22dc650dSSadaf Ebrahimi 0: %ab%
6360*22dc650dSSadaf Ebrahimi 1:
6361*22dc650dSSadaf Ebrahimi
6362*22dc650dSSadaf Ebrahimi/(?i)a(?-i)b|c/
6363*22dc650dSSadaf Ebrahimi    XabX
6364*22dc650dSSadaf Ebrahimi 0: ab
6365*22dc650dSSadaf Ebrahimi    XAbX
6366*22dc650dSSadaf Ebrahimi 0: Ab
6367*22dc650dSSadaf Ebrahimi    CcC
6368*22dc650dSSadaf Ebrahimi 0: c
6369*22dc650dSSadaf Ebrahimi\= Expect no match
6370*22dc650dSSadaf Ebrahimi    XABX
6371*22dc650dSSadaf EbrahimiNo match
6372*22dc650dSSadaf Ebrahimi
6373*22dc650dSSadaf Ebrahimi/[\x00-\xff\s]+/
6374*22dc650dSSadaf Ebrahimi    \x0a\x0b\x0c\x0d
6375*22dc650dSSadaf Ebrahimi 0: \x0a\x0b\x0c\x0d
6376*22dc650dSSadaf Ebrahimi
6377*22dc650dSSadaf Ebrahimi/(abc)\1/i
6378*22dc650dSSadaf Ebrahimi\= Expect no match
6379*22dc650dSSadaf Ebrahimi   abc
6380*22dc650dSSadaf EbrahimiNo match
6381*22dc650dSSadaf Ebrahimi
6382*22dc650dSSadaf Ebrahimi/(abc)\1/
6383*22dc650dSSadaf Ebrahimi\= Expect no match
6384*22dc650dSSadaf Ebrahimi   abc
6385*22dc650dSSadaf EbrahimiNo match
6386*22dc650dSSadaf Ebrahimi
6387*22dc650dSSadaf Ebrahimi/[^a]*/i
6388*22dc650dSSadaf Ebrahimi    12abc
6389*22dc650dSSadaf Ebrahimi 0: 12
6390*22dc650dSSadaf Ebrahimi    12ABC
6391*22dc650dSSadaf Ebrahimi 0: 12
6392*22dc650dSSadaf Ebrahimi
6393*22dc650dSSadaf Ebrahimi/[^a]*+/i
6394*22dc650dSSadaf Ebrahimi    12abc
6395*22dc650dSSadaf Ebrahimi 0: 12
6396*22dc650dSSadaf Ebrahimi    12ABC
6397*22dc650dSSadaf Ebrahimi 0: 12
6398*22dc650dSSadaf Ebrahimi
6399*22dc650dSSadaf Ebrahimi/[^a]*?X/i
6400*22dc650dSSadaf Ebrahimi\= Expect no match
6401*22dc650dSSadaf Ebrahimi    12abc
6402*22dc650dSSadaf EbrahimiNo match
6403*22dc650dSSadaf Ebrahimi    12ABC
6404*22dc650dSSadaf EbrahimiNo match
6405*22dc650dSSadaf Ebrahimi
6406*22dc650dSSadaf Ebrahimi/[^a]+?X/i
6407*22dc650dSSadaf Ebrahimi\= Expect no match
6408*22dc650dSSadaf Ebrahimi    12abc
6409*22dc650dSSadaf EbrahimiNo match
6410*22dc650dSSadaf Ebrahimi    12ABC
6411*22dc650dSSadaf EbrahimiNo match
6412*22dc650dSSadaf Ebrahimi
6413*22dc650dSSadaf Ebrahimi/[^a]?X/i
6414*22dc650dSSadaf Ebrahimi    12aXbcX
6415*22dc650dSSadaf Ebrahimi 0: X
6416*22dc650dSSadaf Ebrahimi    12AXBCX
6417*22dc650dSSadaf Ebrahimi 0: X
6418*22dc650dSSadaf Ebrahimi    BCX
6419*22dc650dSSadaf Ebrahimi 0: CX
6420*22dc650dSSadaf Ebrahimi
6421*22dc650dSSadaf Ebrahimi/[^a]??X/i
6422*22dc650dSSadaf Ebrahimi    12aXbcX
6423*22dc650dSSadaf Ebrahimi 0: X
6424*22dc650dSSadaf Ebrahimi    12AXBCX
6425*22dc650dSSadaf Ebrahimi 0: X
6426*22dc650dSSadaf Ebrahimi    BCX
6427*22dc650dSSadaf Ebrahimi 0: CX
6428*22dc650dSSadaf Ebrahimi
6429*22dc650dSSadaf Ebrahimi/[^a]?+X/i
6430*22dc650dSSadaf Ebrahimi    12aXbcX
6431*22dc650dSSadaf Ebrahimi 0: cX
6432*22dc650dSSadaf Ebrahimi    12AXBCX
6433*22dc650dSSadaf Ebrahimi 0: CX
6434*22dc650dSSadaf Ebrahimi    BCX
6435*22dc650dSSadaf Ebrahimi 0: CX
6436*22dc650dSSadaf Ebrahimi
6437*22dc650dSSadaf Ebrahimi/[^a]{2,3}/i
6438*22dc650dSSadaf Ebrahimi    abcdef
6439*22dc650dSSadaf Ebrahimi 0: bcd
6440*22dc650dSSadaf Ebrahimi    ABCDEF
6441*22dc650dSSadaf Ebrahimi 0: BCD
6442*22dc650dSSadaf Ebrahimi
6443*22dc650dSSadaf Ebrahimi/[^a]{2,3}?/i
6444*22dc650dSSadaf Ebrahimi    abcdef
6445*22dc650dSSadaf Ebrahimi 0: bc
6446*22dc650dSSadaf Ebrahimi    ABCDEF
6447*22dc650dSSadaf Ebrahimi 0: BC
6448*22dc650dSSadaf Ebrahimi
6449*22dc650dSSadaf Ebrahimi/[^a]{2,3}+/i
6450*22dc650dSSadaf Ebrahimi    abcdef
6451*22dc650dSSadaf Ebrahimi 0: bcd
6452*22dc650dSSadaf Ebrahimi    ABCDEF
6453*22dc650dSSadaf Ebrahimi 0: BCD
6454*22dc650dSSadaf Ebrahimi
6455*22dc650dSSadaf Ebrahimi/((a|)+)+Z/
6456*22dc650dSSadaf Ebrahimi    Z
6457*22dc650dSSadaf Ebrahimi 0: Z
6458*22dc650dSSadaf Ebrahimi 1:
6459*22dc650dSSadaf Ebrahimi 2:
6460*22dc650dSSadaf Ebrahimi
6461*22dc650dSSadaf Ebrahimi/(a)b|(a)c/
6462*22dc650dSSadaf Ebrahimi    ac
6463*22dc650dSSadaf Ebrahimi 0: ac
6464*22dc650dSSadaf Ebrahimi 1: <unset>
6465*22dc650dSSadaf Ebrahimi 2: a
6466*22dc650dSSadaf Ebrahimi
6467*22dc650dSSadaf Ebrahimi/(?>(a))b|(a)c/
6468*22dc650dSSadaf Ebrahimi    ac
6469*22dc650dSSadaf Ebrahimi 0: ac
6470*22dc650dSSadaf Ebrahimi 1: <unset>
6471*22dc650dSSadaf Ebrahimi 2: a
6472*22dc650dSSadaf Ebrahimi
6473*22dc650dSSadaf Ebrahimi/(?=(a))ab|(a)c/
6474*22dc650dSSadaf Ebrahimi    ac
6475*22dc650dSSadaf Ebrahimi 0: ac
6476*22dc650dSSadaf Ebrahimi 1: <unset>
6477*22dc650dSSadaf Ebrahimi 2: a
6478*22dc650dSSadaf Ebrahimi
6479*22dc650dSSadaf Ebrahimi/((?>(a))b|(a)c)/
6480*22dc650dSSadaf Ebrahimi    ac
6481*22dc650dSSadaf Ebrahimi 0: ac
6482*22dc650dSSadaf Ebrahimi 1: ac
6483*22dc650dSSadaf Ebrahimi 2: <unset>
6484*22dc650dSSadaf Ebrahimi 3: a
6485*22dc650dSSadaf Ebrahimi
6486*22dc650dSSadaf Ebrahimi/((?>(a))b|(a)c)++/
6487*22dc650dSSadaf Ebrahimi    ac
6488*22dc650dSSadaf Ebrahimi 0: ac
6489*22dc650dSSadaf Ebrahimi 1: ac
6490*22dc650dSSadaf Ebrahimi 2: <unset>
6491*22dc650dSSadaf Ebrahimi 3: a
6492*22dc650dSSadaf Ebrahimi
6493*22dc650dSSadaf Ebrahimi/(?:(?>(a))b|(a)c)++/
6494*22dc650dSSadaf Ebrahimi    ac
6495*22dc650dSSadaf Ebrahimi 0: ac
6496*22dc650dSSadaf Ebrahimi 1: <unset>
6497*22dc650dSSadaf Ebrahimi 2: a
6498*22dc650dSSadaf Ebrahimi
6499*22dc650dSSadaf Ebrahimi/(?=(?>(a))b|(a)c)(..)/
6500*22dc650dSSadaf Ebrahimi    ac
6501*22dc650dSSadaf Ebrahimi 0: ac
6502*22dc650dSSadaf Ebrahimi 1: <unset>
6503*22dc650dSSadaf Ebrahimi 2: a
6504*22dc650dSSadaf Ebrahimi 3: ac
6505*22dc650dSSadaf Ebrahimi
6506*22dc650dSSadaf Ebrahimi/(?>(?>(a))b|(a)c)/
6507*22dc650dSSadaf Ebrahimi    ac
6508*22dc650dSSadaf Ebrahimi 0: ac
6509*22dc650dSSadaf Ebrahimi 1: <unset>
6510*22dc650dSSadaf Ebrahimi 2: a
6511*22dc650dSSadaf Ebrahimi
6512*22dc650dSSadaf Ebrahimi/(?:(?>([ab])))+a=/aftertext
6513*22dc650dSSadaf Ebrahimi    =ba=
6514*22dc650dSSadaf Ebrahimi 0: ba=
6515*22dc650dSSadaf Ebrahimi 0+
6516*22dc650dSSadaf Ebrahimi 1: b
6517*22dc650dSSadaf Ebrahimi
6518*22dc650dSSadaf Ebrahimi/(?>([ab]))+a=/aftertext
6519*22dc650dSSadaf Ebrahimi    =ba=
6520*22dc650dSSadaf Ebrahimi 0: ba=
6521*22dc650dSSadaf Ebrahimi 0+
6522*22dc650dSSadaf Ebrahimi 1: b
6523*22dc650dSSadaf Ebrahimi
6524*22dc650dSSadaf Ebrahimi/((?>(a+)b)+(aabab))/
6525*22dc650dSSadaf Ebrahimi    aaaabaaabaabab
6526*22dc650dSSadaf Ebrahimi 0: aaaabaaabaabab
6527*22dc650dSSadaf Ebrahimi 1: aaaabaaabaabab
6528*22dc650dSSadaf Ebrahimi 2: aaa
6529*22dc650dSSadaf Ebrahimi 3: aabab
6530*22dc650dSSadaf Ebrahimi
6531*22dc650dSSadaf Ebrahimi/(?>a+|ab)+?c/
6532*22dc650dSSadaf Ebrahimi\= Expect no match
6533*22dc650dSSadaf Ebrahimi    aabc
6534*22dc650dSSadaf EbrahimiNo match
6535*22dc650dSSadaf Ebrahimi
6536*22dc650dSSadaf Ebrahimi/(?>a+|ab)+c/
6537*22dc650dSSadaf Ebrahimi\= Expect no match
6538*22dc650dSSadaf Ebrahimi    aabc
6539*22dc650dSSadaf EbrahimiNo match
6540*22dc650dSSadaf Ebrahimi
6541*22dc650dSSadaf Ebrahimi/(?:a+|ab)+c/
6542*22dc650dSSadaf Ebrahimi    aabc
6543*22dc650dSSadaf Ebrahimi 0: aabc
6544*22dc650dSSadaf Ebrahimi
6545*22dc650dSSadaf Ebrahimi/(?(?=(a))a)/
6546*22dc650dSSadaf Ebrahimi    a
6547*22dc650dSSadaf Ebrahimi 0: a
6548*22dc650dSSadaf Ebrahimi 1: a
6549*22dc650dSSadaf Ebrahimi
6550*22dc650dSSadaf Ebrahimi/(?(?=(a))a)(b)/
6551*22dc650dSSadaf Ebrahimi    ab
6552*22dc650dSSadaf Ebrahimi 0: ab
6553*22dc650dSSadaf Ebrahimi 1: a
6554*22dc650dSSadaf Ebrahimi 2: b
6555*22dc650dSSadaf Ebrahimi
6556*22dc650dSSadaf Ebrahimi/^(?:a|ab)++c/
6557*22dc650dSSadaf Ebrahimi\= Expect no match
6558*22dc650dSSadaf Ebrahimi    aaaabc
6559*22dc650dSSadaf EbrahimiNo match
6560*22dc650dSSadaf Ebrahimi
6561*22dc650dSSadaf Ebrahimi/^(?>a|ab)++c/
6562*22dc650dSSadaf Ebrahimi\= Expect no match
6563*22dc650dSSadaf Ebrahimi    aaaabc
6564*22dc650dSSadaf EbrahimiNo match
6565*22dc650dSSadaf Ebrahimi
6566*22dc650dSSadaf Ebrahimi/^(?:a|ab)+c/
6567*22dc650dSSadaf Ebrahimi    aaaabc
6568*22dc650dSSadaf Ebrahimi 0: aaaabc
6569*22dc650dSSadaf Ebrahimi
6570*22dc650dSSadaf Ebrahimi/(?=abc){3}abc/aftertext
6571*22dc650dSSadaf Ebrahimi    abcabcabc
6572*22dc650dSSadaf Ebrahimi 0: abc
6573*22dc650dSSadaf Ebrahimi 0+ abcabc
6574*22dc650dSSadaf Ebrahimi\= Expect no match
6575*22dc650dSSadaf Ebrahimi    xyz
6576*22dc650dSSadaf EbrahimiNo match
6577*22dc650dSSadaf Ebrahimi
6578*22dc650dSSadaf Ebrahimi/(?=abc)+abc/aftertext
6579*22dc650dSSadaf Ebrahimi    abcabcabc
6580*22dc650dSSadaf Ebrahimi 0: abc
6581*22dc650dSSadaf Ebrahimi 0+ abcabc
6582*22dc650dSSadaf Ebrahimi\= Expect no match
6583*22dc650dSSadaf Ebrahimi    xyz
6584*22dc650dSSadaf EbrahimiNo match
6585*22dc650dSSadaf Ebrahimi
6586*22dc650dSSadaf Ebrahimi/(?=abc)++abc/aftertext
6587*22dc650dSSadaf Ebrahimi    abcabcabc
6588*22dc650dSSadaf Ebrahimi 0: abc
6589*22dc650dSSadaf Ebrahimi 0+ abcabc
6590*22dc650dSSadaf Ebrahimi\= Expect no match
6591*22dc650dSSadaf Ebrahimi    xyz
6592*22dc650dSSadaf EbrahimiNo match
6593*22dc650dSSadaf Ebrahimi
6594*22dc650dSSadaf Ebrahimi/(?=abc){0}xyz/
6595*22dc650dSSadaf Ebrahimi    xyz
6596*22dc650dSSadaf Ebrahimi 0: xyz
6597*22dc650dSSadaf Ebrahimi
6598*22dc650dSSadaf Ebrahimi/(?=abc){1}xyz/
6599*22dc650dSSadaf Ebrahimi\= Expect no match
6600*22dc650dSSadaf Ebrahimi    xyz
6601*22dc650dSSadaf EbrahimiNo match
6602*22dc650dSSadaf Ebrahimi
6603*22dc650dSSadaf Ebrahimi/(?=(a))?./
6604*22dc650dSSadaf Ebrahimi    ab
6605*22dc650dSSadaf Ebrahimi 0: a
6606*22dc650dSSadaf Ebrahimi 1: a
6607*22dc650dSSadaf Ebrahimi    bc
6608*22dc650dSSadaf Ebrahimi 0: b
6609*22dc650dSSadaf Ebrahimi
6610*22dc650dSSadaf Ebrahimi/(?=(a))??./
6611*22dc650dSSadaf Ebrahimi    ab
6612*22dc650dSSadaf Ebrahimi 0: a
6613*22dc650dSSadaf Ebrahimi    bc
6614*22dc650dSSadaf Ebrahimi 0: b
6615*22dc650dSSadaf Ebrahimi
6616*22dc650dSSadaf Ebrahimi/^(?=(?1))?[az]([abc])d/
6617*22dc650dSSadaf Ebrahimi    abd
6618*22dc650dSSadaf Ebrahimi 0: abd
6619*22dc650dSSadaf Ebrahimi 1: b
6620*22dc650dSSadaf Ebrahimi    zcdxx
6621*22dc650dSSadaf Ebrahimi 0: zcd
6622*22dc650dSSadaf Ebrahimi 1: c
6623*22dc650dSSadaf Ebrahimi
6624*22dc650dSSadaf Ebrahimi/^(?!a){0}\w+/
6625*22dc650dSSadaf Ebrahimi    aaaaa
6626*22dc650dSSadaf Ebrahimi 0: aaaaa
6627*22dc650dSSadaf Ebrahimi
6628*22dc650dSSadaf Ebrahimi/(?<=(abc))?xyz/
6629*22dc650dSSadaf Ebrahimi    abcxyz
6630*22dc650dSSadaf Ebrahimi 0: xyz
6631*22dc650dSSadaf Ebrahimi 1: abc
6632*22dc650dSSadaf Ebrahimi    pqrxyz
6633*22dc650dSSadaf Ebrahimi 0: xyz
6634*22dc650dSSadaf Ebrahimi
6635*22dc650dSSadaf Ebrahimi/^[\g<a>]+/
6636*22dc650dSSadaf Ebrahimi    ggg<<<aaa>>>
6637*22dc650dSSadaf Ebrahimi 0: ggg<<<aaa>>>
6638*22dc650dSSadaf Ebrahimi\= Expect no match
6639*22dc650dSSadaf Ebrahimi    \\ga
6640*22dc650dSSadaf EbrahimiNo match
6641*22dc650dSSadaf Ebrahimi
6642*22dc650dSSadaf Ebrahimi/^[\ga]+/
6643*22dc650dSSadaf Ebrahimi    gggagagaxyz
6644*22dc650dSSadaf Ebrahimi 0: gggagaga
6645*22dc650dSSadaf Ebrahimi
6646*22dc650dSSadaf Ebrahimi/^[:a[:digit:]]+/
6647*22dc650dSSadaf Ebrahimi    aaaa444:::Z
6648*22dc650dSSadaf Ebrahimi 0: aaaa444:::
6649*22dc650dSSadaf Ebrahimi
6650*22dc650dSSadaf Ebrahimi/^[:a[:digit:]:b]+/
6651*22dc650dSSadaf Ebrahimi    aaaa444:::bbbZ
6652*22dc650dSSadaf Ebrahimi 0: aaaa444:::bbb
6653*22dc650dSSadaf Ebrahimi
6654*22dc650dSSadaf Ebrahimi/[:a]xxx[b:]/
6655*22dc650dSSadaf Ebrahimi     :xxx:
6656*22dc650dSSadaf Ebrahimi 0: :xxx:
6657*22dc650dSSadaf Ebrahimi
6658*22dc650dSSadaf Ebrahimi/(?<=a{2})b/i
6659*22dc650dSSadaf Ebrahimi    xaabc
6660*22dc650dSSadaf Ebrahimi 0: b
6661*22dc650dSSadaf Ebrahimi\= Expect no match
6662*22dc650dSSadaf Ebrahimi    xabc
6663*22dc650dSSadaf EbrahimiNo match
6664*22dc650dSSadaf Ebrahimi
6665*22dc650dSSadaf Ebrahimi/(?<!a{2})b/i
6666*22dc650dSSadaf Ebrahimi    xabc
6667*22dc650dSSadaf Ebrahimi 0: b
6668*22dc650dSSadaf Ebrahimi\= Expect no match
6669*22dc650dSSadaf Ebrahimi    xaabc
6670*22dc650dSSadaf EbrahimiNo match
6671*22dc650dSSadaf Ebrahimi
6672*22dc650dSSadaf Ebrahimi/(?<=a\h)c/
6673*22dc650dSSadaf Ebrahimi    xa c
6674*22dc650dSSadaf Ebrahimi 0: c
6675*22dc650dSSadaf Ebrahimi
6676*22dc650dSSadaf Ebrahimi/(?<=[^a]{2})b/
6677*22dc650dSSadaf Ebrahimi    axxbc
6678*22dc650dSSadaf Ebrahimi 0: b
6679*22dc650dSSadaf Ebrahimi    aAAbc
6680*22dc650dSSadaf Ebrahimi 0: b
6681*22dc650dSSadaf Ebrahimi\= Expect no match
6682*22dc650dSSadaf Ebrahimi    xaabc
6683*22dc650dSSadaf EbrahimiNo match
6684*22dc650dSSadaf Ebrahimi
6685*22dc650dSSadaf Ebrahimi/(?<=[^a]{2})b/i
6686*22dc650dSSadaf Ebrahimi    axxbc
6687*22dc650dSSadaf Ebrahimi 0: b
6688*22dc650dSSadaf Ebrahimi\= Expect no match
6689*22dc650dSSadaf Ebrahimi    aAAbc
6690*22dc650dSSadaf EbrahimiNo match
6691*22dc650dSSadaf Ebrahimi    xaabc
6692*22dc650dSSadaf EbrahimiNo match
6693*22dc650dSSadaf Ebrahimi
6694*22dc650dSSadaf Ebrahimi/(?<=a\H)c/
6695*22dc650dSSadaf Ebrahimi    abc
6696*22dc650dSSadaf Ebrahimi 0: c
6697*22dc650dSSadaf Ebrahimi
6698*22dc650dSSadaf Ebrahimi/(?<=a\V)c/
6699*22dc650dSSadaf Ebrahimi    abc
6700*22dc650dSSadaf Ebrahimi 0: c
6701*22dc650dSSadaf Ebrahimi
6702*22dc650dSSadaf Ebrahimi/(?<=a\v)c/
6703*22dc650dSSadaf Ebrahimi    a\nc
6704*22dc650dSSadaf Ebrahimi 0: c
6705*22dc650dSSadaf Ebrahimi
6706*22dc650dSSadaf Ebrahimi/(?(?=c)c|d)++Y/
6707*22dc650dSSadaf Ebrahimi    XcccddYX
6708*22dc650dSSadaf Ebrahimi 0: cccddY
6709*22dc650dSSadaf Ebrahimi
6710*22dc650dSSadaf Ebrahimi/(?(?=c)c|d)*+Y/
6711*22dc650dSSadaf Ebrahimi    XcccddYX
6712*22dc650dSSadaf Ebrahimi 0: cccddY
6713*22dc650dSSadaf Ebrahimi
6714*22dc650dSSadaf Ebrahimi/^(a{2,3}){2,}+a/
6715*22dc650dSSadaf Ebrahimi    aaaaaaa
6716*22dc650dSSadaf Ebrahimi 0: aaaaaaa
6717*22dc650dSSadaf Ebrahimi 1: aaa
6718*22dc650dSSadaf Ebrahimi\= Expect no match
6719*22dc650dSSadaf Ebrahimi    aaaaaa
6720*22dc650dSSadaf EbrahimiNo match
6721*22dc650dSSadaf Ebrahimi    aaaaaaaaa
6722*22dc650dSSadaf EbrahimiNo match
6723*22dc650dSSadaf Ebrahimi
6724*22dc650dSSadaf Ebrahimi/^(a{2,3})++a/
6725*22dc650dSSadaf Ebrahimi\= Expect no match
6726*22dc650dSSadaf Ebrahimi    aaaaaa
6727*22dc650dSSadaf EbrahimiNo match
6728*22dc650dSSadaf Ebrahimi
6729*22dc650dSSadaf Ebrahimi/^(a{2,3})*+a/
6730*22dc650dSSadaf Ebrahimi\= Expect no match
6731*22dc650dSSadaf Ebrahimi    aaaaaa
6732*22dc650dSSadaf EbrahimiNo match
6733*22dc650dSSadaf Ebrahimi
6734*22dc650dSSadaf Ebrahimi/\H\h\V\v/
6735*22dc650dSSadaf Ebrahimi    X X\x0a
6736*22dc650dSSadaf Ebrahimi 0: X X\x0a
6737*22dc650dSSadaf Ebrahimi    X\x09X\x0b
6738*22dc650dSSadaf Ebrahimi 0: X\x09X\x0b
6739*22dc650dSSadaf Ebrahimi\= Expect no match
6740*22dc650dSSadaf Ebrahimi    \xa0 X\x0a
6741*22dc650dSSadaf EbrahimiNo match
6742*22dc650dSSadaf Ebrahimi
6743*22dc650dSSadaf Ebrahimi/\H*\h+\V?\v{3,4}/
6744*22dc650dSSadaf Ebrahimi    \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
6745*22dc650dSSadaf Ebrahimi 0: \x09 \xa0X\x0a\x0b\x0c\x0d
6746*22dc650dSSadaf Ebrahimi    \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
6747*22dc650dSSadaf Ebrahimi 0: \x09 \xa0\x0a\x0b\x0c\x0d
6748*22dc650dSSadaf Ebrahimi    \x09\x20\xa0\x0a\x0b\x0c
6749*22dc650dSSadaf Ebrahimi 0: \x09 \xa0\x0a\x0b\x0c
6750*22dc650dSSadaf Ebrahimi\= Expect no match
6751*22dc650dSSadaf Ebrahimi    \x09\x20\xa0\x0a\x0b
6752*22dc650dSSadaf EbrahimiNo match
6753*22dc650dSSadaf Ebrahimi
6754*22dc650dSSadaf Ebrahimi/\H{3,4}/
6755*22dc650dSSadaf Ebrahimi    XY  ABCDE
6756*22dc650dSSadaf Ebrahimi 0: ABCD
6757*22dc650dSSadaf Ebrahimi    XY  PQR ST
6758*22dc650dSSadaf Ebrahimi 0: PQR
6759*22dc650dSSadaf Ebrahimi
6760*22dc650dSSadaf Ebrahimi/.\h{3,4}./
6761*22dc650dSSadaf Ebrahimi    XY  AB    PQRS
6762*22dc650dSSadaf Ebrahimi 0: B    P
6763*22dc650dSSadaf Ebrahimi
6764*22dc650dSSadaf Ebrahimi/\h*X\h?\H+Y\H?Z/
6765*22dc650dSSadaf Ebrahimi    >XNNNYZ
6766*22dc650dSSadaf Ebrahimi 0: XNNNYZ
6767*22dc650dSSadaf Ebrahimi    >  X NYQZ
6768*22dc650dSSadaf Ebrahimi 0:   X NYQZ
6769*22dc650dSSadaf Ebrahimi\= Expect no match
6770*22dc650dSSadaf Ebrahimi    >XYZ
6771*22dc650dSSadaf EbrahimiNo match
6772*22dc650dSSadaf Ebrahimi    >  X NY Z
6773*22dc650dSSadaf EbrahimiNo match
6774*22dc650dSSadaf Ebrahimi
6775*22dc650dSSadaf Ebrahimi/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
6776*22dc650dSSadaf Ebrahimi    >XY\x0aZ\x0aA\x0bNN\x0c
6777*22dc650dSSadaf Ebrahimi 0: XY\x0aZ\x0aA\x0bNN\x0c
6778*22dc650dSSadaf Ebrahimi    >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
6779*22dc650dSSadaf Ebrahimi 0: \x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
6780*22dc650dSSadaf Ebrahimi
6781*22dc650dSSadaf Ebrahimi/(foo)\Kbar/
6782*22dc650dSSadaf Ebrahimi    foobar
6783*22dc650dSSadaf Ebrahimi 0: bar
6784*22dc650dSSadaf Ebrahimi 1: foo
6785*22dc650dSSadaf Ebrahimi
6786*22dc650dSSadaf Ebrahimi/(foo)(\Kbar|baz)/
6787*22dc650dSSadaf Ebrahimi    foobar
6788*22dc650dSSadaf Ebrahimi 0: bar
6789*22dc650dSSadaf Ebrahimi 1: foo
6790*22dc650dSSadaf Ebrahimi 2: bar
6791*22dc650dSSadaf Ebrahimi    foobaz
6792*22dc650dSSadaf Ebrahimi 0: foobaz
6793*22dc650dSSadaf Ebrahimi 1: foo
6794*22dc650dSSadaf Ebrahimi 2: baz
6795*22dc650dSSadaf Ebrahimi
6796*22dc650dSSadaf Ebrahimi/(foo\Kbar)baz/
6797*22dc650dSSadaf Ebrahimi    foobarbaz
6798*22dc650dSSadaf Ebrahimi 0: barbaz
6799*22dc650dSSadaf Ebrahimi 1: foobar
6800*22dc650dSSadaf Ebrahimi
6801*22dc650dSSadaf Ebrahimi/abc\K|def\K/g,aftertext
6802*22dc650dSSadaf Ebrahimi    Xabcdefghi
6803*22dc650dSSadaf Ebrahimi 0:
6804*22dc650dSSadaf Ebrahimi 0+ defghi
6805*22dc650dSSadaf Ebrahimi 0:
6806*22dc650dSSadaf Ebrahimi 0+ ghi
6807*22dc650dSSadaf Ebrahimi
6808*22dc650dSSadaf Ebrahimi/ab\Kc|de\Kf/g,aftertext
6809*22dc650dSSadaf Ebrahimi    Xabcdefghi
6810*22dc650dSSadaf Ebrahimi 0: c
6811*22dc650dSSadaf Ebrahimi 0+ defghi
6812*22dc650dSSadaf Ebrahimi 0: f
6813*22dc650dSSadaf Ebrahimi 0+ ghi
6814*22dc650dSSadaf Ebrahimi
6815*22dc650dSSadaf Ebrahimi/(?=C)/g,aftertext
6816*22dc650dSSadaf Ebrahimi    ABCDECBA
6817*22dc650dSSadaf Ebrahimi 0:
6818*22dc650dSSadaf Ebrahimi 0+ CDECBA
6819*22dc650dSSadaf Ebrahimi 0:
6820*22dc650dSSadaf Ebrahimi 0+ CBA
6821*22dc650dSSadaf Ebrahimi
6822*22dc650dSSadaf Ebrahimi/^abc\K/aftertext
6823*22dc650dSSadaf Ebrahimi    abcdef
6824*22dc650dSSadaf Ebrahimi 0:
6825*22dc650dSSadaf Ebrahimi 0+ def
6826*22dc650dSSadaf Ebrahimi\= Expect no match
6827*22dc650dSSadaf Ebrahimi    defabcxyz
6828*22dc650dSSadaf EbrahimiNo match
6829*22dc650dSSadaf Ebrahimi
6830*22dc650dSSadaf Ebrahimi/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-2}Z/
6831*22dc650dSSadaf Ebrahimi    ababababbbabZXXXX
6832*22dc650dSSadaf Ebrahimi 0: ababababbbabZ
6833*22dc650dSSadaf Ebrahimi 1: ab
6834*22dc650dSSadaf Ebrahimi 2: b
6835*22dc650dSSadaf Ebrahimi
6836*22dc650dSSadaf Ebrahimi/(?<A>tom|bon)-\g{A}/
6837*22dc650dSSadaf Ebrahimi    tom-tom
6838*22dc650dSSadaf Ebrahimi 0: tom-tom
6839*22dc650dSSadaf Ebrahimi 1: tom
6840*22dc650dSSadaf Ebrahimi    bon-bon
6841*22dc650dSSadaf Ebrahimi 0: bon-bon
6842*22dc650dSSadaf Ebrahimi 1: bon
6843*22dc650dSSadaf Ebrahimi
6844*22dc650dSSadaf Ebrahimi/(^(a|b\g{-1}))/
6845*22dc650dSSadaf Ebrahimi\= Expect no match
6846*22dc650dSSadaf Ebrahimi    bacxxx
6847*22dc650dSSadaf EbrahimiNo match
6848*22dc650dSSadaf Ebrahimi
6849*22dc650dSSadaf Ebrahimi/(?|(abc)|(xyz))\1/
6850*22dc650dSSadaf Ebrahimi    abcabc
6851*22dc650dSSadaf Ebrahimi 0: abcabc
6852*22dc650dSSadaf Ebrahimi 1: abc
6853*22dc650dSSadaf Ebrahimi    xyzxyz
6854*22dc650dSSadaf Ebrahimi 0: xyzxyz
6855*22dc650dSSadaf Ebrahimi 1: xyz
6856*22dc650dSSadaf Ebrahimi\= Expect no match
6857*22dc650dSSadaf Ebrahimi    abcxyz
6858*22dc650dSSadaf EbrahimiNo match
6859*22dc650dSSadaf Ebrahimi    xyzabc
6860*22dc650dSSadaf EbrahimiNo match
6861*22dc650dSSadaf Ebrahimi
6862*22dc650dSSadaf Ebrahimi/(?|(abc)|(xyz))(?1)/
6863*22dc650dSSadaf Ebrahimi    abcabc
6864*22dc650dSSadaf Ebrahimi 0: abcabc
6865*22dc650dSSadaf Ebrahimi 1: abc
6866*22dc650dSSadaf Ebrahimi    xyzabc
6867*22dc650dSSadaf Ebrahimi 0: xyzabc
6868*22dc650dSSadaf Ebrahimi 1: xyz
6869*22dc650dSSadaf Ebrahimi\= Expect no match
6870*22dc650dSSadaf Ebrahimi    xyzxyz
6871*22dc650dSSadaf EbrahimiNo match
6872*22dc650dSSadaf Ebrahimi
6873*22dc650dSSadaf Ebrahimi/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
6874*22dc650dSSadaf Ebrahimi    XYabcdY
6875*22dc650dSSadaf Ebrahimi 0: XYabcdY
6876*22dc650dSSadaf Ebrahimi 1: a
6877*22dc650dSSadaf Ebrahimi 2: b
6878*22dc650dSSadaf Ebrahimi 3: c
6879*22dc650dSSadaf Ebrahimi 4: d
6880*22dc650dSSadaf Ebrahimi 5: Y
6881*22dc650dSSadaf Ebrahimi
6882*22dc650dSSadaf Ebrahimi/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
6883*22dc650dSSadaf Ebrahimi    XYabcdY
6884*22dc650dSSadaf Ebrahimi 0: XYabcdY
6885*22dc650dSSadaf Ebrahimi 1: a
6886*22dc650dSSadaf Ebrahimi 2: b
6887*22dc650dSSadaf Ebrahimi 3: <unset>
6888*22dc650dSSadaf Ebrahimi 4: <unset>
6889*22dc650dSSadaf Ebrahimi 5: c
6890*22dc650dSSadaf Ebrahimi 6: d
6891*22dc650dSSadaf Ebrahimi 7: Y
6892*22dc650dSSadaf Ebrahimi
6893*22dc650dSSadaf Ebrahimi/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
6894*22dc650dSSadaf Ebrahimi    XYabcdY
6895*22dc650dSSadaf Ebrahimi 0: XYabcdY
6896*22dc650dSSadaf Ebrahimi 1: a
6897*22dc650dSSadaf Ebrahimi 2: b
6898*22dc650dSSadaf Ebrahimi 3: <unset>
6899*22dc650dSSadaf Ebrahimi 4: <unset>
6900*22dc650dSSadaf Ebrahimi 5: c
6901*22dc650dSSadaf Ebrahimi 6: d
6902*22dc650dSSadaf Ebrahimi 7: Y
6903*22dc650dSSadaf Ebrahimi
6904*22dc650dSSadaf Ebrahimi/(?'abc'\w+):\k<abc>{2}/
6905*22dc650dSSadaf Ebrahimi    a:aaxyz
6906*22dc650dSSadaf Ebrahimi 0: a:aa
6907*22dc650dSSadaf Ebrahimi 1: a
6908*22dc650dSSadaf Ebrahimi    ab:ababxyz
6909*22dc650dSSadaf Ebrahimi 0: ab:abab
6910*22dc650dSSadaf Ebrahimi 1: ab
6911*22dc650dSSadaf Ebrahimi\= Expect no match
6912*22dc650dSSadaf Ebrahimi    a:axyz
6913*22dc650dSSadaf EbrahimiNo match
6914*22dc650dSSadaf Ebrahimi    ab:abxyz
6915*22dc650dSSadaf EbrahimiNo match
6916*22dc650dSSadaf Ebrahimi
6917*22dc650dSSadaf Ebrahimi/(?'abc'\w+):\g{abc}{2}/
6918*22dc650dSSadaf Ebrahimi    a:aaxyz
6919*22dc650dSSadaf Ebrahimi 0: a:aa
6920*22dc650dSSadaf Ebrahimi 1: a
6921*22dc650dSSadaf Ebrahimi    ab:ababxyz
6922*22dc650dSSadaf Ebrahimi 0: ab:abab
6923*22dc650dSSadaf Ebrahimi 1: ab
6924*22dc650dSSadaf Ebrahimi\= Expect no match
6925*22dc650dSSadaf Ebrahimi    a:axyz
6926*22dc650dSSadaf EbrahimiNo match
6927*22dc650dSSadaf Ebrahimi    ab:abxyz
6928*22dc650dSSadaf EbrahimiNo match
6929*22dc650dSSadaf Ebrahimi
6930*22dc650dSSadaf Ebrahimi/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
6931*22dc650dSSadaf Ebrahimi    abd
6932*22dc650dSSadaf Ebrahimi 0: abd
6933*22dc650dSSadaf Ebrahimi 1: a
6934*22dc650dSSadaf Ebrahimi    ce
6935*22dc650dSSadaf Ebrahimi 0: ce
6936*22dc650dSSadaf Ebrahimi
6937*22dc650dSSadaf Ebrahimi/^(a.)\g-1Z/
6938*22dc650dSSadaf Ebrahimi    aXaXZ
6939*22dc650dSSadaf Ebrahimi 0: aXaXZ
6940*22dc650dSSadaf Ebrahimi 1: aX
6941*22dc650dSSadaf Ebrahimi
6942*22dc650dSSadaf Ebrahimi/^(a.)\g{-1}Z/
6943*22dc650dSSadaf Ebrahimi    aXaXZ
6944*22dc650dSSadaf Ebrahimi 0: aXaXZ
6945*22dc650dSSadaf Ebrahimi 1: aX
6946*22dc650dSSadaf Ebrahimi
6947*22dc650dSSadaf Ebrahimi/^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
6948*22dc650dSSadaf Ebrahimi    abcd
6949*22dc650dSSadaf Ebrahimi 0: ab
6950*22dc650dSSadaf Ebrahimi
6951*22dc650dSSadaf Ebrahimi/(?<all>(?:(?:a(?&all))|(b))(c?))/
6952*22dc650dSSadaf Ebrahimi    aabc
6953*22dc650dSSadaf Ebrahimi 0: aabc
6954*22dc650dSSadaf Ebrahimi 1: aabc
6955*22dc650dSSadaf Ebrahimi 2: <unset>
6956*22dc650dSSadaf Ebrahimi 3:
6957*22dc650dSSadaf Ebrahimi
6958*22dc650dSSadaf Ebrahimi/(a(b)|(c))(?1)/
6959*22dc650dSSadaf Ebrahimi    abc
6960*22dc650dSSadaf Ebrahimi 0: abc
6961*22dc650dSSadaf Ebrahimi 1: ab
6962*22dc650dSSadaf Ebrahimi 2: b
6963*22dc650dSSadaf Ebrahimi    cab
6964*22dc650dSSadaf Ebrahimi 0: cab
6965*22dc650dSSadaf Ebrahimi 1: c
6966*22dc650dSSadaf Ebrahimi 2: <unset>
6967*22dc650dSSadaf Ebrahimi 3: c
6968*22dc650dSSadaf Ebrahimi
6969*22dc650dSSadaf Ebrahimi/(?1)(a(b)|(c))/
6970*22dc650dSSadaf Ebrahimi    abc
6971*22dc650dSSadaf Ebrahimi 0: abc
6972*22dc650dSSadaf Ebrahimi 1: c
6973*22dc650dSSadaf Ebrahimi 2: <unset>
6974*22dc650dSSadaf Ebrahimi 3: c
6975*22dc650dSSadaf Ebrahimi    cab
6976*22dc650dSSadaf Ebrahimi 0: cab
6977*22dc650dSSadaf Ebrahimi 1: ab
6978*22dc650dSSadaf Ebrahimi 2: b
6979*22dc650dSSadaf Ebrahimi
6980*22dc650dSSadaf Ebrahimi/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
6981*22dc650dSSadaf Ebrahimi  (?(DEFINE)
6982*22dc650dSSadaf Ebrahimi  (?<NAME_PAT>[a-z]+)
6983*22dc650dSSadaf Ebrahimi  (?<ADDRESS_PAT>\d+)
6984*22dc650dSSadaf Ebrahimi  )/x
6985*22dc650dSSadaf Ebrahimi    metcalfe 33
6986*22dc650dSSadaf Ebrahimi 0: metcalfe 33
6987*22dc650dSSadaf Ebrahimi 1: metcalfe
6988*22dc650dSSadaf Ebrahimi 2: 33
6989*22dc650dSSadaf Ebrahimi
6990*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
6991*22dc650dSSadaf Ebrahimi    1.2.3.4
6992*22dc650dSSadaf Ebrahimi 0: 1.2.3.4
6993*22dc650dSSadaf Ebrahimi 1: <unset>
6994*22dc650dSSadaf Ebrahimi 2: .4
6995*22dc650dSSadaf Ebrahimi    131.111.10.206
6996*22dc650dSSadaf Ebrahimi 0: 131.111.10.206
6997*22dc650dSSadaf Ebrahimi 1: <unset>
6998*22dc650dSSadaf Ebrahimi 2: .206
6999*22dc650dSSadaf Ebrahimi    10.0.0.0
7000*22dc650dSSadaf Ebrahimi 0: 10.0.0.0
7001*22dc650dSSadaf Ebrahimi 1: <unset>
7002*22dc650dSSadaf Ebrahimi 2: .0
7003*22dc650dSSadaf Ebrahimi\= Expect no match
7004*22dc650dSSadaf Ebrahimi    10.6
7005*22dc650dSSadaf EbrahimiNo match
7006*22dc650dSSadaf Ebrahimi    455.3.4.5
7007*22dc650dSSadaf EbrahimiNo match
7008*22dc650dSSadaf Ebrahimi
7009*22dc650dSSadaf Ebrahimi/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
7010*22dc650dSSadaf Ebrahimi    1.2.3.4
7011*22dc650dSSadaf Ebrahimi 0: 1.2.3.4
7012*22dc650dSSadaf Ebrahimi 1: .4
7013*22dc650dSSadaf Ebrahimi    131.111.10.206
7014*22dc650dSSadaf Ebrahimi 0: 131.111.10.206
7015*22dc650dSSadaf Ebrahimi 1: .206
7016*22dc650dSSadaf Ebrahimi    10.0.0.0
7017*22dc650dSSadaf Ebrahimi 0: 10.0.0.0
7018*22dc650dSSadaf Ebrahimi 1: .0
7019*22dc650dSSadaf Ebrahimi\= Expect no match
7020*22dc650dSSadaf Ebrahimi    10.6
7021*22dc650dSSadaf EbrahimiNo match
7022*22dc650dSSadaf Ebrahimi    455.3.4.5
7023*22dc650dSSadaf EbrahimiNo match
7024*22dc650dSSadaf Ebrahimi
7025*22dc650dSSadaf Ebrahimi/^(\w++|\s++)*$/
7026*22dc650dSSadaf Ebrahimi    now is the time for all good men to come to the aid of the party
7027*22dc650dSSadaf Ebrahimi 0: now is the time for all good men to come to the aid of the party
7028*22dc650dSSadaf Ebrahimi 1: party
7029*22dc650dSSadaf Ebrahimi\= Expect no match
7030*22dc650dSSadaf Ebrahimi    this is not a line with only words and spaces!
7031*22dc650dSSadaf EbrahimiNo match
7032*22dc650dSSadaf Ebrahimi
7033*22dc650dSSadaf Ebrahimi/(\d++)(\w)/
7034*22dc650dSSadaf Ebrahimi    12345a
7035*22dc650dSSadaf Ebrahimi 0: 12345a
7036*22dc650dSSadaf Ebrahimi 1: 12345
7037*22dc650dSSadaf Ebrahimi 2: a
7038*22dc650dSSadaf Ebrahimi\= Expect no match
7039*22dc650dSSadaf Ebrahimi    12345+
7040*22dc650dSSadaf EbrahimiNo match
7041*22dc650dSSadaf Ebrahimi
7042*22dc650dSSadaf Ebrahimi/a++b/
7043*22dc650dSSadaf Ebrahimi    aaab
7044*22dc650dSSadaf Ebrahimi 0: aaab
7045*22dc650dSSadaf Ebrahimi
7046*22dc650dSSadaf Ebrahimi/(a++b)/
7047*22dc650dSSadaf Ebrahimi    aaab
7048*22dc650dSSadaf Ebrahimi 0: aaab
7049*22dc650dSSadaf Ebrahimi 1: aaab
7050*22dc650dSSadaf Ebrahimi
7051*22dc650dSSadaf Ebrahimi/(a++)b/
7052*22dc650dSSadaf Ebrahimi    aaab
7053*22dc650dSSadaf Ebrahimi 0: aaab
7054*22dc650dSSadaf Ebrahimi 1: aaa
7055*22dc650dSSadaf Ebrahimi
7056*22dc650dSSadaf Ebrahimi/([^()]++|\([^()]*\))+/
7057*22dc650dSSadaf Ebrahimi    ((abc(ade)ufh()()x
7058*22dc650dSSadaf Ebrahimi 0: abc(ade)ufh()()x
7059*22dc650dSSadaf Ebrahimi 1: x
7060*22dc650dSSadaf Ebrahimi
7061*22dc650dSSadaf Ebrahimi/\(([^()]++|\([^()]+\))+\)/
7062*22dc650dSSadaf Ebrahimi    (abc)
7063*22dc650dSSadaf Ebrahimi 0: (abc)
7064*22dc650dSSadaf Ebrahimi 1: abc
7065*22dc650dSSadaf Ebrahimi    (abc(def)xyz)
7066*22dc650dSSadaf Ebrahimi 0: (abc(def)xyz)
7067*22dc650dSSadaf Ebrahimi 1: xyz
7068*22dc650dSSadaf Ebrahimi\= Expect no match
7069*22dc650dSSadaf Ebrahimi    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7070*22dc650dSSadaf EbrahimiNo match
7071*22dc650dSSadaf Ebrahimi
7072*22dc650dSSadaf Ebrahimi/^([^()]|\((?1)*\))*$/
7073*22dc650dSSadaf Ebrahimi    abc
7074*22dc650dSSadaf Ebrahimi 0: abc
7075*22dc650dSSadaf Ebrahimi 1: c
7076*22dc650dSSadaf Ebrahimi    a(b)c
7077*22dc650dSSadaf Ebrahimi 0: a(b)c
7078*22dc650dSSadaf Ebrahimi 1: c
7079*22dc650dSSadaf Ebrahimi    a(b(c))d
7080*22dc650dSSadaf Ebrahimi 0: a(b(c))d
7081*22dc650dSSadaf Ebrahimi 1: d
7082*22dc650dSSadaf Ebrahimi\= Expect no match)
7083*22dc650dSSadaf Ebrahimi    a(b(c)d
7084*22dc650dSSadaf EbrahimiNo match
7085*22dc650dSSadaf Ebrahimi
7086*22dc650dSSadaf Ebrahimi/^>abc>([^()]|\((?1)*\))*<xyz<$/
7087*22dc650dSSadaf Ebrahimi   >abc>123<xyz<
7088*22dc650dSSadaf Ebrahimi 0: >abc>123<xyz<
7089*22dc650dSSadaf Ebrahimi 1: 3
7090*22dc650dSSadaf Ebrahimi   >abc>1(2)3<xyz<
7091*22dc650dSSadaf Ebrahimi 0: >abc>1(2)3<xyz<
7092*22dc650dSSadaf Ebrahimi 1: 3
7093*22dc650dSSadaf Ebrahimi   >abc>(1(2)3)<xyz<
7094*22dc650dSSadaf Ebrahimi 0: >abc>(1(2)3)<xyz<
7095*22dc650dSSadaf Ebrahimi 1: (1(2)3)
7096*22dc650dSSadaf Ebrahimi
7097*22dc650dSSadaf Ebrahimi/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
7098*22dc650dSSadaf Ebrahimi    1221
7099*22dc650dSSadaf Ebrahimi 0: 1221
7100*22dc650dSSadaf Ebrahimi 1: 1221
7101*22dc650dSSadaf Ebrahimi 2: 1
7102*22dc650dSSadaf Ebrahimi    Satanoscillatemymetallicsonatas
7103*22dc650dSSadaf Ebrahimi 0: Satanoscillatemymetallicsonatas
7104*22dc650dSSadaf Ebrahimi 1: <unset>
7105*22dc650dSSadaf Ebrahimi 2: <unset>
7106*22dc650dSSadaf Ebrahimi 3: Satanoscillatemymetallicsonatas
7107*22dc650dSSadaf Ebrahimi 4: S
7108*22dc650dSSadaf Ebrahimi    AmanaplanacanalPanama
7109*22dc650dSSadaf Ebrahimi 0: AmanaplanacanalPanama
7110*22dc650dSSadaf Ebrahimi 1: <unset>
7111*22dc650dSSadaf Ebrahimi 2: <unset>
7112*22dc650dSSadaf Ebrahimi 3: AmanaplanacanalPanama
7113*22dc650dSSadaf Ebrahimi 4: A
7114*22dc650dSSadaf Ebrahimi    AblewasIereIsawElba
7115*22dc650dSSadaf Ebrahimi 0: AblewasIereIsawElba
7116*22dc650dSSadaf Ebrahimi 1: <unset>
7117*22dc650dSSadaf Ebrahimi 2: <unset>
7118*22dc650dSSadaf Ebrahimi 3: AblewasIereIsawElba
7119*22dc650dSSadaf Ebrahimi 4: A
7120*22dc650dSSadaf Ebrahimi\= Expect no match
7121*22dc650dSSadaf Ebrahimi    Thequickbrownfox
7122*22dc650dSSadaf EbrahimiNo match
7123*22dc650dSSadaf Ebrahimi
7124*22dc650dSSadaf Ebrahimi/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
7125*22dc650dSSadaf Ebrahimi    12
7126*22dc650dSSadaf Ebrahimi 0: 12
7127*22dc650dSSadaf Ebrahimi 1: 12
7128*22dc650dSSadaf Ebrahimi    (((2+2)*-3)-7)
7129*22dc650dSSadaf Ebrahimi 0: (((2+2)*-3)-7)
7130*22dc650dSSadaf Ebrahimi 1: (((2+2)*-3)-7)
7131*22dc650dSSadaf Ebrahimi 2: -
7132*22dc650dSSadaf Ebrahimi    -12
7133*22dc650dSSadaf Ebrahimi 0: -12
7134*22dc650dSSadaf Ebrahimi 1: -12
7135*22dc650dSSadaf Ebrahimi\= Expect no match
7136*22dc650dSSadaf Ebrahimi    ((2+2)*-3)-7)
7137*22dc650dSSadaf EbrahimiNo match
7138*22dc650dSSadaf Ebrahimi
7139*22dc650dSSadaf Ebrahimi/^(x(y|(?1){2})z)/
7140*22dc650dSSadaf Ebrahimi    xyz
7141*22dc650dSSadaf Ebrahimi 0: xyz
7142*22dc650dSSadaf Ebrahimi 1: xyz
7143*22dc650dSSadaf Ebrahimi 2: y
7144*22dc650dSSadaf Ebrahimi    xxyzxyzz
7145*22dc650dSSadaf Ebrahimi 0: xxyzxyzz
7146*22dc650dSSadaf Ebrahimi 1: xxyzxyzz
7147*22dc650dSSadaf Ebrahimi 2: xyzxyz
7148*22dc650dSSadaf Ebrahimi\= Expect no match
7149*22dc650dSSadaf Ebrahimi    xxyzz
7150*22dc650dSSadaf EbrahimiNo match
7151*22dc650dSSadaf Ebrahimi    xxyzxyzxyzz
7152*22dc650dSSadaf EbrahimiNo match
7153*22dc650dSSadaf Ebrahimi
7154*22dc650dSSadaf Ebrahimi/((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
7155*22dc650dSSadaf Ebrahimi    <>
7156*22dc650dSSadaf Ebrahimi 0: <>
7157*22dc650dSSadaf Ebrahimi 1: <>
7158*22dc650dSSadaf Ebrahimi 2: <>
7159*22dc650dSSadaf Ebrahimi    <abcd>
7160*22dc650dSSadaf Ebrahimi 0: <abcd>
7161*22dc650dSSadaf Ebrahimi 1: <abcd>
7162*22dc650dSSadaf Ebrahimi 2: <abcd>
7163*22dc650dSSadaf Ebrahimi    <abc <123> hij>
7164*22dc650dSSadaf Ebrahimi 0: <abc <123> hij>
7165*22dc650dSSadaf Ebrahimi 1: <abc <123> hij>
7166*22dc650dSSadaf Ebrahimi 2: <abc <123> hij>
7167*22dc650dSSadaf Ebrahimi    <abc <def> hij>
7168*22dc650dSSadaf Ebrahimi 0: <def>
7169*22dc650dSSadaf Ebrahimi 1: <def>
7170*22dc650dSSadaf Ebrahimi 2: <def>
7171*22dc650dSSadaf Ebrahimi    <abc<>def>
7172*22dc650dSSadaf Ebrahimi 0: <abc<>def>
7173*22dc650dSSadaf Ebrahimi 1: <abc<>def>
7174*22dc650dSSadaf Ebrahimi 2: <abc<>def>
7175*22dc650dSSadaf Ebrahimi    <abc<>
7176*22dc650dSSadaf Ebrahimi 0: <>
7177*22dc650dSSadaf Ebrahimi 1: <>
7178*22dc650dSSadaf Ebrahimi 2: <>
7179*22dc650dSSadaf Ebrahimi\= Expect no match
7180*22dc650dSSadaf Ebrahimi    <abc
7181*22dc650dSSadaf EbrahimiNo match
7182*22dc650dSSadaf Ebrahimi
7183*22dc650dSSadaf Ebrahimi/^a+(*FAIL)/
7184*22dc650dSSadaf Ebrahimi\= Expect no match
7185*22dc650dSSadaf Ebrahimi    aaaaaa
7186*22dc650dSSadaf EbrahimiNo match
7187*22dc650dSSadaf Ebrahimi
7188*22dc650dSSadaf Ebrahimi/a+b?c+(*FAIL)/
7189*22dc650dSSadaf Ebrahimi\= Expect no match
7190*22dc650dSSadaf Ebrahimi    aaabccc
7191*22dc650dSSadaf EbrahimiNo match
7192*22dc650dSSadaf Ebrahimi
7193*22dc650dSSadaf Ebrahimi/a+b?(*PRUNE)c+(*FAIL)/
7194*22dc650dSSadaf Ebrahimi\= Expect no match
7195*22dc650dSSadaf Ebrahimi    aaabccc
7196*22dc650dSSadaf EbrahimiNo match
7197*22dc650dSSadaf Ebrahimi
7198*22dc650dSSadaf Ebrahimi/a+b?(*COMMIT)c+(*FAIL)/
7199*22dc650dSSadaf Ebrahimi\= Expect no match
7200*22dc650dSSadaf Ebrahimi    aaabccc
7201*22dc650dSSadaf EbrahimiNo match
7202*22dc650dSSadaf Ebrahimi
7203*22dc650dSSadaf Ebrahimi/a+b?(*SKIP)c+(*FAIL)/
7204*22dc650dSSadaf Ebrahimi\= Expect no match
7205*22dc650dSSadaf Ebrahimi    aaabcccaaabccc
7206*22dc650dSSadaf EbrahimiNo match
7207*22dc650dSSadaf Ebrahimi
7208*22dc650dSSadaf Ebrahimi/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7209*22dc650dSSadaf Ebrahimi    aaaxxxxxx
7210*22dc650dSSadaf Ebrahimi 0: aaaxxxxxx
7211*22dc650dSSadaf Ebrahimi    aaa++++++
7212*22dc650dSSadaf Ebrahimi 0: aaa
7213*22dc650dSSadaf Ebrahimi    bbbxxxxx
7214*22dc650dSSadaf Ebrahimi 0: bbbxxxxx
7215*22dc650dSSadaf Ebrahimi    bbb+++++
7216*22dc650dSSadaf Ebrahimi 0: bbb
7217*22dc650dSSadaf Ebrahimi    cccxxxx
7218*22dc650dSSadaf Ebrahimi 0: cccxxxx
7219*22dc650dSSadaf Ebrahimi    ccc++++
7220*22dc650dSSadaf Ebrahimi 0: ccc
7221*22dc650dSSadaf Ebrahimi    dddddddd
7222*22dc650dSSadaf Ebrahimi 0: ddd
7223*22dc650dSSadaf Ebrahimi
7224*22dc650dSSadaf Ebrahimi/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
7225*22dc650dSSadaf Ebrahimi    aaaxxxxxx
7226*22dc650dSSadaf Ebrahimi 0: aaaxxxxxx
7227*22dc650dSSadaf Ebrahimi 1: aaaxxxxxx
7228*22dc650dSSadaf Ebrahimi    aaa++++++
7229*22dc650dSSadaf Ebrahimi 0: aaa
7230*22dc650dSSadaf Ebrahimi 1: aaa
7231*22dc650dSSadaf Ebrahimi    bbbxxxxx
7232*22dc650dSSadaf Ebrahimi 0: bbbxxxxx
7233*22dc650dSSadaf Ebrahimi 1: bbbxxxxx
7234*22dc650dSSadaf Ebrahimi    bbb+++++
7235*22dc650dSSadaf Ebrahimi 0: bbb
7236*22dc650dSSadaf Ebrahimi 1: bbb
7237*22dc650dSSadaf Ebrahimi    cccxxxx
7238*22dc650dSSadaf Ebrahimi 0: cccxxxx
7239*22dc650dSSadaf Ebrahimi 1: cccxxxx
7240*22dc650dSSadaf Ebrahimi    ccc++++
7241*22dc650dSSadaf Ebrahimi 0: ccc
7242*22dc650dSSadaf Ebrahimi 1: ccc
7243*22dc650dSSadaf Ebrahimi    dddddddd
7244*22dc650dSSadaf Ebrahimi 0: ddd
7245*22dc650dSSadaf Ebrahimi 1: ddd
7246*22dc650dSSadaf Ebrahimi
7247*22dc650dSSadaf Ebrahimi/a+b?(*THEN)c+(*FAIL)/
7248*22dc650dSSadaf Ebrahimi\= Expect no match
7249*22dc650dSSadaf Ebrahimi    aaabccc
7250*22dc650dSSadaf EbrahimiNo match
7251*22dc650dSSadaf Ebrahimi
7252*22dc650dSSadaf Ebrahimi/(A (A|B(*ACCEPT)|C) D)(E)/x
7253*22dc650dSSadaf Ebrahimi    AB
7254*22dc650dSSadaf Ebrahimi 0: AB
7255*22dc650dSSadaf Ebrahimi 1: AB
7256*22dc650dSSadaf Ebrahimi 2: B
7257*22dc650dSSadaf Ebrahimi    ABX
7258*22dc650dSSadaf Ebrahimi 0: AB
7259*22dc650dSSadaf Ebrahimi 1: AB
7260*22dc650dSSadaf Ebrahimi 2: B
7261*22dc650dSSadaf Ebrahimi    AADE
7262*22dc650dSSadaf Ebrahimi 0: AADE
7263*22dc650dSSadaf Ebrahimi 1: AAD
7264*22dc650dSSadaf Ebrahimi 2: A
7265*22dc650dSSadaf Ebrahimi 3: E
7266*22dc650dSSadaf Ebrahimi    ACDE
7267*22dc650dSSadaf Ebrahimi 0: ACDE
7268*22dc650dSSadaf Ebrahimi 1: ACD
7269*22dc650dSSadaf Ebrahimi 2: C
7270*22dc650dSSadaf Ebrahimi 3: E
7271*22dc650dSSadaf Ebrahimi\= Expect no match
7272*22dc650dSSadaf Ebrahimi    AD
7273*22dc650dSSadaf EbrahimiNo match
7274*22dc650dSSadaf Ebrahimi
7275*22dc650dSSadaf Ebrahimi/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
7276*22dc650dSSadaf Ebrahimi    1221
7277*22dc650dSSadaf Ebrahimi 0: 1221
7278*22dc650dSSadaf Ebrahimi 1: 1221
7279*22dc650dSSadaf Ebrahimi 2: 1
7280*22dc650dSSadaf Ebrahimi    Satan, oscillate my metallic sonatas!
7281*22dc650dSSadaf Ebrahimi 0: Satan, oscillate my metallic sonatas!
7282*22dc650dSSadaf Ebrahimi 1: <unset>
7283*22dc650dSSadaf Ebrahimi 2: <unset>
7284*22dc650dSSadaf Ebrahimi 3: Satan, oscillate my metallic sonatas
7285*22dc650dSSadaf Ebrahimi 4: S
7286*22dc650dSSadaf Ebrahimi    A man, a plan, a canal: Panama!
7287*22dc650dSSadaf Ebrahimi 0: A man, a plan, a canal: Panama!
7288*22dc650dSSadaf Ebrahimi 1: <unset>
7289*22dc650dSSadaf Ebrahimi 2: <unset>
7290*22dc650dSSadaf Ebrahimi 3: A man, a plan, a canal: Panama
7291*22dc650dSSadaf Ebrahimi 4: A
7292*22dc650dSSadaf Ebrahimi    Able was I ere I saw Elba.
7293*22dc650dSSadaf Ebrahimi 0: Able was I ere I saw Elba.
7294*22dc650dSSadaf Ebrahimi 1: <unset>
7295*22dc650dSSadaf Ebrahimi 2: <unset>
7296*22dc650dSSadaf Ebrahimi 3: Able was I ere I saw Elba
7297*22dc650dSSadaf Ebrahimi 4: A
7298*22dc650dSSadaf Ebrahimi\= Expect no match
7299*22dc650dSSadaf Ebrahimi    The quick brown fox
7300*22dc650dSSadaf EbrahimiNo match
7301*22dc650dSSadaf Ebrahimi
7302*22dc650dSSadaf Ebrahimi/^((.)(?1)\2|.)$/
7303*22dc650dSSadaf Ebrahimi    a
7304*22dc650dSSadaf Ebrahimi 0: a
7305*22dc650dSSadaf Ebrahimi 1: a
7306*22dc650dSSadaf Ebrahimi    aba
7307*22dc650dSSadaf Ebrahimi 0: aba
7308*22dc650dSSadaf Ebrahimi 1: aba
7309*22dc650dSSadaf Ebrahimi 2: a
7310*22dc650dSSadaf Ebrahimi    aabaa
7311*22dc650dSSadaf Ebrahimi 0: aabaa
7312*22dc650dSSadaf Ebrahimi 1: aabaa
7313*22dc650dSSadaf Ebrahimi 2: a
7314*22dc650dSSadaf Ebrahimi    abcdcba
7315*22dc650dSSadaf Ebrahimi 0: abcdcba
7316*22dc650dSSadaf Ebrahimi 1: abcdcba
7317*22dc650dSSadaf Ebrahimi 2: a
7318*22dc650dSSadaf Ebrahimi    pqaabaaqp
7319*22dc650dSSadaf Ebrahimi 0: pqaabaaqp
7320*22dc650dSSadaf Ebrahimi 1: pqaabaaqp
7321*22dc650dSSadaf Ebrahimi 2: p
7322*22dc650dSSadaf Ebrahimi    ablewasiereisawelba
7323*22dc650dSSadaf Ebrahimi 0: ablewasiereisawelba
7324*22dc650dSSadaf Ebrahimi 1: ablewasiereisawelba
7325*22dc650dSSadaf Ebrahimi 2: a
7326*22dc650dSSadaf Ebrahimi\= Expect no match
7327*22dc650dSSadaf Ebrahimi    rhubarb
7328*22dc650dSSadaf EbrahimiNo match
7329*22dc650dSSadaf Ebrahimi    the quick brown fox
7330*22dc650dSSadaf EbrahimiNo match
7331*22dc650dSSadaf Ebrahimi
7332*22dc650dSSadaf Ebrahimi/(a)(?<=b(?1))/
7333*22dc650dSSadaf Ebrahimi    baz
7334*22dc650dSSadaf Ebrahimi 0: a
7335*22dc650dSSadaf Ebrahimi 1: a
7336*22dc650dSSadaf Ebrahimi\= Expect no match
7337*22dc650dSSadaf Ebrahimi    caz
7338*22dc650dSSadaf EbrahimiNo match
7339*22dc650dSSadaf Ebrahimi
7340*22dc650dSSadaf Ebrahimi/(?<=b(?1))(a)/
7341*22dc650dSSadaf Ebrahimi    zbaaz
7342*22dc650dSSadaf Ebrahimi 0: a
7343*22dc650dSSadaf Ebrahimi 1: a
7344*22dc650dSSadaf Ebrahimi\= Expect no match
7345*22dc650dSSadaf Ebrahimi    aaa
7346*22dc650dSSadaf EbrahimiNo match
7347*22dc650dSSadaf Ebrahimi
7348*22dc650dSSadaf Ebrahimi/(?<X>a)(?<=b(?&X))/
7349*22dc650dSSadaf Ebrahimi    baz
7350*22dc650dSSadaf Ebrahimi 0: a
7351*22dc650dSSadaf Ebrahimi 1: a
7352*22dc650dSSadaf Ebrahimi
7353*22dc650dSSadaf Ebrahimi/^(?|(abc)|(def))\1/
7354*22dc650dSSadaf Ebrahimi    abcabc
7355*22dc650dSSadaf Ebrahimi 0: abcabc
7356*22dc650dSSadaf Ebrahimi 1: abc
7357*22dc650dSSadaf Ebrahimi    defdef
7358*22dc650dSSadaf Ebrahimi 0: defdef
7359*22dc650dSSadaf Ebrahimi 1: def
7360*22dc650dSSadaf Ebrahimi\= Expect no match
7361*22dc650dSSadaf Ebrahimi    abcdef
7362*22dc650dSSadaf EbrahimiNo match
7363*22dc650dSSadaf Ebrahimi    defabc
7364*22dc650dSSadaf EbrahimiNo match
7365*22dc650dSSadaf Ebrahimi
7366*22dc650dSSadaf Ebrahimi/^(?|(abc)|(def))(?1)/
7367*22dc650dSSadaf Ebrahimi    abcabc
7368*22dc650dSSadaf Ebrahimi 0: abcabc
7369*22dc650dSSadaf Ebrahimi 1: abc
7370*22dc650dSSadaf Ebrahimi    defabc
7371*22dc650dSSadaf Ebrahimi 0: defabc
7372*22dc650dSSadaf Ebrahimi 1: def
7373*22dc650dSSadaf Ebrahimi\= Expect no match
7374*22dc650dSSadaf Ebrahimi    defdef
7375*22dc650dSSadaf EbrahimiNo match
7376*22dc650dSSadaf Ebrahimi    abcdef
7377*22dc650dSSadaf EbrahimiNo match
7378*22dc650dSSadaf Ebrahimi
7379*22dc650dSSadaf Ebrahimi/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/x,dupnames
7380*22dc650dSSadaf Ebrahimi    a\"aaaaa
7381*22dc650dSSadaf Ebrahimi 0: a"aaaaa
7382*22dc650dSSadaf Ebrahimi 1: "
7383*22dc650dSSadaf Ebrahimi 2: <unset>
7384*22dc650dSSadaf Ebrahimi 3: "
7385*22dc650dSSadaf Ebrahimi    b\"aaaaa
7386*22dc650dSSadaf Ebrahimi 0: b"aaaaa
7387*22dc650dSSadaf Ebrahimi 1: <unset>
7388*22dc650dSSadaf Ebrahimi 2: <unset>
7389*22dc650dSSadaf Ebrahimi 3: <unset>
7390*22dc650dSSadaf Ebrahimi 4: "
7391*22dc650dSSadaf Ebrahimi 5: <unset>
7392*22dc650dSSadaf Ebrahimi 6: "
7393*22dc650dSSadaf Ebrahimi\= Expect no match
7394*22dc650dSSadaf Ebrahimi    b\"11111
7395*22dc650dSSadaf EbrahimiNo match
7396*22dc650dSSadaf Ebrahimi
7397*22dc650dSSadaf Ebrahimi/(?:(?1)|B)(A(*F)|C)/
7398*22dc650dSSadaf Ebrahimi    ABCD
7399*22dc650dSSadaf Ebrahimi 0: BC
7400*22dc650dSSadaf Ebrahimi 1: C
7401*22dc650dSSadaf Ebrahimi    CCD
7402*22dc650dSSadaf Ebrahimi 0: CC
7403*22dc650dSSadaf Ebrahimi 1: C
7404*22dc650dSSadaf Ebrahimi\= Expect no match
7405*22dc650dSSadaf Ebrahimi    CAD
7406*22dc650dSSadaf EbrahimiNo match
7407*22dc650dSSadaf Ebrahimi
7408*22dc650dSSadaf Ebrahimi/^(?:(?1)|B)(A(*F)|C)/
7409*22dc650dSSadaf Ebrahimi    CCD
7410*22dc650dSSadaf Ebrahimi 0: CC
7411*22dc650dSSadaf Ebrahimi 1: C
7412*22dc650dSSadaf Ebrahimi    BCD
7413*22dc650dSSadaf Ebrahimi 0: BC
7414*22dc650dSSadaf Ebrahimi 1: C
7415*22dc650dSSadaf Ebrahimi\= Expect no match
7416*22dc650dSSadaf Ebrahimi    ABCD
7417*22dc650dSSadaf EbrahimiNo match
7418*22dc650dSSadaf Ebrahimi    CAD
7419*22dc650dSSadaf EbrahimiNo match
7420*22dc650dSSadaf Ebrahimi    BAD
7421*22dc650dSSadaf EbrahimiNo match
7422*22dc650dSSadaf Ebrahimi
7423*22dc650dSSadaf Ebrahimi/(?:(?1)|B)(A(*ACCEPT)XX|C)D/
7424*22dc650dSSadaf Ebrahimi    AAD
7425*22dc650dSSadaf Ebrahimi 0: AA
7426*22dc650dSSadaf Ebrahimi 1: A
7427*22dc650dSSadaf Ebrahimi    ACD
7428*22dc650dSSadaf Ebrahimi 0: ACD
7429*22dc650dSSadaf Ebrahimi 1: C
7430*22dc650dSSadaf Ebrahimi    BAD
7431*22dc650dSSadaf Ebrahimi 0: BA
7432*22dc650dSSadaf Ebrahimi 1: A
7433*22dc650dSSadaf Ebrahimi    BCD
7434*22dc650dSSadaf Ebrahimi 0: BCD
7435*22dc650dSSadaf Ebrahimi 1: C
7436*22dc650dSSadaf Ebrahimi    BAX
7437*22dc650dSSadaf Ebrahimi 0: BA
7438*22dc650dSSadaf Ebrahimi 1: A
7439*22dc650dSSadaf Ebrahimi\= Expect no match
7440*22dc650dSSadaf Ebrahimi    ACX
7441*22dc650dSSadaf EbrahimiNo match
7442*22dc650dSSadaf Ebrahimi    ABC
7443*22dc650dSSadaf EbrahimiNo match
7444*22dc650dSSadaf Ebrahimi
7445*22dc650dSSadaf Ebrahimi/(?(DEFINE)(A))B(?1)C/
7446*22dc650dSSadaf Ebrahimi    BAC
7447*22dc650dSSadaf Ebrahimi 0: BAC
7448*22dc650dSSadaf Ebrahimi
7449*22dc650dSSadaf Ebrahimi/(?(DEFINE)((A)\2))B(?1)C/
7450*22dc650dSSadaf Ebrahimi    BAAC
7451*22dc650dSSadaf Ebrahimi 0: BAAC
7452*22dc650dSSadaf Ebrahimi
7453*22dc650dSSadaf Ebrahimi/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
7454*22dc650dSSadaf Ebrahimi    (ab(cd)ef)
7455*22dc650dSSadaf Ebrahimi 0: (ab(cd)ef)
7456*22dc650dSSadaf Ebrahimi 1: (ab(cd)ef)
7457*22dc650dSSadaf Ebrahimi 2: ef
7458*22dc650dSSadaf Ebrahimi
7459*22dc650dSSadaf Ebrahimi/^(?=a(*SKIP)b|ac)/
7460*22dc650dSSadaf Ebrahimi\= Expect no match
7461*22dc650dSSadaf Ebrahimi    ac
7462*22dc650dSSadaf EbrahimiNo match
7463*22dc650dSSadaf Ebrahimi
7464*22dc650dSSadaf Ebrahimi/^(?=a(*PRUNE)b)/
7465*22dc650dSSadaf Ebrahimi    ab
7466*22dc650dSSadaf Ebrahimi 0:
7467*22dc650dSSadaf Ebrahimi\= Expect no match
7468*22dc650dSSadaf Ebrahimi    ac
7469*22dc650dSSadaf EbrahimiNo match
7470*22dc650dSSadaf Ebrahimi
7471*22dc650dSSadaf Ebrahimi/^(?=a(*ACCEPT)b)/
7472*22dc650dSSadaf Ebrahimi    ac
7473*22dc650dSSadaf Ebrahimi 0:
7474*22dc650dSSadaf Ebrahimi
7475*22dc650dSSadaf Ebrahimi/(?>a\Kb)/
7476*22dc650dSSadaf Ebrahimi    ab
7477*22dc650dSSadaf Ebrahimi 0: b
7478*22dc650dSSadaf Ebrahimi
7479*22dc650dSSadaf Ebrahimi/((?>a\Kb))/
7480*22dc650dSSadaf Ebrahimi    ab
7481*22dc650dSSadaf Ebrahimi 0: b
7482*22dc650dSSadaf Ebrahimi 1: ab
7483*22dc650dSSadaf Ebrahimi
7484*22dc650dSSadaf Ebrahimi/(a\Kb)/
7485*22dc650dSSadaf Ebrahimi    ab
7486*22dc650dSSadaf Ebrahimi 0: b
7487*22dc650dSSadaf Ebrahimi 1: ab
7488*22dc650dSSadaf Ebrahimi
7489*22dc650dSSadaf Ebrahimi/^a\Kcz|ac/
7490*22dc650dSSadaf Ebrahimi    ac
7491*22dc650dSSadaf Ebrahimi 0: ac
7492*22dc650dSSadaf Ebrahimi
7493*22dc650dSSadaf Ebrahimi/(?>a\Kbz|ab)/
7494*22dc650dSSadaf Ebrahimi    ab
7495*22dc650dSSadaf Ebrahimi 0: ab
7496*22dc650dSSadaf Ebrahimi
7497*22dc650dSSadaf Ebrahimi/^(?&t)(?(DEFINE)(?<t>a\Kb))$/
7498*22dc650dSSadaf Ebrahimi    ab
7499*22dc650dSSadaf Ebrahimi 0: b
7500*22dc650dSSadaf Ebrahimi
7501*22dc650dSSadaf Ebrahimi/^([^()]|\((?1)*\))*$/
7502*22dc650dSSadaf Ebrahimi    a(b)c
7503*22dc650dSSadaf Ebrahimi 0: a(b)c
7504*22dc650dSSadaf Ebrahimi 1: c
7505*22dc650dSSadaf Ebrahimi    a(b(c)d)e
7506*22dc650dSSadaf Ebrahimi 0: a(b(c)d)e
7507*22dc650dSSadaf Ebrahimi 1: e
7508*22dc650dSSadaf Ebrahimi
7509*22dc650dSSadaf Ebrahimi/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
7510*22dc650dSSadaf Ebrahimi    0
7511*22dc650dSSadaf Ebrahimi 0: 0
7512*22dc650dSSadaf Ebrahimi 1: 0
7513*22dc650dSSadaf Ebrahimi    00
7514*22dc650dSSadaf Ebrahimi 0: 00
7515*22dc650dSSadaf Ebrahimi 1: 00
7516*22dc650dSSadaf Ebrahimi 2: 0
7517*22dc650dSSadaf Ebrahimi    0000
7518*22dc650dSSadaf Ebrahimi 0: 0000
7519*22dc650dSSadaf Ebrahimi 1: 0000
7520*22dc650dSSadaf Ebrahimi 2: 0
7521*22dc650dSSadaf Ebrahimi
7522*22dc650dSSadaf Ebrahimi/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
7523*22dc650dSSadaf Ebrahimi    0
7524*22dc650dSSadaf Ebrahimi 0: 0
7525*22dc650dSSadaf Ebrahimi 1: 0
7526*22dc650dSSadaf Ebrahimi 2: 0
7527*22dc650dSSadaf Ebrahimi    00
7528*22dc650dSSadaf Ebrahimi 0: 0
7529*22dc650dSSadaf Ebrahimi 1: 0
7530*22dc650dSSadaf Ebrahimi 2: 0
7531*22dc650dSSadaf Ebrahimi    0000
7532*22dc650dSSadaf Ebrahimi 0: 0
7533*22dc650dSSadaf Ebrahimi 1: 0
7534*22dc650dSSadaf Ebrahimi 2: 0
7535*22dc650dSSadaf Ebrahimi
7536*22dc650dSSadaf Ebrahimi# This one does fail, as expected, in Perl. It needs the complex item at the
7537*22dc650dSSadaf Ebrahimi# end of the pattern. A single letter instead of (B|D) makes it not fail, which
7538*22dc650dSSadaf Ebrahimi# I think is a Perl bug.
7539*22dc650dSSadaf Ebrahimi
7540*22dc650dSSadaf Ebrahimi/A(*COMMIT)(B|D)/
7541*22dc650dSSadaf Ebrahimi\= Expect no match
7542*22dc650dSSadaf Ebrahimi    ACABX
7543*22dc650dSSadaf EbrahimiNo match
7544*22dc650dSSadaf Ebrahimi
7545*22dc650dSSadaf Ebrahimi# Check the use of names for failure
7546*22dc650dSSadaf Ebrahimi
7547*22dc650dSSadaf Ebrahimi/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
7548*22dc650dSSadaf Ebrahimi\= Expect no match
7549*22dc650dSSadaf Ebrahimi    AC
7550*22dc650dSSadaf EbrahimiNo match, mark = A
7551*22dc650dSSadaf Ebrahimi    CB
7552*22dc650dSSadaf EbrahimiNo match, mark = B
7553*22dc650dSSadaf Ebrahimi
7554*22dc650dSSadaf Ebrahimi/(*MARK:A)(*SKIP:B)(C|X)/mark
7555*22dc650dSSadaf Ebrahimi    C
7556*22dc650dSSadaf Ebrahimi 0: C
7557*22dc650dSSadaf Ebrahimi 1: C
7558*22dc650dSSadaf EbrahimiMK: A
7559*22dc650dSSadaf Ebrahimi\= Expect no match
7560*22dc650dSSadaf Ebrahimi    D
7561*22dc650dSSadaf EbrahimiNo match, mark = A
7562*22dc650dSSadaf Ebrahimi
7563*22dc650dSSadaf Ebrahimi/^(A(*THEN:A)B|C(*THEN:B)D)/mark
7564*22dc650dSSadaf Ebrahimi\= Expect no match
7565*22dc650dSSadaf Ebrahimi    CB
7566*22dc650dSSadaf EbrahimiNo match, mark = B
7567*22dc650dSSadaf Ebrahimi
7568*22dc650dSSadaf Ebrahimi/^(?:A(*THEN:A)B|C(*THEN:B)D)/mark
7569*22dc650dSSadaf Ebrahimi\= Expect no match
7570*22dc650dSSadaf Ebrahimi    CB
7571*22dc650dSSadaf EbrahimiNo match, mark = B
7572*22dc650dSSadaf Ebrahimi
7573*22dc650dSSadaf Ebrahimi/^(?>A(*THEN:A)B|C(*THEN:B)D)/mark
7574*22dc650dSSadaf Ebrahimi\= Expect no match
7575*22dc650dSSadaf Ebrahimi    CB
7576*22dc650dSSadaf EbrahimiNo match, mark = B
7577*22dc650dSSadaf Ebrahimi
7578*22dc650dSSadaf Ebrahimi# This should succeed, as the skip causes bump to offset 1 (the mark). Note
7579*22dc650dSSadaf Ebrahimi# that we have to have something complicated such as (B|Z) at the end because,
7580*22dc650dSSadaf Ebrahimi# for Perl, a simple character somehow causes an unwanted optimization to mess
7581*22dc650dSSadaf Ebrahimi# with the handling of backtracking verbs.
7582*22dc650dSSadaf Ebrahimi
7583*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/x,mark
7584*22dc650dSSadaf Ebrahimi    AAAC
7585*22dc650dSSadaf Ebrahimi 0: AC
7586*22dc650dSSadaf Ebrahimi
7587*22dc650dSSadaf Ebrahimi# Test skipping over a non-matching mark.
7588*22dc650dSSadaf Ebrahimi
7589*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/x,mark
7590*22dc650dSSadaf Ebrahimi    AAAC
7591*22dc650dSSadaf Ebrahimi 0: AC
7592*22dc650dSSadaf Ebrahimi
7593*22dc650dSSadaf Ebrahimi# Check shorthand for MARK.
7594*22dc650dSSadaf Ebrahimi
7595*22dc650dSSadaf Ebrahimi/A(*:A)A+(*SKIP:A)(B|Z) | AC/x,mark
7596*22dc650dSSadaf Ebrahimi    AAAC
7597*22dc650dSSadaf Ebrahimi 0: AC
7598*22dc650dSSadaf Ebrahimi
7599*22dc650dSSadaf Ebrahimi/(*:A)A+(*SKIP:A)(B|Z)/mark
7600*22dc650dSSadaf Ebrahimi\= Expect no match
7601*22dc650dSSadaf Ebrahimi    AAAC
7602*22dc650dSSadaf EbrahimiNo match, mark = A
7603*22dc650dSSadaf Ebrahimi
7604*22dc650dSSadaf Ebrahimi# This should succeed, as a non-existent skip name disables the skip.
7605*22dc650dSSadaf Ebrahimi
7606*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
7607*22dc650dSSadaf Ebrahimi    AAAC
7608*22dc650dSSadaf Ebrahimi 0: AC
7609*22dc650dSSadaf Ebrahimi
7610*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/x,mark
7611*22dc650dSSadaf Ebrahimi    AAAC
7612*22dc650dSSadaf Ebrahimi 0: AC
7613*22dc650dSSadaf EbrahimiMK: B
7614*22dc650dSSadaf Ebrahimi
7615*22dc650dSSadaf Ebrahimi# COMMIT at the start of a pattern should act like an anchor. Again, however,
7616*22dc650dSSadaf Ebrahimi# we need the complication for Perl.
7617*22dc650dSSadaf Ebrahimi
7618*22dc650dSSadaf Ebrahimi/(*COMMIT)(A|P)(B|P)(C|P)/
7619*22dc650dSSadaf Ebrahimi    ABCDEFG
7620*22dc650dSSadaf Ebrahimi 0: ABC
7621*22dc650dSSadaf Ebrahimi 1: A
7622*22dc650dSSadaf Ebrahimi 2: B
7623*22dc650dSSadaf Ebrahimi 3: C
7624*22dc650dSSadaf Ebrahimi\= Expect no match
7625*22dc650dSSadaf Ebrahimi    DEFGABC
7626*22dc650dSSadaf EbrahimiNo match
7627*22dc650dSSadaf Ebrahimi
7628*22dc650dSSadaf Ebrahimi# COMMIT inside an atomic group can't stop backtracking over the group.
7629*22dc650dSSadaf Ebrahimi
7630*22dc650dSSadaf Ebrahimi/(\w+)(?>b(*COMMIT))\w{2}/
7631*22dc650dSSadaf Ebrahimi    abbb
7632*22dc650dSSadaf Ebrahimi 0: abbb
7633*22dc650dSSadaf Ebrahimi 1: a
7634*22dc650dSSadaf Ebrahimi
7635*22dc650dSSadaf Ebrahimi/(\w+)b(*COMMIT)\w{2}/
7636*22dc650dSSadaf Ebrahimi\= Expect no match
7637*22dc650dSSadaf Ebrahimi    abbb
7638*22dc650dSSadaf EbrahimiNo match
7639*22dc650dSSadaf Ebrahimi
7640*22dc650dSSadaf Ebrahimi# Check opening parens in comment when seeking forward reference.
7641*22dc650dSSadaf Ebrahimi
7642*22dc650dSSadaf Ebrahimi/(?&t)(?#()(?(DEFINE)(?<t>a))/
7643*22dc650dSSadaf Ebrahimi    bac
7644*22dc650dSSadaf Ebrahimi 0: a
7645*22dc650dSSadaf Ebrahimi
7646*22dc650dSSadaf Ebrahimi# COMMIT should override THEN.
7647*22dc650dSSadaf Ebrahimi
7648*22dc650dSSadaf Ebrahimi/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
7649*22dc650dSSadaf Ebrahimi\= Expect no match
7650*22dc650dSSadaf Ebrahimi  yes
7651*22dc650dSSadaf EbrahimiNo match
7652*22dc650dSSadaf Ebrahimi
7653*22dc650dSSadaf Ebrahimi/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
7654*22dc650dSSadaf Ebrahimi\= Expect no match
7655*22dc650dSSadaf Ebrahimi  yes
7656*22dc650dSSadaf EbrahimiNo match
7657*22dc650dSSadaf Ebrahimi
7658*22dc650dSSadaf Ebrahimi/b?(*SKIP)c/
7659*22dc650dSSadaf Ebrahimi    bc
7660*22dc650dSSadaf Ebrahimi 0: bc
7661*22dc650dSSadaf Ebrahimi    abc
7662*22dc650dSSadaf Ebrahimi 0: bc
7663*22dc650dSSadaf Ebrahimi
7664*22dc650dSSadaf Ebrahimi/(*SKIP)bc/
7665*22dc650dSSadaf Ebrahimi\= Expect no match
7666*22dc650dSSadaf Ebrahimi    a
7667*22dc650dSSadaf EbrahimiNo match
7668*22dc650dSSadaf Ebrahimi
7669*22dc650dSSadaf Ebrahimi/(*SKIP)b/
7670*22dc650dSSadaf Ebrahimi\= Expect no match
7671*22dc650dSSadaf Ebrahimi    a
7672*22dc650dSSadaf EbrahimiNo match
7673*22dc650dSSadaf Ebrahimi
7674*22dc650dSSadaf Ebrahimi/(?P<abn>(?P=abn)xxx|)+/
7675*22dc650dSSadaf Ebrahimi    xxx
7676*22dc650dSSadaf Ebrahimi 0:
7677*22dc650dSSadaf Ebrahimi 1:
7678*22dc650dSSadaf Ebrahimi
7679*22dc650dSSadaf Ebrahimi/(?i:([^b]))(?1)/
7680*22dc650dSSadaf Ebrahimi    aa
7681*22dc650dSSadaf Ebrahimi 0: aa
7682*22dc650dSSadaf Ebrahimi 1: a
7683*22dc650dSSadaf Ebrahimi    aA
7684*22dc650dSSadaf Ebrahimi 0: aA
7685*22dc650dSSadaf Ebrahimi 1: a
7686*22dc650dSSadaf Ebrahimi\= Expect no match
7687*22dc650dSSadaf Ebrahimi    ab
7688*22dc650dSSadaf EbrahimiNo match
7689*22dc650dSSadaf Ebrahimi    aB
7690*22dc650dSSadaf EbrahimiNo match
7691*22dc650dSSadaf Ebrahimi    Ba
7692*22dc650dSSadaf EbrahimiNo match
7693*22dc650dSSadaf Ebrahimi    ba
7694*22dc650dSSadaf EbrahimiNo match
7695*22dc650dSSadaf Ebrahimi
7696*22dc650dSSadaf Ebrahimi/^(?&t)*+(?(DEFINE)(?<t>a))\w$/
7697*22dc650dSSadaf Ebrahimi    aaaaaaX
7698*22dc650dSSadaf Ebrahimi 0: aaaaaaX
7699*22dc650dSSadaf Ebrahimi\= Expect no match
7700*22dc650dSSadaf Ebrahimi    aaaaaa
7701*22dc650dSSadaf EbrahimiNo match
7702*22dc650dSSadaf Ebrahimi
7703*22dc650dSSadaf Ebrahimi/^(?&t)*(?(DEFINE)(?<t>a))\w$/
7704*22dc650dSSadaf Ebrahimi    aaaaaaX
7705*22dc650dSSadaf Ebrahimi 0: aaaaaaX
7706*22dc650dSSadaf Ebrahimi    aaaaaa
7707*22dc650dSSadaf Ebrahimi 0: aaaaaa
7708*22dc650dSSadaf Ebrahimi
7709*22dc650dSSadaf Ebrahimi/^(a)*+(\w)/
7710*22dc650dSSadaf Ebrahimi    aaaaX
7711*22dc650dSSadaf Ebrahimi 0: aaaaX
7712*22dc650dSSadaf Ebrahimi 1: a
7713*22dc650dSSadaf Ebrahimi 2: X
7714*22dc650dSSadaf Ebrahimi    YZ
7715*22dc650dSSadaf Ebrahimi 0: Y
7716*22dc650dSSadaf Ebrahimi 1: <unset>
7717*22dc650dSSadaf Ebrahimi 2: Y
7718*22dc650dSSadaf Ebrahimi\= Expect no match
7719*22dc650dSSadaf Ebrahimi    aaaa
7720*22dc650dSSadaf EbrahimiNo match
7721*22dc650dSSadaf Ebrahimi
7722*22dc650dSSadaf Ebrahimi/^(?:a)*+(\w)/
7723*22dc650dSSadaf Ebrahimi    aaaaX
7724*22dc650dSSadaf Ebrahimi 0: aaaaX
7725*22dc650dSSadaf Ebrahimi 1: X
7726*22dc650dSSadaf Ebrahimi    YZ
7727*22dc650dSSadaf Ebrahimi 0: Y
7728*22dc650dSSadaf Ebrahimi 1: Y
7729*22dc650dSSadaf Ebrahimi\= Expect no match
7730*22dc650dSSadaf Ebrahimi    aaaa
7731*22dc650dSSadaf EbrahimiNo match
7732*22dc650dSSadaf Ebrahimi
7733*22dc650dSSadaf Ebrahimi/^(a)++(\w)/
7734*22dc650dSSadaf Ebrahimi    aaaaX
7735*22dc650dSSadaf Ebrahimi 0: aaaaX
7736*22dc650dSSadaf Ebrahimi 1: a
7737*22dc650dSSadaf Ebrahimi 2: X
7738*22dc650dSSadaf Ebrahimi\= Expect no match
7739*22dc650dSSadaf Ebrahimi    aaaa
7740*22dc650dSSadaf EbrahimiNo match
7741*22dc650dSSadaf Ebrahimi    YZ
7742*22dc650dSSadaf EbrahimiNo match
7743*22dc650dSSadaf Ebrahimi
7744*22dc650dSSadaf Ebrahimi/^(?:a)++(\w)/
7745*22dc650dSSadaf Ebrahimi    aaaaX
7746*22dc650dSSadaf Ebrahimi 0: aaaaX
7747*22dc650dSSadaf Ebrahimi 1: X
7748*22dc650dSSadaf Ebrahimi\= Expect no match
7749*22dc650dSSadaf Ebrahimi    aaaa
7750*22dc650dSSadaf EbrahimiNo match
7751*22dc650dSSadaf Ebrahimi    YZ
7752*22dc650dSSadaf EbrahimiNo match
7753*22dc650dSSadaf Ebrahimi
7754*22dc650dSSadaf Ebrahimi/^(a)?+(\w)/
7755*22dc650dSSadaf Ebrahimi    aaaaX
7756*22dc650dSSadaf Ebrahimi 0: aa
7757*22dc650dSSadaf Ebrahimi 1: a
7758*22dc650dSSadaf Ebrahimi 2: a
7759*22dc650dSSadaf Ebrahimi    YZ
7760*22dc650dSSadaf Ebrahimi 0: Y
7761*22dc650dSSadaf Ebrahimi 1: <unset>
7762*22dc650dSSadaf Ebrahimi 2: Y
7763*22dc650dSSadaf Ebrahimi
7764*22dc650dSSadaf Ebrahimi/^(?:a)?+(\w)/
7765*22dc650dSSadaf Ebrahimi    aaaaX
7766*22dc650dSSadaf Ebrahimi 0: aa
7767*22dc650dSSadaf Ebrahimi 1: a
7768*22dc650dSSadaf Ebrahimi    YZ
7769*22dc650dSSadaf Ebrahimi 0: Y
7770*22dc650dSSadaf Ebrahimi 1: Y
7771*22dc650dSSadaf Ebrahimi
7772*22dc650dSSadaf Ebrahimi/^(a){2,}+(\w)/
7773*22dc650dSSadaf Ebrahimi    aaaaX
7774*22dc650dSSadaf Ebrahimi 0: aaaaX
7775*22dc650dSSadaf Ebrahimi 1: a
7776*22dc650dSSadaf Ebrahimi 2: X
7777*22dc650dSSadaf Ebrahimi\= Expect no match
7778*22dc650dSSadaf Ebrahimi    aaa
7779*22dc650dSSadaf EbrahimiNo match
7780*22dc650dSSadaf Ebrahimi    YZ
7781*22dc650dSSadaf EbrahimiNo match
7782*22dc650dSSadaf Ebrahimi
7783*22dc650dSSadaf Ebrahimi/^(?:a){2,}+(\w)/
7784*22dc650dSSadaf Ebrahimi    aaaaX
7785*22dc650dSSadaf Ebrahimi 0: aaaaX
7786*22dc650dSSadaf Ebrahimi 1: X
7787*22dc650dSSadaf Ebrahimi\= Expect no match
7788*22dc650dSSadaf Ebrahimi    aaa
7789*22dc650dSSadaf EbrahimiNo match
7790*22dc650dSSadaf Ebrahimi    YZ
7791*22dc650dSSadaf EbrahimiNo match
7792*22dc650dSSadaf Ebrahimi
7793*22dc650dSSadaf Ebrahimi/(a|)*(?1)b/
7794*22dc650dSSadaf Ebrahimi    b
7795*22dc650dSSadaf Ebrahimi 0: b
7796*22dc650dSSadaf Ebrahimi 1:
7797*22dc650dSSadaf Ebrahimi    ab
7798*22dc650dSSadaf Ebrahimi 0: ab
7799*22dc650dSSadaf Ebrahimi 1:
7800*22dc650dSSadaf Ebrahimi    aab
7801*22dc650dSSadaf Ebrahimi 0: aab
7802*22dc650dSSadaf Ebrahimi 1:
7803*22dc650dSSadaf Ebrahimi
7804*22dc650dSSadaf Ebrahimi/(a)++(?1)b/
7805*22dc650dSSadaf Ebrahimi\= Expect no match
7806*22dc650dSSadaf Ebrahimi    ab
7807*22dc650dSSadaf EbrahimiNo match
7808*22dc650dSSadaf Ebrahimi    aab
7809*22dc650dSSadaf EbrahimiNo match
7810*22dc650dSSadaf Ebrahimi
7811*22dc650dSSadaf Ebrahimi/(a)*+(?1)b/
7812*22dc650dSSadaf Ebrahimi\= Expect no match
7813*22dc650dSSadaf Ebrahimi    ab
7814*22dc650dSSadaf EbrahimiNo match
7815*22dc650dSSadaf Ebrahimi    aab
7816*22dc650dSSadaf EbrahimiNo match
7817*22dc650dSSadaf Ebrahimi
7818*22dc650dSSadaf Ebrahimi/(?1)(?:(b)){0}/
7819*22dc650dSSadaf Ebrahimi    b
7820*22dc650dSSadaf Ebrahimi 0: b
7821*22dc650dSSadaf Ebrahimi
7822*22dc650dSSadaf Ebrahimi/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
7823*22dc650dSSadaf Ebrahimi    foo(bar(baz)+baz(bop))
7824*22dc650dSSadaf Ebrahimi 0: foo(bar(baz)+baz(bop))
7825*22dc650dSSadaf Ebrahimi 1: foo(bar(baz)+baz(bop))
7826*22dc650dSSadaf Ebrahimi 2: (bar(baz)+baz(bop))
7827*22dc650dSSadaf Ebrahimi 3: bar(baz)+baz(bop)
7828*22dc650dSSadaf Ebrahimi
7829*22dc650dSSadaf Ebrahimi/(A (A|B(*ACCEPT)|C) D)(E)/x
7830*22dc650dSSadaf Ebrahimi    AB
7831*22dc650dSSadaf Ebrahimi 0: AB
7832*22dc650dSSadaf Ebrahimi 1: AB
7833*22dc650dSSadaf Ebrahimi 2: B
7834*22dc650dSSadaf Ebrahimi
7835*22dc650dSSadaf Ebrahimi/\A.*?(a|bc)/
7836*22dc650dSSadaf Ebrahimi    ba
7837*22dc650dSSadaf Ebrahimi 0: ba
7838*22dc650dSSadaf Ebrahimi 1: a
7839*22dc650dSSadaf Ebrahimi
7840*22dc650dSSadaf Ebrahimi/\A.*?(?:a|bc)++/
7841*22dc650dSSadaf Ebrahimi    ba
7842*22dc650dSSadaf Ebrahimi 0: ba
7843*22dc650dSSadaf Ebrahimi
7844*22dc650dSSadaf Ebrahimi/\A.*?(a|bc)++/
7845*22dc650dSSadaf Ebrahimi    ba
7846*22dc650dSSadaf Ebrahimi 0: ba
7847*22dc650dSSadaf Ebrahimi 1: a
7848*22dc650dSSadaf Ebrahimi
7849*22dc650dSSadaf Ebrahimi/\A.*?(?:a|bc|d)/
7850*22dc650dSSadaf Ebrahimi    ba
7851*22dc650dSSadaf Ebrahimi 0: ba
7852*22dc650dSSadaf Ebrahimi
7853*22dc650dSSadaf Ebrahimi/(?:(b))++/
7854*22dc650dSSadaf Ebrahimi    beetle
7855*22dc650dSSadaf Ebrahimi 0: b
7856*22dc650dSSadaf Ebrahimi 1: b
7857*22dc650dSSadaf Ebrahimi
7858*22dc650dSSadaf Ebrahimi/(?(?=(a(*ACCEPT)z))a)/
7859*22dc650dSSadaf Ebrahimi    a
7860*22dc650dSSadaf Ebrahimi 0: a
7861*22dc650dSSadaf Ebrahimi 1: a
7862*22dc650dSSadaf Ebrahimi
7863*22dc650dSSadaf Ebrahimi/^(a)(?1)+ab/
7864*22dc650dSSadaf Ebrahimi    aaaab
7865*22dc650dSSadaf Ebrahimi 0: aaaab
7866*22dc650dSSadaf Ebrahimi 1: a
7867*22dc650dSSadaf Ebrahimi
7868*22dc650dSSadaf Ebrahimi/^(a)(?1)++ab/
7869*22dc650dSSadaf Ebrahimi\= Expect no match
7870*22dc650dSSadaf Ebrahimi    aaaab
7871*22dc650dSSadaf EbrahimiNo match
7872*22dc650dSSadaf Ebrahimi
7873*22dc650dSSadaf Ebrahimi/^(?=a(*:M))aZ/mark
7874*22dc650dSSadaf Ebrahimi    aZbc
7875*22dc650dSSadaf Ebrahimi 0: aZ
7876*22dc650dSSadaf EbrahimiMK: M
7877*22dc650dSSadaf Ebrahimi
7878*22dc650dSSadaf Ebrahimi/^(?!(*:M)b)aZ/mark
7879*22dc650dSSadaf Ebrahimi    aZbc
7880*22dc650dSSadaf Ebrahimi 0: aZ
7881*22dc650dSSadaf Ebrahimi
7882*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a))?b(?1)/
7883*22dc650dSSadaf Ebrahimi    backgammon
7884*22dc650dSSadaf Ebrahimi 0: ba
7885*22dc650dSSadaf Ebrahimi
7886*22dc650dSSadaf Ebrahimi/^\N+/
7887*22dc650dSSadaf Ebrahimi    abc\ndef
7888*22dc650dSSadaf Ebrahimi 0: abc
7889*22dc650dSSadaf Ebrahimi
7890*22dc650dSSadaf Ebrahimi/^\N{1,}/
7891*22dc650dSSadaf Ebrahimi    abc\ndef
7892*22dc650dSSadaf Ebrahimi 0: abc
7893*22dc650dSSadaf Ebrahimi
7894*22dc650dSSadaf Ebrahimi/(?(R)a+|(?R)b)/
7895*22dc650dSSadaf Ebrahimi    aaaabcde
7896*22dc650dSSadaf Ebrahimi 0: aaaab
7897*22dc650dSSadaf Ebrahimi
7898*22dc650dSSadaf Ebrahimi/(?(R)a+|((?R))b)/
7899*22dc650dSSadaf Ebrahimi    aaaabcde
7900*22dc650dSSadaf Ebrahimi 0: aaaab
7901*22dc650dSSadaf Ebrahimi 1: aaaa
7902*22dc650dSSadaf Ebrahimi
7903*22dc650dSSadaf Ebrahimi/((?(R)a+|(?1)b))/
7904*22dc650dSSadaf Ebrahimi    aaaabcde
7905*22dc650dSSadaf Ebrahimi 0: aaaab
7906*22dc650dSSadaf Ebrahimi 1: aaaab
7907*22dc650dSSadaf Ebrahimi
7908*22dc650dSSadaf Ebrahimi/((?(R1)a+|(?1)b))/
7909*22dc650dSSadaf Ebrahimi    aaaabcde
7910*22dc650dSSadaf Ebrahimi 0: aaaab
7911*22dc650dSSadaf Ebrahimi 1: aaaab
7912*22dc650dSSadaf Ebrahimi
7913*22dc650dSSadaf Ebrahimi/((?(R)a|(?1)))*/
7914*22dc650dSSadaf Ebrahimi    aaa
7915*22dc650dSSadaf Ebrahimi 0: aaa
7916*22dc650dSSadaf Ebrahimi 1: a
7917*22dc650dSSadaf Ebrahimi
7918*22dc650dSSadaf Ebrahimi/((?(R)a|(?1)))+/
7919*22dc650dSSadaf Ebrahimi    aaa
7920*22dc650dSSadaf Ebrahimi 0: aaa
7921*22dc650dSSadaf Ebrahimi 1: a
7922*22dc650dSSadaf Ebrahimi
7923*22dc650dSSadaf Ebrahimi/a(*:any
7924*22dc650dSSadaf Ebrahiminame)/mark
7925*22dc650dSSadaf Ebrahimi    abc
7926*22dc650dSSadaf Ebrahimi 0: a
7927*22dc650dSSadaf EbrahimiMK: any \x0aname
7928*22dc650dSSadaf Ebrahimi
7929*22dc650dSSadaf Ebrahimi/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
7930*22dc650dSSadaf Ebrahimi    a
7931*22dc650dSSadaf Ebrahimi 0: a
7932*22dc650dSSadaf Ebrahimi    ba
7933*22dc650dSSadaf Ebrahimi 0: a
7934*22dc650dSSadaf Ebrahimi    bba
7935*22dc650dSSadaf Ebrahimi 0: a
7936*22dc650dSSadaf Ebrahimi
7937*22dc650dSSadaf Ebrahimi# Checking revised (*THEN) handling.
7938*22dc650dSSadaf Ebrahimi
7939*22dc650dSSadaf Ebrahimi# Capture
7940*22dc650dSSadaf Ebrahimi
7941*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b) c/x
7942*22dc650dSSadaf Ebrahimi\= Expect no match
7943*22dc650dSSadaf Ebrahimi    aabc
7944*22dc650dSSadaf EbrahimiNo match
7945*22dc650dSSadaf Ebrahimi
7946*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b|(*F)) c/x
7947*22dc650dSSadaf Ebrahimi    aabc
7948*22dc650dSSadaf Ebrahimi 0: aabc
7949*22dc650dSSadaf Ebrahimi 1: ab
7950*22dc650dSSadaf Ebrahimi
7951*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b) | (*F) ) c/x
7952*22dc650dSSadaf Ebrahimi    aabc
7953*22dc650dSSadaf Ebrahimi 0: aabc
7954*22dc650dSSadaf Ebrahimi 1: ab
7955*22dc650dSSadaf Ebrahimi 2: ab
7956*22dc650dSSadaf Ebrahimi
7957*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b) ) c/x
7958*22dc650dSSadaf Ebrahimi\= Expect no match
7959*22dc650dSSadaf Ebrahimi    aabc
7960*22dc650dSSadaf EbrahimiNo match
7961*22dc650dSSadaf Ebrahimi
7962*22dc650dSSadaf Ebrahimi# Non-capture
7963*22dc650dSSadaf Ebrahimi
7964*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b) c/x
7965*22dc650dSSadaf Ebrahimi\= Expect no match
7966*22dc650dSSadaf Ebrahimi    aabc
7967*22dc650dSSadaf EbrahimiNo match
7968*22dc650dSSadaf Ebrahimi
7969*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b|(*F)) c/x
7970*22dc650dSSadaf Ebrahimi    aabc
7971*22dc650dSSadaf Ebrahimi 0: aabc
7972*22dc650dSSadaf Ebrahimi
7973*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
7974*22dc650dSSadaf Ebrahimi    aabc
7975*22dc650dSSadaf Ebrahimi 0: aabc
7976*22dc650dSSadaf Ebrahimi
7977*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b) ) c/x
7978*22dc650dSSadaf Ebrahimi\= Expect no match
7979*22dc650dSSadaf Ebrahimi    aabc
7980*22dc650dSSadaf EbrahimiNo match
7981*22dc650dSSadaf Ebrahimi
7982*22dc650dSSadaf Ebrahimi# Atomic
7983*22dc650dSSadaf Ebrahimi
7984*22dc650dSSadaf Ebrahimi/^.*? (?>a(*THEN)b) c/x
7985*22dc650dSSadaf Ebrahimi\= Expect no match
7986*22dc650dSSadaf Ebrahimi    aabc
7987*22dc650dSSadaf EbrahimiNo match
7988*22dc650dSSadaf Ebrahimi
7989*22dc650dSSadaf Ebrahimi/^.*? (?>a(*THEN)b|(*F)) c/x
7990*22dc650dSSadaf Ebrahimi    aabc
7991*22dc650dSSadaf Ebrahimi 0: aabc
7992*22dc650dSSadaf Ebrahimi
7993*22dc650dSSadaf Ebrahimi/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
7994*22dc650dSSadaf Ebrahimi    aabc
7995*22dc650dSSadaf Ebrahimi 0: aabc
7996*22dc650dSSadaf Ebrahimi
7997*22dc650dSSadaf Ebrahimi/^.*? (?> (?>a(*THEN)b) ) c/x
7998*22dc650dSSadaf Ebrahimi\= Expect no match
7999*22dc650dSSadaf Ebrahimi    aabc
8000*22dc650dSSadaf EbrahimiNo match
8001*22dc650dSSadaf Ebrahimi
8002*22dc650dSSadaf Ebrahimi# Possessive capture
8003*22dc650dSSadaf Ebrahimi
8004*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b)++ c/x
8005*22dc650dSSadaf Ebrahimi\= Expect no match
8006*22dc650dSSadaf Ebrahimi    aabc
8007*22dc650dSSadaf EbrahimiNo match
8008*22dc650dSSadaf Ebrahimi
8009*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b|(*F))++ c/x
8010*22dc650dSSadaf Ebrahimi    aabc
8011*22dc650dSSadaf Ebrahimi 0: aabc
8012*22dc650dSSadaf Ebrahimi 1: ab
8013*22dc650dSSadaf Ebrahimi
8014*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
8015*22dc650dSSadaf Ebrahimi    aabc
8016*22dc650dSSadaf Ebrahimi 0: aabc
8017*22dc650dSSadaf Ebrahimi 1: ab
8018*22dc650dSSadaf Ebrahimi 2: ab
8019*22dc650dSSadaf Ebrahimi
8020*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b)++ )++ c/x
8021*22dc650dSSadaf Ebrahimi\= Expect no match
8022*22dc650dSSadaf Ebrahimi    aabc
8023*22dc650dSSadaf EbrahimiNo match
8024*22dc650dSSadaf Ebrahimi
8025*22dc650dSSadaf Ebrahimi# Possessive non-capture
8026*22dc650dSSadaf Ebrahimi
8027*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b)++ c/x
8028*22dc650dSSadaf Ebrahimi\= Expect no match
8029*22dc650dSSadaf Ebrahimi    aabc
8030*22dc650dSSadaf EbrahimiNo match
8031*22dc650dSSadaf Ebrahimi
8032*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b|(*F))++ c/x
8033*22dc650dSSadaf Ebrahimi    aabc
8034*22dc650dSSadaf Ebrahimi 0: aabc
8035*22dc650dSSadaf Ebrahimi
8036*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
8037*22dc650dSSadaf Ebrahimi    aabc
8038*22dc650dSSadaf Ebrahimi 0: aabc
8039*22dc650dSSadaf Ebrahimi
8040*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b)++ )++ c/x
8041*22dc650dSSadaf Ebrahimi\= Expect no match
8042*22dc650dSSadaf Ebrahimi    aabc
8043*22dc650dSSadaf EbrahimiNo match
8044*22dc650dSSadaf Ebrahimi
8045*22dc650dSSadaf Ebrahimi# Condition assertion
8046*22dc650dSSadaf Ebrahimi
8047*22dc650dSSadaf Ebrahimi/^(?(?=a(*THEN)b)ab|ac)/
8048*22dc650dSSadaf Ebrahimi    ac
8049*22dc650dSSadaf Ebrahimi 0: ac
8050*22dc650dSSadaf Ebrahimi
8051*22dc650dSSadaf Ebrahimi# Condition
8052*22dc650dSSadaf Ebrahimi
8053*22dc650dSSadaf Ebrahimi/^.*?(?(?=a)a|b(*THEN)c)/
8054*22dc650dSSadaf Ebrahimi\= Expect no match
8055*22dc650dSSadaf Ebrahimi    ba
8056*22dc650dSSadaf EbrahimiNo match
8057*22dc650dSSadaf Ebrahimi
8058*22dc650dSSadaf Ebrahimi/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
8059*22dc650dSSadaf Ebrahimi    ba
8060*22dc650dSSadaf Ebrahimi 0: ba
8061*22dc650dSSadaf Ebrahimi
8062*22dc650dSSadaf Ebrahimi/^.*?(?(?=a)a(*THEN)b|c)/
8063*22dc650dSSadaf Ebrahimi\= Expect no match
8064*22dc650dSSadaf Ebrahimi    ac
8065*22dc650dSSadaf EbrahimiNo match
8066*22dc650dSSadaf Ebrahimi
8067*22dc650dSSadaf Ebrahimi# Assertion
8068*22dc650dSSadaf Ebrahimi
8069*22dc650dSSadaf Ebrahimi/^.*(?=a(*THEN)b)/
8070*22dc650dSSadaf Ebrahimi    aabc
8071*22dc650dSSadaf Ebrahimi 0: a
8072*22dc650dSSadaf Ebrahimi
8073*22dc650dSSadaf Ebrahimi# --------------------------
8074*22dc650dSSadaf Ebrahimi
8075*22dc650dSSadaf Ebrahimi/(?>a(*:m))/imsx,mark
8076*22dc650dSSadaf Ebrahimi    a
8077*22dc650dSSadaf Ebrahimi 0: a
8078*22dc650dSSadaf EbrahimiMK: m
8079*22dc650dSSadaf Ebrahimi
8080*22dc650dSSadaf Ebrahimi/(?>(a)(*:m))/imsx,mark
8081*22dc650dSSadaf Ebrahimi    a
8082*22dc650dSSadaf Ebrahimi 0: a
8083*22dc650dSSadaf Ebrahimi 1: a
8084*22dc650dSSadaf EbrahimiMK: m
8085*22dc650dSSadaf Ebrahimi
8086*22dc650dSSadaf Ebrahimi/(?<=a(*ACCEPT)b)c/
8087*22dc650dSSadaf Ebrahimi    xacd
8088*22dc650dSSadaf Ebrahimi 0: c
8089*22dc650dSSadaf Ebrahimi
8090*22dc650dSSadaf Ebrahimi/(?<=(a(*ACCEPT)b))c/
8091*22dc650dSSadaf Ebrahimi    xacd
8092*22dc650dSSadaf Ebrahimi 0: c
8093*22dc650dSSadaf Ebrahimi 1: a
8094*22dc650dSSadaf Ebrahimi
8095*22dc650dSSadaf Ebrahimi/(?<=(a(*COMMIT)b))c/
8096*22dc650dSSadaf Ebrahimi    xabcd
8097*22dc650dSSadaf Ebrahimi 0: c
8098*22dc650dSSadaf Ebrahimi 1: ab
8099*22dc650dSSadaf Ebrahimi\= Expect no match
8100*22dc650dSSadaf Ebrahimi    xacd
8101*22dc650dSSadaf EbrahimiNo match
8102*22dc650dSSadaf Ebrahimi
8103*22dc650dSSadaf Ebrahimi/(?<!a(*FAIL)b)c/
8104*22dc650dSSadaf Ebrahimi    xcd
8105*22dc650dSSadaf Ebrahimi 0: c
8106*22dc650dSSadaf Ebrahimi    acd
8107*22dc650dSSadaf Ebrahimi 0: c
8108*22dc650dSSadaf Ebrahimi
8109*22dc650dSSadaf Ebrahimi/(?<=a(*:N)b)c/mark
8110*22dc650dSSadaf Ebrahimi    xabcd
8111*22dc650dSSadaf Ebrahimi 0: c
8112*22dc650dSSadaf EbrahimiMK: N
8113*22dc650dSSadaf Ebrahimi
8114*22dc650dSSadaf Ebrahimi/(?<=a(*PRUNE)b)c/
8115*22dc650dSSadaf Ebrahimi    xabcd
8116*22dc650dSSadaf Ebrahimi 0: c
8117*22dc650dSSadaf Ebrahimi
8118*22dc650dSSadaf Ebrahimi/(?<=a(*SKIP)b)c/
8119*22dc650dSSadaf Ebrahimi    xabcd
8120*22dc650dSSadaf Ebrahimi 0: c
8121*22dc650dSSadaf Ebrahimi
8122*22dc650dSSadaf Ebrahimi/(?<=a(*THEN)b)c/
8123*22dc650dSSadaf Ebrahimi    xabcd
8124*22dc650dSSadaf Ebrahimi 0: c
8125*22dc650dSSadaf Ebrahimi
8126*22dc650dSSadaf Ebrahimi/(a)(?2){2}(.)/
8127*22dc650dSSadaf Ebrahimi    abcd
8128*22dc650dSSadaf Ebrahimi 0: abcd
8129*22dc650dSSadaf Ebrahimi 1: a
8130*22dc650dSSadaf Ebrahimi 2: d
8131*22dc650dSSadaf Ebrahimi
8132*22dc650dSSadaf Ebrahimi/(*MARK:A)(*PRUNE:B)(C|X)/mark
8133*22dc650dSSadaf Ebrahimi    C
8134*22dc650dSSadaf Ebrahimi 0: C
8135*22dc650dSSadaf Ebrahimi 1: C
8136*22dc650dSSadaf EbrahimiMK: B
8137*22dc650dSSadaf Ebrahimi\= Expect no match
8138*22dc650dSSadaf Ebrahimi    D
8139*22dc650dSSadaf EbrahimiNo match, mark = B
8140*22dc650dSSadaf Ebrahimi
8141*22dc650dSSadaf Ebrahimi/(*MARK:A)(*PRUNE:B)(C|X)/mark
8142*22dc650dSSadaf Ebrahimi    C
8143*22dc650dSSadaf Ebrahimi 0: C
8144*22dc650dSSadaf Ebrahimi 1: C
8145*22dc650dSSadaf EbrahimiMK: B
8146*22dc650dSSadaf Ebrahimi\= Expect no match
8147*22dc650dSSadaf Ebrahimi    D
8148*22dc650dSSadaf EbrahimiNo match, mark = B
8149*22dc650dSSadaf Ebrahimi
8150*22dc650dSSadaf Ebrahimi/(*MARK:A)(*THEN:B)(C|X)/mark
8151*22dc650dSSadaf Ebrahimi    C
8152*22dc650dSSadaf Ebrahimi 0: C
8153*22dc650dSSadaf Ebrahimi 1: C
8154*22dc650dSSadaf EbrahimiMK: B
8155*22dc650dSSadaf Ebrahimi\= Expect no match
8156*22dc650dSSadaf Ebrahimi    D
8157*22dc650dSSadaf EbrahimiNo match, mark = B
8158*22dc650dSSadaf Ebrahimi
8159*22dc650dSSadaf Ebrahimi/(*MARK:A)(*THEN:B)(C|X)/mark,no_start_optimize
8160*22dc650dSSadaf Ebrahimi    C
8161*22dc650dSSadaf Ebrahimi 0: C
8162*22dc650dSSadaf Ebrahimi 1: C
8163*22dc650dSSadaf EbrahimiMK: B
8164*22dc650dSSadaf Ebrahimi\= Expect no match
8165*22dc650dSSadaf Ebrahimi    D
8166*22dc650dSSadaf EbrahimiNo match, mark = B
8167*22dc650dSSadaf Ebrahimi
8168*22dc650dSSadaf Ebrahimi/(*MARK:A)(*THEN:B)(C|X)/mark
8169*22dc650dSSadaf Ebrahimi    C
8170*22dc650dSSadaf Ebrahimi 0: C
8171*22dc650dSSadaf Ebrahimi 1: C
8172*22dc650dSSadaf EbrahimiMK: B
8173*22dc650dSSadaf Ebrahimi\= Expect no match
8174*22dc650dSSadaf Ebrahimi    D
8175*22dc650dSSadaf EbrahimiNo match, mark = B
8176*22dc650dSSadaf Ebrahimi
8177*22dc650dSSadaf Ebrahimi# This should fail, as the skip causes a bump to offset 3 (the skip).
8178*22dc650dSSadaf Ebrahimi
8179*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP)(B|Z) | AC/x,mark
8180*22dc650dSSadaf Ebrahimi\= Expect no match
8181*22dc650dSSadaf Ebrahimi    AAAC
8182*22dc650dSSadaf EbrahimiNo match, mark = A
8183*22dc650dSSadaf Ebrahimi
8184*22dc650dSSadaf Ebrahimi# Same
8185*22dc650dSSadaf Ebrahimi
8186*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/x,mark
8187*22dc650dSSadaf Ebrahimi\= Expect no match
8188*22dc650dSSadaf Ebrahimi    AAAC
8189*22dc650dSSadaf EbrahimiNo match, mark = B
8190*22dc650dSSadaf Ebrahimi
8191*22dc650dSSadaf Ebrahimi/A(*:A)A+(*SKIP)(B|Z) | AC/x,mark
8192*22dc650dSSadaf Ebrahimi\= Expect no match
8193*22dc650dSSadaf Ebrahimi    AAAC
8194*22dc650dSSadaf EbrahimiNo match, mark = A
8195*22dc650dSSadaf Ebrahimi
8196*22dc650dSSadaf Ebrahimi# This should fail, as a null name is the same as no name.
8197*22dc650dSSadaf Ebrahimi
8198*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/x,mark
8199*22dc650dSSadaf Ebrahimi\= Expect no match
8200*22dc650dSSadaf Ebrahimi    AAAC
8201*22dc650dSSadaf EbrahimiNo match, mark = A
8202*22dc650dSSadaf Ebrahimi
8203*22dc650dSSadaf Ebrahimi# A check on what happens after hitting a mark and them bumping along to
8204*22dc650dSSadaf Ebrahimi# something that does not even start. Perl reports tags after the failures
8205*22dc650dSSadaf Ebrahimi# here, though it does not when the individual letters are made into something
8206*22dc650dSSadaf Ebrahimi# more complicated.
8207*22dc650dSSadaf Ebrahimi
8208*22dc650dSSadaf Ebrahimi/A(*:A)B|XX(*:B)Y/mark
8209*22dc650dSSadaf Ebrahimi    AABC
8210*22dc650dSSadaf Ebrahimi 0: AB
8211*22dc650dSSadaf EbrahimiMK: A
8212*22dc650dSSadaf Ebrahimi    XXYZ
8213*22dc650dSSadaf Ebrahimi 0: XXY
8214*22dc650dSSadaf EbrahimiMK: B
8215*22dc650dSSadaf Ebrahimi\= Expect no match
8216*22dc650dSSadaf Ebrahimi    XAQQ
8217*22dc650dSSadaf EbrahimiNo match, mark = A
8218*22dc650dSSadaf Ebrahimi    XAQQXZZ
8219*22dc650dSSadaf EbrahimiNo match, mark = A
8220*22dc650dSSadaf Ebrahimi    AXQQQ
8221*22dc650dSSadaf EbrahimiNo match, mark = A
8222*22dc650dSSadaf Ebrahimi    AXXQQQ
8223*22dc650dSSadaf EbrahimiNo match, mark = B
8224*22dc650dSSadaf Ebrahimi
8225*22dc650dSSadaf Ebrahimi/^(A(*THEN:A)B|C(*THEN:B)D)/mark
8226*22dc650dSSadaf Ebrahimi    AB
8227*22dc650dSSadaf Ebrahimi 0: AB
8228*22dc650dSSadaf Ebrahimi 1: AB
8229*22dc650dSSadaf EbrahimiMK: A
8230*22dc650dSSadaf Ebrahimi    CD
8231*22dc650dSSadaf Ebrahimi 0: CD
8232*22dc650dSSadaf Ebrahimi 1: CD
8233*22dc650dSSadaf EbrahimiMK: B
8234*22dc650dSSadaf Ebrahimi\= Expect no match
8235*22dc650dSSadaf Ebrahimi    AC
8236*22dc650dSSadaf EbrahimiNo match, mark = A
8237*22dc650dSSadaf Ebrahimi    CB
8238*22dc650dSSadaf EbrahimiNo match, mark = B
8239*22dc650dSSadaf Ebrahimi
8240*22dc650dSSadaf Ebrahimi/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
8241*22dc650dSSadaf Ebrahimi    AB
8242*22dc650dSSadaf Ebrahimi 0: AB
8243*22dc650dSSadaf Ebrahimi 1: AB
8244*22dc650dSSadaf EbrahimiMK: A
8245*22dc650dSSadaf Ebrahimi    CD
8246*22dc650dSSadaf Ebrahimi 0: CD
8247*22dc650dSSadaf Ebrahimi 1: CD
8248*22dc650dSSadaf EbrahimiMK: B
8249*22dc650dSSadaf Ebrahimi\= Expect no match
8250*22dc650dSSadaf Ebrahimi    AC
8251*22dc650dSSadaf EbrahimiNo match, mark = A
8252*22dc650dSSadaf Ebrahimi    CB
8253*22dc650dSSadaf EbrahimiNo match, mark = B
8254*22dc650dSSadaf Ebrahimi
8255*22dc650dSSadaf Ebrahimi# An empty name does not pass back an empty string. It is the same as if no
8256*22dc650dSSadaf Ebrahimi# name were given.
8257*22dc650dSSadaf Ebrahimi
8258*22dc650dSSadaf Ebrahimi/^(A(*PRUNE:)B|C(*PRUNE:B)D)/mark
8259*22dc650dSSadaf Ebrahimi    AB
8260*22dc650dSSadaf Ebrahimi 0: AB
8261*22dc650dSSadaf Ebrahimi 1: AB
8262*22dc650dSSadaf Ebrahimi    CD
8263*22dc650dSSadaf Ebrahimi 0: CD
8264*22dc650dSSadaf Ebrahimi 1: CD
8265*22dc650dSSadaf EbrahimiMK: B
8266*22dc650dSSadaf Ebrahimi
8267*22dc650dSSadaf Ebrahimi# PRUNE goes to next bumpalong; COMMIT does not.
8268*22dc650dSSadaf Ebrahimi
8269*22dc650dSSadaf Ebrahimi/A(*PRUNE:A)B/mark
8270*22dc650dSSadaf Ebrahimi    ACAB
8271*22dc650dSSadaf Ebrahimi 0: AB
8272*22dc650dSSadaf EbrahimiMK: A
8273*22dc650dSSadaf Ebrahimi
8274*22dc650dSSadaf Ebrahimi# Mark names can be duplicated.
8275*22dc650dSSadaf Ebrahimi
8276*22dc650dSSadaf Ebrahimi/A(*:A)B|X(*:A)Y/mark
8277*22dc650dSSadaf Ebrahimi    AABC
8278*22dc650dSSadaf Ebrahimi 0: AB
8279*22dc650dSSadaf EbrahimiMK: A
8280*22dc650dSSadaf Ebrahimi    XXYZ
8281*22dc650dSSadaf Ebrahimi 0: XY
8282*22dc650dSSadaf EbrahimiMK: A
8283*22dc650dSSadaf Ebrahimi
8284*22dc650dSSadaf Ebrahimi/b(*:m)f|a(*:n)w/mark
8285*22dc650dSSadaf Ebrahimi    aw
8286*22dc650dSSadaf Ebrahimi 0: aw
8287*22dc650dSSadaf EbrahimiMK: n
8288*22dc650dSSadaf Ebrahimi\= Expect no match
8289*22dc650dSSadaf Ebrahimi    abc
8290*22dc650dSSadaf EbrahimiNo match, mark = m
8291*22dc650dSSadaf Ebrahimi
8292*22dc650dSSadaf Ebrahimi/b(*:m)f|aw/mark
8293*22dc650dSSadaf Ebrahimi    abaw
8294*22dc650dSSadaf Ebrahimi 0: aw
8295*22dc650dSSadaf Ebrahimi\= Expect no match
8296*22dc650dSSadaf Ebrahimi    abc
8297*22dc650dSSadaf EbrahimiNo match, mark = m
8298*22dc650dSSadaf Ebrahimi    abax
8299*22dc650dSSadaf EbrahimiNo match, mark = m
8300*22dc650dSSadaf Ebrahimi
8301*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/x,mark
8302*22dc650dSSadaf Ebrahimi    AAAC
8303*22dc650dSSadaf Ebrahimi 0: AAC
8304*22dc650dSSadaf Ebrahimi
8305*22dc650dSSadaf Ebrahimi/(?=a(*MARK:A)b)..x/mark
8306*22dc650dSSadaf Ebrahimi    abxy
8307*22dc650dSSadaf Ebrahimi 0: abx
8308*22dc650dSSadaf EbrahimiMK: A
8309*22dc650dSSadaf Ebrahimi\= Expect no match
8310*22dc650dSSadaf Ebrahimi    abpq
8311*22dc650dSSadaf EbrahimiNo match
8312*22dc650dSSadaf Ebrahimi
8313*22dc650dSSadaf Ebrahimi/(?=a(*MARK:A)b)..(*:Y)x/mark
8314*22dc650dSSadaf Ebrahimi    abxy
8315*22dc650dSSadaf Ebrahimi 0: abx
8316*22dc650dSSadaf EbrahimiMK: Y
8317*22dc650dSSadaf Ebrahimi\= Expect no match
8318*22dc650dSSadaf Ebrahimi    abpq
8319*22dc650dSSadaf EbrahimiNo match
8320*22dc650dSSadaf Ebrahimi
8321*22dc650dSSadaf Ebrahimi/(?=a(*PRUNE:A)b)..x/mark
8322*22dc650dSSadaf Ebrahimi    abxy
8323*22dc650dSSadaf Ebrahimi 0: abx
8324*22dc650dSSadaf EbrahimiMK: A
8325*22dc650dSSadaf Ebrahimi\= Expect no match
8326*22dc650dSSadaf Ebrahimi    abpq
8327*22dc650dSSadaf EbrahimiNo match
8328*22dc650dSSadaf Ebrahimi
8329*22dc650dSSadaf Ebrahimi/(?=a(*PRUNE:A)b)..(*:Y)x/mark
8330*22dc650dSSadaf Ebrahimi    abxy
8331*22dc650dSSadaf Ebrahimi 0: abx
8332*22dc650dSSadaf EbrahimiMK: Y
8333*22dc650dSSadaf Ebrahimi\= Expect no match
8334*22dc650dSSadaf Ebrahimi    abpq
8335*22dc650dSSadaf EbrahimiNo match
8336*22dc650dSSadaf Ebrahimi
8337*22dc650dSSadaf Ebrahimi/(?=a(*THEN:A)b)..x/mark
8338*22dc650dSSadaf Ebrahimi    abxy
8339*22dc650dSSadaf Ebrahimi 0: abx
8340*22dc650dSSadaf EbrahimiMK: A
8341*22dc650dSSadaf Ebrahimi\= Expect no match
8342*22dc650dSSadaf Ebrahimi    abpq
8343*22dc650dSSadaf EbrahimiNo match
8344*22dc650dSSadaf Ebrahimi
8345*22dc650dSSadaf Ebrahimi/(?=a(*THEN:A)b)..(*:Y)x/mark
8346*22dc650dSSadaf Ebrahimi    abxy
8347*22dc650dSSadaf Ebrahimi 0: abx
8348*22dc650dSSadaf EbrahimiMK: Y
8349*22dc650dSSadaf Ebrahimi\= Expect no match
8350*22dc650dSSadaf Ebrahimi    abpq
8351*22dc650dSSadaf EbrahimiNo match
8352*22dc650dSSadaf Ebrahimi
8353*22dc650dSSadaf Ebrahimi/(another)?(\1?)test/
8354*22dc650dSSadaf Ebrahimi    hello world test
8355*22dc650dSSadaf Ebrahimi 0: test
8356*22dc650dSSadaf Ebrahimi 1: <unset>
8357*22dc650dSSadaf Ebrahimi 2:
8358*22dc650dSSadaf Ebrahimi
8359*22dc650dSSadaf Ebrahimi/(another)?(\1+)test/
8360*22dc650dSSadaf Ebrahimi\= Expect no match
8361*22dc650dSSadaf Ebrahimi    hello world test
8362*22dc650dSSadaf EbrahimiNo match
8363*22dc650dSSadaf Ebrahimi
8364*22dc650dSSadaf Ebrahimi/(a(*COMMIT)b){0}a(?1)|aac/
8365*22dc650dSSadaf Ebrahimi    aac
8366*22dc650dSSadaf Ebrahimi 0: aac
8367*22dc650dSSadaf Ebrahimi
8368*22dc650dSSadaf Ebrahimi/((?:a?)*)*c/
8369*22dc650dSSadaf Ebrahimi    aac
8370*22dc650dSSadaf Ebrahimi 0: aac
8371*22dc650dSSadaf Ebrahimi 1:
8372*22dc650dSSadaf Ebrahimi
8373*22dc650dSSadaf Ebrahimi/((?>a?)*)*c/
8374*22dc650dSSadaf Ebrahimi    aac
8375*22dc650dSSadaf Ebrahimi 0: aac
8376*22dc650dSSadaf Ebrahimi 1:
8377*22dc650dSSadaf Ebrahimi
8378*22dc650dSSadaf Ebrahimi/(?>.*?a)(?<=ba)/
8379*22dc650dSSadaf Ebrahimi    aba
8380*22dc650dSSadaf Ebrahimi 0: ba
8381*22dc650dSSadaf Ebrahimi
8382*22dc650dSSadaf Ebrahimi/(?:.*?a)(?<=ba)/
8383*22dc650dSSadaf Ebrahimi    aba
8384*22dc650dSSadaf Ebrahimi 0: aba
8385*22dc650dSSadaf Ebrahimi
8386*22dc650dSSadaf Ebrahimi/(?>.*?a)b/s
8387*22dc650dSSadaf Ebrahimi    aab
8388*22dc650dSSadaf Ebrahimi 0: ab
8389*22dc650dSSadaf Ebrahimi
8390*22dc650dSSadaf Ebrahimi/(?>.*?a)b/
8391*22dc650dSSadaf Ebrahimi    aab
8392*22dc650dSSadaf Ebrahimi 0: ab
8393*22dc650dSSadaf Ebrahimi
8394*22dc650dSSadaf Ebrahimi/(?>^a)b/s
8395*22dc650dSSadaf Ebrahimi\= Expect no match
8396*22dc650dSSadaf Ebrahimi    aab
8397*22dc650dSSadaf EbrahimiNo match
8398*22dc650dSSadaf Ebrahimi
8399*22dc650dSSadaf Ebrahimi/(?>.*?)(?<=(abcd)|(wxyz))/
8400*22dc650dSSadaf Ebrahimi    alphabetabcd
8401*22dc650dSSadaf Ebrahimi 0:
8402*22dc650dSSadaf Ebrahimi 1: abcd
8403*22dc650dSSadaf Ebrahimi    endingwxyz
8404*22dc650dSSadaf Ebrahimi 0:
8405*22dc650dSSadaf Ebrahimi 1: <unset>
8406*22dc650dSSadaf Ebrahimi 2: wxyz
8407*22dc650dSSadaf Ebrahimi
8408*22dc650dSSadaf Ebrahimi/(?>.*)(?<=(abcd)|(wxyz))/
8409*22dc650dSSadaf Ebrahimi    alphabetabcd
8410*22dc650dSSadaf Ebrahimi 0: alphabetabcd
8411*22dc650dSSadaf Ebrahimi 1: abcd
8412*22dc650dSSadaf Ebrahimi    endingwxyz
8413*22dc650dSSadaf Ebrahimi 0: endingwxyz
8414*22dc650dSSadaf Ebrahimi 1: <unset>
8415*22dc650dSSadaf Ebrahimi 2: wxyz
8416*22dc650dSSadaf Ebrahimi
8417*22dc650dSSadaf Ebrahimi/(?>.*)foo/
8418*22dc650dSSadaf Ebrahimi\= Expect no match
8419*22dc650dSSadaf Ebrahimi    abcdfooxyz
8420*22dc650dSSadaf EbrahimiNo match
8421*22dc650dSSadaf Ebrahimi
8422*22dc650dSSadaf Ebrahimi/(?>.*?)foo/
8423*22dc650dSSadaf Ebrahimi    abcdfooxyz
8424*22dc650dSSadaf Ebrahimi 0: foo
8425*22dc650dSSadaf Ebrahimi
8426*22dc650dSSadaf Ebrahimi/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
8427*22dc650dSSadaf Ebrahimi    ac
8428*22dc650dSSadaf Ebrahimi 0: ac
8429*22dc650dSSadaf Ebrahimi
8430*22dc650dSSadaf Ebrahimi/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
8431*22dc650dSSadaf Ebrahimi    ac
8432*22dc650dSSadaf Ebrahimi 0: ac
8433*22dc650dSSadaf Ebrahimi
8434*22dc650dSSadaf Ebrahimi/(?<=(*SKIP)ac)a/
8435*22dc650dSSadaf Ebrahimi\= Expect no match
8436*22dc650dSSadaf Ebrahimi    aa
8437*22dc650dSSadaf EbrahimiNo match
8438*22dc650dSSadaf Ebrahimi
8439*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
8440*22dc650dSSadaf Ebrahimi    AAAC
8441*22dc650dSSadaf Ebrahimi 0: AC
8442*22dc650dSSadaf Ebrahimi
8443*22dc650dSSadaf Ebrahimi/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/mark
8444*22dc650dSSadaf Ebrahimi    acacd
8445*22dc650dSSadaf Ebrahimi 0: acd
8446*22dc650dSSadaf EbrahimiMK: n
8447*22dc650dSSadaf Ebrahimi
8448*22dc650dSSadaf Ebrahimi/A(*SKIP:m)x|A(*SKIP:n)x|AB/mark
8449*22dc650dSSadaf Ebrahimi    AB
8450*22dc650dSSadaf Ebrahimi 0: AB
8451*22dc650dSSadaf Ebrahimi
8452*22dc650dSSadaf Ebrahimi/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/mark
8453*22dc650dSSadaf Ebrahimi    acacd
8454*22dc650dSSadaf Ebrahimi 0: ac
8455*22dc650dSSadaf EbrahimiMK: n
8456*22dc650dSSadaf Ebrahimi
8457*22dc650dSSadaf Ebrahimi# Tests that try to figure out how Perl works. My hypothesis is that the first
8458*22dc650dSSadaf Ebrahimi# verb that is backtracked onto is the one that acts. This seems to be the case
8459*22dc650dSSadaf Ebrahimi# almost all the time, but there is one exception that is perhaps a bug.
8460*22dc650dSSadaf Ebrahimi
8461*22dc650dSSadaf Ebrahimi# This matches "aaaac"; each PRUNE advances one character until the subject no
8462*22dc650dSSadaf Ebrahimi# longer starts with 5 'a's.
8463*22dc650dSSadaf Ebrahimi
8464*22dc650dSSadaf Ebrahimi/aaaaa(*PRUNE)b|a+c/
8465*22dc650dSSadaf Ebrahimi    aaaaaac
8466*22dc650dSSadaf Ebrahimi 0: aaaac
8467*22dc650dSSadaf Ebrahimi
8468*22dc650dSSadaf Ebrahimi# Putting SKIP in front of PRUNE makes no difference, as it is never
8469*22dc650dSSadaf Ebrahimi# backtracked onto, whether or not it has a label.
8470*22dc650dSSadaf Ebrahimi
8471*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP)(*PRUNE)b|a+c/
8472*22dc650dSSadaf Ebrahimi    aaaaaac
8473*22dc650dSSadaf Ebrahimi 0: aaaac
8474*22dc650dSSadaf Ebrahimi
8475*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP:N)(*PRUNE)b|a+c/
8476*22dc650dSSadaf Ebrahimi    aaaaaac
8477*22dc650dSSadaf Ebrahimi 0: aaaac
8478*22dc650dSSadaf Ebrahimi
8479*22dc650dSSadaf Ebrahimi/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
8480*22dc650dSSadaf Ebrahimi    aaaaaac
8481*22dc650dSSadaf Ebrahimi 0: aaaac
8482*22dc650dSSadaf Ebrahimi
8483*22dc650dSSadaf Ebrahimi# Putting THEN in front makes no difference.
8484*22dc650dSSadaf Ebrahimi
8485*22dc650dSSadaf Ebrahimi/aaaaa(*THEN)(*PRUNE)b|a+c/
8486*22dc650dSSadaf Ebrahimi    aaaaaac
8487*22dc650dSSadaf Ebrahimi 0: aaaac
8488*22dc650dSSadaf Ebrahimi
8489*22dc650dSSadaf Ebrahimi# However, putting COMMIT in front of the prune changes it to "no match". I
8490*22dc650dSSadaf Ebrahimi# think this is inconsistent and possibly a bug. For the moment, running this
8491*22dc650dSSadaf Ebrahimi# test is moved out of the Perl-compatible file.
8492*22dc650dSSadaf Ebrahimi
8493*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)(*PRUNE)b|a+c/
8494*22dc650dSSadaf Ebrahimi
8495*22dc650dSSadaf Ebrahimi# OK, lets play the same game again using SKIP instead of PRUNE.
8496*22dc650dSSadaf Ebrahimi
8497*22dc650dSSadaf Ebrahimi# This matches "ac" because SKIP forces the next match to start on the
8498*22dc650dSSadaf Ebrahimi# sixth "a".
8499*22dc650dSSadaf Ebrahimi
8500*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP)b|a+c/
8501*22dc650dSSadaf Ebrahimi    aaaaaac
8502*22dc650dSSadaf Ebrahimi 0: ac
8503*22dc650dSSadaf Ebrahimi
8504*22dc650dSSadaf Ebrahimi# Putting PRUNE in front makes no difference.
8505*22dc650dSSadaf Ebrahimi
8506*22dc650dSSadaf Ebrahimi/aaaaa(*PRUNE)(*SKIP)b|a+c/
8507*22dc650dSSadaf Ebrahimi    aaaaaac
8508*22dc650dSSadaf Ebrahimi 0: ac
8509*22dc650dSSadaf Ebrahimi
8510*22dc650dSSadaf Ebrahimi# Putting THEN in front makes no difference.
8511*22dc650dSSadaf Ebrahimi
8512*22dc650dSSadaf Ebrahimi/aaaaa(*THEN)(*SKIP)b|a+c/
8513*22dc650dSSadaf Ebrahimi    aaaaaac
8514*22dc650dSSadaf Ebrahimi 0: ac
8515*22dc650dSSadaf Ebrahimi
8516*22dc650dSSadaf Ebrahimi# In this case, neither does COMMIT. This still matches "ac".
8517*22dc650dSSadaf Ebrahimi
8518*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)(*SKIP)b|a+c/
8519*22dc650dSSadaf Ebrahimi    aaaaaac
8520*22dc650dSSadaf Ebrahimi 0: ac
8521*22dc650dSSadaf Ebrahimi
8522*22dc650dSSadaf Ebrahimi# This gives "no match", as expected.
8523*22dc650dSSadaf Ebrahimi
8524*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)b|a+c/
8525*22dc650dSSadaf Ebrahimi\= Expect no match
8526*22dc650dSSadaf Ebrahimi    aaaaaac
8527*22dc650dSSadaf EbrahimiNo match
8528*22dc650dSSadaf Ebrahimi
8529*22dc650dSSadaf Ebrahimi# ---- Tests using THEN ----
8530*22dc650dSSadaf Ebrahimi
8531*22dc650dSSadaf Ebrahimi# This matches "aaaaaac", as expected.
8532*22dc650dSSadaf Ebrahimi
8533*22dc650dSSadaf Ebrahimi/aaaaa(*THEN)b|a+c/
8534*22dc650dSSadaf Ebrahimi    aaaaaac
8535*22dc650dSSadaf Ebrahimi 0: aaaaaac
8536*22dc650dSSadaf Ebrahimi
8537*22dc650dSSadaf Ebrahimi# Putting SKIP in front makes no difference.
8538*22dc650dSSadaf Ebrahimi
8539*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP)(*THEN)b|a+c/
8540*22dc650dSSadaf Ebrahimi    aaaaaac
8541*22dc650dSSadaf Ebrahimi 0: aaaaaac
8542*22dc650dSSadaf Ebrahimi
8543*22dc650dSSadaf Ebrahimi# Putting PRUNE in front makes no difference.
8544*22dc650dSSadaf Ebrahimi
8545*22dc650dSSadaf Ebrahimi/aaaaa(*PRUNE)(*THEN)b|a+c/
8546*22dc650dSSadaf Ebrahimi    aaaaaac
8547*22dc650dSSadaf Ebrahimi 0: aaaaaac
8548*22dc650dSSadaf Ebrahimi
8549*22dc650dSSadaf Ebrahimi# Putting COMMIT in front makes no difference.
8550*22dc650dSSadaf Ebrahimi
8551*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)(*THEN)b|a+c/
8552*22dc650dSSadaf Ebrahimi    aaaaaac
8553*22dc650dSSadaf Ebrahimi 0: aaaaaac
8554*22dc650dSSadaf Ebrahimi
8555*22dc650dSSadaf Ebrahimi# End of "priority" tests
8556*22dc650dSSadaf Ebrahimi
8557*22dc650dSSadaf Ebrahimi/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
8558*22dc650dSSadaf Ebrahimi    aaaaaa
8559*22dc650dSSadaf Ebrahimi 0: a
8560*22dc650dSSadaf Ebrahimi
8561*22dc650dSSadaf Ebrahimi/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
8562*22dc650dSSadaf Ebrahimi    aaaaaa
8563*22dc650dSSadaf Ebrahimi 0: a
8564*22dc650dSSadaf Ebrahimi
8565*22dc650dSSadaf Ebrahimi/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
8566*22dc650dSSadaf Ebrahimi    aaaaaa
8567*22dc650dSSadaf Ebrahimi 0: aaaa
8568*22dc650dSSadaf Ebrahimi
8569*22dc650dSSadaf Ebrahimi/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
8570*22dc650dSSadaf Ebrahimi    aaaaaa
8571*22dc650dSSadaf Ebrahimi 0: a
8572*22dc650dSSadaf Ebrahimi
8573*22dc650dSSadaf Ebrahimi/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
8574*22dc650dSSadaf Ebrahimi    aaaac
8575*22dc650dSSadaf Ebrahimi 0: aac
8576*22dc650dSSadaf Ebrahimi
8577*22dc650dSSadaf Ebrahimi/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
8578*22dc650dSSadaf Ebrahimi    aaaac
8579*22dc650dSSadaf Ebrahimi 0: ac
8580*22dc650dSSadaf Ebrahimi
8581*22dc650dSSadaf Ebrahimi/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
8582*22dc650dSSadaf Ebrahimi    aaaac
8583*22dc650dSSadaf Ebrahimi 0: aac
8584*22dc650dSSadaf Ebrahimi
8585*22dc650dSSadaf Ebrahimi/aaa(*MARK:A)a(*SKIP:A)b|a+c/
8586*22dc650dSSadaf Ebrahimi    aaaac
8587*22dc650dSSadaf Ebrahimi 0: ac
8588*22dc650dSSadaf Ebrahimi
8589*22dc650dSSadaf Ebrahimi/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/mark
8590*22dc650dSSadaf Ebrahimi    aaaaaac
8591*22dc650dSSadaf Ebrahimi 0: ac
8592*22dc650dSSadaf Ebrahimi
8593*22dc650dSSadaf Ebrahimi/.?(a|b(*THEN)c)/
8594*22dc650dSSadaf Ebrahimi    ba
8595*22dc650dSSadaf Ebrahimi 0: ba
8596*22dc650dSSadaf Ebrahimi 1: a
8597*22dc650dSSadaf Ebrahimi
8598*22dc650dSSadaf Ebrahimi/(a(*COMMIT)b)c|abd/
8599*22dc650dSSadaf Ebrahimi    abc
8600*22dc650dSSadaf Ebrahimi 0: abc
8601*22dc650dSSadaf Ebrahimi 1: ab
8602*22dc650dSSadaf Ebrahimi\= Expect no match
8603*22dc650dSSadaf Ebrahimi    abd
8604*22dc650dSSadaf EbrahimiNo match
8605*22dc650dSSadaf Ebrahimi
8606*22dc650dSSadaf Ebrahimi/(?=a(*COMMIT)b)abc|abd/
8607*22dc650dSSadaf Ebrahimi    abc
8608*22dc650dSSadaf Ebrahimi 0: abc
8609*22dc650dSSadaf Ebrahimi    abd
8610*22dc650dSSadaf Ebrahimi 0: abd
8611*22dc650dSSadaf Ebrahimi
8612*22dc650dSSadaf Ebrahimi/(?>a(*COMMIT)b)c|abd/
8613*22dc650dSSadaf Ebrahimi    abc
8614*22dc650dSSadaf Ebrahimi 0: abc
8615*22dc650dSSadaf Ebrahimi    abd
8616*22dc650dSSadaf Ebrahimi 0: abd
8617*22dc650dSSadaf Ebrahimi
8618*22dc650dSSadaf Ebrahimi/a(?=b(*COMMIT)c)[^d]|abd/
8619*22dc650dSSadaf Ebrahimi    abc
8620*22dc650dSSadaf Ebrahimi 0: ab
8621*22dc650dSSadaf Ebrahimi\= Expect no match
8622*22dc650dSSadaf Ebrahimi    abd
8623*22dc650dSSadaf EbrahimiNo match
8624*22dc650dSSadaf Ebrahimi
8625*22dc650dSSadaf Ebrahimi/a(?=bc).|abd/
8626*22dc650dSSadaf Ebrahimi    abd
8627*22dc650dSSadaf Ebrahimi 0: abd
8628*22dc650dSSadaf Ebrahimi    abc
8629*22dc650dSSadaf Ebrahimi 0: ab
8630*22dc650dSSadaf Ebrahimi
8631*22dc650dSSadaf Ebrahimi/a(?>b(*COMMIT)c)d|abd/
8632*22dc650dSSadaf Ebrahimi\= Expect no match
8633*22dc650dSSadaf Ebrahimi    abceabd
8634*22dc650dSSadaf EbrahimiNo match
8635*22dc650dSSadaf Ebrahimi
8636*22dc650dSSadaf Ebrahimi/a(?>bc)d|abd/
8637*22dc650dSSadaf Ebrahimi    abceabd
8638*22dc650dSSadaf Ebrahimi 0: abd
8639*22dc650dSSadaf Ebrahimi
8640*22dc650dSSadaf Ebrahimi/(?>a(*COMMIT)b)c|abd/
8641*22dc650dSSadaf Ebrahimi    abd
8642*22dc650dSSadaf Ebrahimi 0: abd
8643*22dc650dSSadaf Ebrahimi
8644*22dc650dSSadaf Ebrahimi/(?>a(*COMMIT)c)d|abd/
8645*22dc650dSSadaf Ebrahimi\= Expect no match
8646*22dc650dSSadaf Ebrahimi    abd
8647*22dc650dSSadaf EbrahimiNo match
8648*22dc650dSSadaf Ebrahimi
8649*22dc650dSSadaf Ebrahimi/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
8650*22dc650dSSadaf Ebrahimi    ac
8651*22dc650dSSadaf Ebrahimi 0: ac
8652*22dc650dSSadaf Ebrahimi 1: <unset>
8653*22dc650dSSadaf Ebrahimi 2: c
8654*22dc650dSSadaf Ebrahimi
8655*22dc650dSSadaf Ebrahimi# These tests were formerly in test 2, but changes in PCRE and Perl have
8656*22dc650dSSadaf Ebrahimi# made them compatible.
8657*22dc650dSSadaf Ebrahimi
8658*22dc650dSSadaf Ebrahimi/^(a)?(?(1)a|b)+$/
8659*22dc650dSSadaf Ebrahimi\= Expect no match
8660*22dc650dSSadaf Ebrahimi    a
8661*22dc650dSSadaf EbrahimiNo match
8662*22dc650dSSadaf Ebrahimi
8663*22dc650dSSadaf Ebrahimi/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/x,mark
8664*22dc650dSSadaf Ebrahimi\= Expect no match
8665*22dc650dSSadaf Ebrahimi    AAAC
8666*22dc650dSSadaf EbrahimiNo match, mark = A
8667*22dc650dSSadaf Ebrahimi
8668*22dc650dSSadaf Ebrahimi/^((abc|abcx)(*THEN)y|abcd)/
8669*22dc650dSSadaf Ebrahimi    abcd
8670*22dc650dSSadaf Ebrahimi 0: abcd
8671*22dc650dSSadaf Ebrahimi 1: abcd
8672*22dc650dSSadaf Ebrahimi\= Expect no match
8673*22dc650dSSadaf Ebrahimi    abcxy
8674*22dc650dSSadaf EbrahimiNo match
8675*22dc650dSSadaf Ebrahimi
8676*22dc650dSSadaf Ebrahimi/^((yes|no)(*THEN)(*F))?/
8677*22dc650dSSadaf Ebrahimi\= Expect no match
8678*22dc650dSSadaf Ebrahimi    yes
8679*22dc650dSSadaf EbrahimiNo match
8680*22dc650dSSadaf Ebrahimi
8681*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
8682*22dc650dSSadaf Ebrahimi\= Expect no match
8683*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8684*22dc650dSSadaf EbrahimiNo match
8685*22dc650dSSadaf Ebrahimi
8686*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) z/x
8687*22dc650dSSadaf Ebrahimi\= Expect no match
8688*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8689*22dc650dSSadaf EbrahimiNo match
8690*22dc650dSSadaf Ebrahimi
8691*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
8692*22dc650dSSadaf Ebrahimi\= Expect no match
8693*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8694*22dc650dSSadaf EbrahimiNo match
8695*22dc650dSSadaf Ebrahimi
8696*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) \s* z/x
8697*22dc650dSSadaf Ebrahimi\= Expect no match
8698*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8699*22dc650dSSadaf EbrahimiNo match
8700*22dc650dSSadaf Ebrahimi
8701*22dc650dSSadaf Ebrahimi/(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
8702*22dc650dSSadaf Ebrahimi\= Expect no match
8703*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8704*22dc650dSSadaf EbrahimiNo match
8705*22dc650dSSadaf Ebrahimi
8706*22dc650dSSadaf Ebrahimi/(A (.*)   (?:C|) (*THEN)  | A D) z/x
8707*22dc650dSSadaf Ebrahimi\= Expect no match
8708*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8709*22dc650dSSadaf EbrahimiNo match
8710*22dc650dSSadaf Ebrahimi
8711*22dc650dSSadaf Ebrahimi/(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
8712*22dc650dSSadaf Ebrahimi\= Expect no match
8713*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8714*22dc650dSSadaf EbrahimiNo match
8715*22dc650dSSadaf Ebrahimi
8716*22dc650dSSadaf Ebrahimi/(A (.*)   C{0,6} (*THEN)  | A D) z/x
8717*22dc650dSSadaf Ebrahimi\= Expect no match
8718*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8719*22dc650dSSadaf EbrahimiNo match
8720*22dc650dSSadaf Ebrahimi
8721*22dc650dSSadaf Ebrahimi/(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
8722*22dc650dSSadaf Ebrahimi\= Expect no match
8723*22dc650dSSadaf Ebrahimi    AbcdCEBefgBhiBqz
8724*22dc650dSSadaf EbrahimiNo match
8725*22dc650dSSadaf Ebrahimi
8726*22dc650dSSadaf Ebrahimi/(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
8727*22dc650dSSadaf Ebrahimi\= Expect no match
8728*22dc650dSSadaf Ebrahimi    AbcdCEBefgBhiBqz
8729*22dc650dSSadaf EbrahimiNo match
8730*22dc650dSSadaf Ebrahimi
8731*22dc650dSSadaf Ebrahimi/(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
8732*22dc650dSSadaf Ebrahimi\= Expect no match
8733*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8734*22dc650dSSadaf EbrahimiNo match
8735*22dc650dSSadaf Ebrahimi
8736*22dc650dSSadaf Ebrahimi/(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
8737*22dc650dSSadaf Ebrahimi\= Expect no match
8738*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
8739*22dc650dSSadaf EbrahimiNo match
8740*22dc650dSSadaf Ebrahimi
8741*22dc650dSSadaf Ebrahimi/(?=a(*COMMIT)b|ac)ac|ac/
8742*22dc650dSSadaf Ebrahimi\= Expect no match
8743*22dc650dSSadaf Ebrahimi    ac
8744*22dc650dSSadaf EbrahimiNo match
8745*22dc650dSSadaf Ebrahimi
8746*22dc650dSSadaf Ebrahimi/(?=a(*COMMIT)b|(ac)) ac | (a)c/x
8747*22dc650dSSadaf Ebrahimi\= Expect no match
8748*22dc650dSSadaf Ebrahimi    ac
8749*22dc650dSSadaf EbrahimiNo match
8750*22dc650dSSadaf Ebrahimi
8751*22dc650dSSadaf Ebrahimi# ----
8752*22dc650dSSadaf Ebrahimi
8753*22dc650dSSadaf Ebrahimi/(?(?!b(*THEN)a)bn|bnn)/
8754*22dc650dSSadaf Ebrahimi    bnn
8755*22dc650dSSadaf Ebrahimi 0: bn
8756*22dc650dSSadaf Ebrahimi
8757*22dc650dSSadaf Ebrahimi/(?!b(*SKIP)a)bn|bnn/
8758*22dc650dSSadaf Ebrahimi    bnn
8759*22dc650dSSadaf Ebrahimi 0: bn
8760*22dc650dSSadaf Ebrahimi
8761*22dc650dSSadaf Ebrahimi/(?(?!b(*SKIP)a)bn|bnn)/
8762*22dc650dSSadaf Ebrahimi    bnn
8763*22dc650dSSadaf Ebrahimi 0: bn
8764*22dc650dSSadaf Ebrahimi
8765*22dc650dSSadaf Ebrahimi/(?!b(*PRUNE)a)bn|bnn/
8766*22dc650dSSadaf Ebrahimi    bnn
8767*22dc650dSSadaf Ebrahimi 0: bn
8768*22dc650dSSadaf Ebrahimi
8769*22dc650dSSadaf Ebrahimi/(?(?!b(*PRUNE)a)bn|bnn)/
8770*22dc650dSSadaf Ebrahimi    bnn
8771*22dc650dSSadaf Ebrahimi 0: bn
8772*22dc650dSSadaf Ebrahimi
8773*22dc650dSSadaf Ebrahimi/(?!b(*COMMIT)a)bn|bnn/
8774*22dc650dSSadaf Ebrahimi    bnn
8775*22dc650dSSadaf Ebrahimi 0: bn
8776*22dc650dSSadaf Ebrahimi
8777*22dc650dSSadaf Ebrahimi/(?(?!b(*COMMIT)a)bn|bnn)/
8778*22dc650dSSadaf Ebrahimi   bnn
8779*22dc650dSSadaf Ebrahimi 0: bn
8780*22dc650dSSadaf Ebrahimi
8781*22dc650dSSadaf Ebrahimi/(?=b(*SKIP)a)bn|bnn/
8782*22dc650dSSadaf Ebrahimi\= Expect no match
8783*22dc650dSSadaf Ebrahimi    bnn
8784*22dc650dSSadaf EbrahimiNo match
8785*22dc650dSSadaf Ebrahimi
8786*22dc650dSSadaf Ebrahimi/(?=b(*THEN)a)bn|bnn/
8787*22dc650dSSadaf Ebrahimi    bnn
8788*22dc650dSSadaf Ebrahimi 0: bnn
8789*22dc650dSSadaf Ebrahimi
8790*22dc650dSSadaf Ebrahimi/^(?!a(*SKIP)b)/
8791*22dc650dSSadaf Ebrahimi    ac
8792*22dc650dSSadaf Ebrahimi 0:
8793*22dc650dSSadaf Ebrahimi
8794*22dc650dSSadaf Ebrahimi/^(?!a(*SKIP)b)../
8795*22dc650dSSadaf Ebrahimi    acd
8796*22dc650dSSadaf Ebrahimi 0: ac
8797*22dc650dSSadaf Ebrahimi
8798*22dc650dSSadaf Ebrahimi/(?!a(*SKIP)b)../
8799*22dc650dSSadaf Ebrahimi    acd
8800*22dc650dSSadaf Ebrahimi 0: ac
8801*22dc650dSSadaf Ebrahimi
8802*22dc650dSSadaf Ebrahimi/^(?(?!a(*SKIP)b))/
8803*22dc650dSSadaf Ebrahimi    ac
8804*22dc650dSSadaf Ebrahimi 0:
8805*22dc650dSSadaf Ebrahimi
8806*22dc650dSSadaf Ebrahimi/^(?!a(*PRUNE)b)../
8807*22dc650dSSadaf Ebrahimi    acd
8808*22dc650dSSadaf Ebrahimi 0: ac
8809*22dc650dSSadaf Ebrahimi
8810*22dc650dSSadaf Ebrahimi/(?!a(*PRUNE)b)../
8811*22dc650dSSadaf Ebrahimi    acd
8812*22dc650dSSadaf Ebrahimi 0: ac
8813*22dc650dSSadaf Ebrahimi
8814*22dc650dSSadaf Ebrahimi/(?!a(*COMMIT)b)ac|cd/
8815*22dc650dSSadaf Ebrahimi    ac
8816*22dc650dSSadaf Ebrahimi 0: ac
8817*22dc650dSSadaf Ebrahimi
8818*22dc650dSSadaf Ebrahimi/\A.*?(?:a|bc)/
8819*22dc650dSSadaf Ebrahimi    ba
8820*22dc650dSSadaf Ebrahimi 0: ba
8821*22dc650dSSadaf Ebrahimi
8822*22dc650dSSadaf Ebrahimi/^(A(*THEN)B|C(*THEN)D)/
8823*22dc650dSSadaf Ebrahimi    CD
8824*22dc650dSSadaf Ebrahimi 0: CD
8825*22dc650dSSadaf Ebrahimi 1: CD
8826*22dc650dSSadaf Ebrahimi
8827*22dc650dSSadaf Ebrahimi/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8828*22dc650dSSadaf Ebrahimi    abc
8829*22dc650dSSadaf Ebrahimi 0: b
8830*22dc650dSSadaf EbrahimiMK: m(m
8831*22dc650dSSadaf Ebrahimi
8832*22dc650dSSadaf Ebrahimi/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8833*22dc650dSSadaf Ebrahimi    abc
8834*22dc650dSSadaf Ebrahimi 0: b
8835*22dc650dSSadaf EbrahimiMK: m(m
8836*22dc650dSSadaf Ebrahimi
8837*22dc650dSSadaf Ebrahimi/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8838*22dc650dSSadaf Ebrahimi    abc
8839*22dc650dSSadaf Ebrahimi 0: b
8840*22dc650dSSadaf Ebrahimi
8841*22dc650dSSadaf Ebrahimi/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
8842*22dc650dSSadaf Ebrahimi    abc
8843*22dc650dSSadaf Ebrahimi 0: b
8844*22dc650dSSadaf EbrahimiMK: m(m
8845*22dc650dSSadaf Ebrahimi
8846*22dc650dSSadaf Ebrahimi/^\d*\w{4}/
8847*22dc650dSSadaf Ebrahimi    1234
8848*22dc650dSSadaf Ebrahimi 0: 1234
8849*22dc650dSSadaf Ebrahimi\= Expect no match
8850*22dc650dSSadaf Ebrahimi    123
8851*22dc650dSSadaf EbrahimiNo match
8852*22dc650dSSadaf Ebrahimi
8853*22dc650dSSadaf Ebrahimi/^[^b]*\w{4}/
8854*22dc650dSSadaf Ebrahimi    aaaa
8855*22dc650dSSadaf Ebrahimi 0: aaaa
8856*22dc650dSSadaf Ebrahimi\= Expect no match
8857*22dc650dSSadaf Ebrahimi    aaa
8858*22dc650dSSadaf EbrahimiNo match
8859*22dc650dSSadaf Ebrahimi
8860*22dc650dSSadaf Ebrahimi/^[^b]*\w{4}/i
8861*22dc650dSSadaf Ebrahimi    aaaa
8862*22dc650dSSadaf Ebrahimi 0: aaaa
8863*22dc650dSSadaf Ebrahimi\= Expect no match
8864*22dc650dSSadaf Ebrahimi    aaa
8865*22dc650dSSadaf EbrahimiNo match
8866*22dc650dSSadaf Ebrahimi
8867*22dc650dSSadaf Ebrahimi/^a*\w{4}/
8868*22dc650dSSadaf Ebrahimi    aaaa
8869*22dc650dSSadaf Ebrahimi 0: aaaa
8870*22dc650dSSadaf Ebrahimi\= Expect no match
8871*22dc650dSSadaf Ebrahimi    aaa
8872*22dc650dSSadaf EbrahimiNo match
8873*22dc650dSSadaf Ebrahimi
8874*22dc650dSSadaf Ebrahimi/^a*\w{4}/i
8875*22dc650dSSadaf Ebrahimi    aaaa
8876*22dc650dSSadaf Ebrahimi 0: aaaa
8877*22dc650dSSadaf Ebrahimi\= Expect no match
8878*22dc650dSSadaf Ebrahimi    aaa
8879*22dc650dSSadaf EbrahimiNo match
8880*22dc650dSSadaf Ebrahimi
8881*22dc650dSSadaf Ebrahimi/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
8882*22dc650dSSadaf Ebrahimi    foofoo
8883*22dc650dSSadaf Ebrahimi 0: foofoo
8884*22dc650dSSadaf Ebrahimi 1: foo
8885*22dc650dSSadaf Ebrahimi    barbar
8886*22dc650dSSadaf Ebrahimi 0: barbar
8887*22dc650dSSadaf Ebrahimi 1: <unset>
8888*22dc650dSSadaf Ebrahimi 2: bar
8889*22dc650dSSadaf Ebrahimi
8890*22dc650dSSadaf Ebrahimi/(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
8891*22dc650dSSadaf Ebrahimi    AfooA
8892*22dc650dSSadaf Ebrahimi 0: AfooA
8893*22dc650dSSadaf Ebrahimi 1: A
8894*22dc650dSSadaf Ebrahimi 2: foo
8895*22dc650dSSadaf Ebrahimi    AbarA
8896*22dc650dSSadaf Ebrahimi 0: AbarA
8897*22dc650dSSadaf Ebrahimi 1: A
8898*22dc650dSSadaf Ebrahimi 2: <unset>
8899*22dc650dSSadaf Ebrahimi 3: bar
8900*22dc650dSSadaf Ebrahimi\= Expect no match
8901*22dc650dSSadaf Ebrahimi    Afoofoo
8902*22dc650dSSadaf EbrahimiNo match
8903*22dc650dSSadaf Ebrahimi    Abarbar
8904*22dc650dSSadaf EbrahimiNo match
8905*22dc650dSSadaf Ebrahimi
8906*22dc650dSSadaf Ebrahimi/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
8907*22dc650dSSadaf Ebrahimi    1 IN SOA non-sp1 non-sp2(
8908*22dc650dSSadaf Ebrahimi 0: 1 IN SOA non-sp1 non-sp2(
8909*22dc650dSSadaf Ebrahimi 1: 1
8910*22dc650dSSadaf Ebrahimi 2: non-sp1
8911*22dc650dSSadaf Ebrahimi 3: non-sp2
8912*22dc650dSSadaf Ebrahimi
8913*22dc650dSSadaf Ebrahimi/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/x,dupnames
8914*22dc650dSSadaf Ebrahimi    Ax
8915*22dc650dSSadaf Ebrahimi 0: Ax
8916*22dc650dSSadaf Ebrahimi 1: A
8917*22dc650dSSadaf Ebrahimi    BAxy
8918*22dc650dSSadaf Ebrahimi 0: BAxy
8919*22dc650dSSadaf Ebrahimi 1: <unset>
8920*22dc650dSSadaf Ebrahimi 2: B
8921*22dc650dSSadaf Ebrahimi 3: A
8922*22dc650dSSadaf Ebrahimi
8923*22dc650dSSadaf Ebrahimi/^A\xZ/
8924*22dc650dSSadaf Ebrahimi    A\0Z
8925*22dc650dSSadaf Ebrahimi 0: A\x00Z
8926*22dc650dSSadaf Ebrahimi
8927*22dc650dSSadaf Ebrahimi/^A\o{123}B/
8928*22dc650dSSadaf Ebrahimi    A\123B
8929*22dc650dSSadaf Ebrahimi 0: ASB
8930*22dc650dSSadaf Ebrahimi
8931*22dc650dSSadaf Ebrahimi/ ^ a + + b $ /x
8932*22dc650dSSadaf Ebrahimi    aaaab
8933*22dc650dSSadaf Ebrahimi 0: aaaab
8934*22dc650dSSadaf Ebrahimi
8935*22dc650dSSadaf Ebrahimi/ ^ a + #comment
8936*22dc650dSSadaf Ebrahimi  + b $ /x
8937*22dc650dSSadaf Ebrahimi    aaaab
8938*22dc650dSSadaf Ebrahimi 0: aaaab
8939*22dc650dSSadaf Ebrahimi
8940*22dc650dSSadaf Ebrahimi/ ^ a + #comment
8941*22dc650dSSadaf Ebrahimi  #comment
8942*22dc650dSSadaf Ebrahimi  + b $ /x
8943*22dc650dSSadaf Ebrahimi    aaaab
8944*22dc650dSSadaf Ebrahimi 0: aaaab
8945*22dc650dSSadaf Ebrahimi
8946*22dc650dSSadaf Ebrahimi/ ^ (?> a + ) b $ /x
8947*22dc650dSSadaf Ebrahimi    aaaab
8948*22dc650dSSadaf Ebrahimi 0: aaaab
8949*22dc650dSSadaf Ebrahimi
8950*22dc650dSSadaf Ebrahimi/ ^ ( a + ) + + \w $ /x
8951*22dc650dSSadaf Ebrahimi    aaaab
8952*22dc650dSSadaf Ebrahimi 0: aaaab
8953*22dc650dSSadaf Ebrahimi 1: aaaa
8954*22dc650dSSadaf Ebrahimi
8955*22dc650dSSadaf Ebrahimi/(?:a\Kb)*+/aftertext
8956*22dc650dSSadaf Ebrahimi    ababc
8957*22dc650dSSadaf Ebrahimi 0: b
8958*22dc650dSSadaf Ebrahimi 0+ c
8959*22dc650dSSadaf Ebrahimi
8960*22dc650dSSadaf Ebrahimi/(?>a\Kb)*/aftertext
8961*22dc650dSSadaf Ebrahimi    ababc
8962*22dc650dSSadaf Ebrahimi 0: b
8963*22dc650dSSadaf Ebrahimi 0+ c
8964*22dc650dSSadaf Ebrahimi
8965*22dc650dSSadaf Ebrahimi/(?:a\Kb)*/aftertext
8966*22dc650dSSadaf Ebrahimi    ababc
8967*22dc650dSSadaf Ebrahimi 0: b
8968*22dc650dSSadaf Ebrahimi 0+ c
8969*22dc650dSSadaf Ebrahimi
8970*22dc650dSSadaf Ebrahimi/(a\Kb)*+/aftertext
8971*22dc650dSSadaf Ebrahimi    ababc
8972*22dc650dSSadaf Ebrahimi 0: b
8973*22dc650dSSadaf Ebrahimi 0+ c
8974*22dc650dSSadaf Ebrahimi 1: ab
8975*22dc650dSSadaf Ebrahimi
8976*22dc650dSSadaf Ebrahimi/(a\Kb)*/aftertext
8977*22dc650dSSadaf Ebrahimi    ababc
8978*22dc650dSSadaf Ebrahimi 0: b
8979*22dc650dSSadaf Ebrahimi 0+ c
8980*22dc650dSSadaf Ebrahimi 1: ab
8981*22dc650dSSadaf Ebrahimi
8982*22dc650dSSadaf Ebrahimi/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
8983*22dc650dSSadaf Ebrahimi\= Expect no match
8984*22dc650dSSadaf Ebrahimi    acb
8985*22dc650dSSadaf EbrahimiNo match
8986*22dc650dSSadaf Ebrahimi
8987*22dc650dSSadaf Ebrahimi/\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++/
8988*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
8989*22dc650dSSadaf Ebrahimi 0: NON QUOTED "QUOT""ED" AFTER
8990*22dc650dSSadaf Ebrahimi
8991*22dc650dSSadaf Ebrahimi/\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++/
8992*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
8993*22dc650dSSadaf Ebrahimi 0: NON QUOTED "QUOT""ED" AFTER
8994*22dc650dSSadaf Ebrahimi
8995*22dc650dSSadaf Ebrahimi/\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++/
8996*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
8997*22dc650dSSadaf Ebrahimi 0: NON QUOTED "QUOT""ED" AFTER
8998*22dc650dSSadaf Ebrahimi
8999*22dc650dSSadaf Ebrahimi/\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++/
9000*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
9001*22dc650dSSadaf Ebrahimi 0: NON QUOTED "QUOT""ED" AFTER
9002*22dc650dSSadaf Ebrahimi 1:  AFTER
9003*22dc650dSSadaf Ebrahimi 2:
9004*22dc650dSSadaf Ebrahimi
9005*22dc650dSSadaf Ebrahimi/^\w+(?>\s*)(?<=\w)/
9006*22dc650dSSadaf Ebrahimi    test test
9007*22dc650dSSadaf Ebrahimi 0: tes
9008*22dc650dSSadaf Ebrahimi
9009*22dc650dSSadaf Ebrahimi/(?P<same>a)(?P<same>b)/g,dupnames
9010*22dc650dSSadaf Ebrahimi    abbaba
9011*22dc650dSSadaf Ebrahimi 0: ab
9012*22dc650dSSadaf Ebrahimi 1: a
9013*22dc650dSSadaf Ebrahimi 2: b
9014*22dc650dSSadaf Ebrahimi 0: ab
9015*22dc650dSSadaf Ebrahimi 1: a
9016*22dc650dSSadaf Ebrahimi 2: b
9017*22dc650dSSadaf Ebrahimi
9018*22dc650dSSadaf Ebrahimi/(?P<same>a)(?P<same>b)(?P=same)/g,dupnames
9019*22dc650dSSadaf Ebrahimi    abbaba
9020*22dc650dSSadaf Ebrahimi 0: aba
9021*22dc650dSSadaf Ebrahimi 1: a
9022*22dc650dSSadaf Ebrahimi 2: b
9023*22dc650dSSadaf Ebrahimi
9024*22dc650dSSadaf Ebrahimi/(?P=same)?(?P<same>a)(?P<same>b)/g,dupnames
9025*22dc650dSSadaf Ebrahimi    abbaba
9026*22dc650dSSadaf Ebrahimi 0: ab
9027*22dc650dSSadaf Ebrahimi 1: a
9028*22dc650dSSadaf Ebrahimi 2: b
9029*22dc650dSSadaf Ebrahimi 0: ab
9030*22dc650dSSadaf Ebrahimi 1: a
9031*22dc650dSSadaf Ebrahimi 2: b
9032*22dc650dSSadaf Ebrahimi
9033*22dc650dSSadaf Ebrahimi/(?:(?P=same)?(?:(?P=same)(?P<same>a)(?P=same)|(?P=same)?(?P<same>b)(?P=same)){2}(?P=same)(?P<same>c)(?P=same)){2}(?P<same>z)?/g,dupnames
9034*22dc650dSSadaf Ebrahimi\= Expect no match
9035*22dc650dSSadaf Ebrahimi    bbbaaaccccaaabbbcc
9036*22dc650dSSadaf EbrahimiNo match
9037*22dc650dSSadaf Ebrahimi
9038*22dc650dSSadaf Ebrahimi/(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
9039*22dc650dSSadaf Ebrahimi    acl
9040*22dc650dSSadaf Ebrahimi 0: acl
9041*22dc650dSSadaf Ebrahimi 1: a
9042*22dc650dSSadaf Ebrahimi    bdl
9043*22dc650dSSadaf Ebrahimi 0: bdl
9044*22dc650dSSadaf Ebrahimi 1: <unset>
9045*22dc650dSSadaf Ebrahimi 2: b
9046*22dc650dSSadaf Ebrahimi    adl
9047*22dc650dSSadaf Ebrahimi 0: dl
9048*22dc650dSSadaf Ebrahimi    bcl
9049*22dc650dSSadaf Ebrahimi 0: l
9050*22dc650dSSadaf Ebrahimi
9051*22dc650dSSadaf Ebrahimi/\sabc/
9052*22dc650dSSadaf Ebrahimi    \x{0b}abc
9053*22dc650dSSadaf Ebrahimi 0: \x0babc
9054*22dc650dSSadaf Ebrahimi
9055*22dc650dSSadaf Ebrahimi/[\Qa]\E]+/
9056*22dc650dSSadaf Ebrahimi    aa]]
9057*22dc650dSSadaf Ebrahimi 0: aa]]
9058*22dc650dSSadaf Ebrahimi
9059*22dc650dSSadaf Ebrahimi/[\Q]a\E]+/
9060*22dc650dSSadaf Ebrahimi    aa]]
9061*22dc650dSSadaf Ebrahimi 0: aa]]
9062*22dc650dSSadaf Ebrahimi
9063*22dc650dSSadaf Ebrahimi/A((((((((a))))))))\8B/
9064*22dc650dSSadaf Ebrahimi    AaaB
9065*22dc650dSSadaf Ebrahimi 0: AaaB
9066*22dc650dSSadaf Ebrahimi 1: a
9067*22dc650dSSadaf Ebrahimi 2: a
9068*22dc650dSSadaf Ebrahimi 3: a
9069*22dc650dSSadaf Ebrahimi 4: a
9070*22dc650dSSadaf Ebrahimi 5: a
9071*22dc650dSSadaf Ebrahimi 6: a
9072*22dc650dSSadaf Ebrahimi 7: a
9073*22dc650dSSadaf Ebrahimi 8: a
9074*22dc650dSSadaf Ebrahimi
9075*22dc650dSSadaf Ebrahimi/A(((((((((a)))))))))\9B/
9076*22dc650dSSadaf Ebrahimi    AaaB
9077*22dc650dSSadaf Ebrahimi 0: AaaB
9078*22dc650dSSadaf Ebrahimi 1: a
9079*22dc650dSSadaf Ebrahimi 2: a
9080*22dc650dSSadaf Ebrahimi 3: a
9081*22dc650dSSadaf Ebrahimi 4: a
9082*22dc650dSSadaf Ebrahimi 5: a
9083*22dc650dSSadaf Ebrahimi 6: a
9084*22dc650dSSadaf Ebrahimi 7: a
9085*22dc650dSSadaf Ebrahimi 8: a
9086*22dc650dSSadaf Ebrahimi 9: a
9087*22dc650dSSadaf Ebrahimi
9088*22dc650dSSadaf Ebrahimi/A[\8\9]B/
9089*22dc650dSSadaf Ebrahimi    A8B
9090*22dc650dSSadaf Ebrahimi 0: A8B
9091*22dc650dSSadaf Ebrahimi    A9B
9092*22dc650dSSadaf Ebrahimi 0: A9B
9093*22dc650dSSadaf Ebrahimi
9094*22dc650dSSadaf Ebrahimi/(|ab)*?d/
9095*22dc650dSSadaf Ebrahimi   abd
9096*22dc650dSSadaf Ebrahimi 0: abd
9097*22dc650dSSadaf Ebrahimi 1: ab
9098*22dc650dSSadaf Ebrahimi   xyd
9099*22dc650dSSadaf Ebrahimi 0: d
9100*22dc650dSSadaf Ebrahimi
9101*22dc650dSSadaf Ebrahimi/(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
9102*22dc650dSSadaf Ebrahimi    1234abcd
9103*22dc650dSSadaf Ebrahimi 0:
9104*22dc650dSSadaf Ebrahimi 1: <unset>
9105*22dc650dSSadaf Ebrahimi 2: <unset>
9106*22dc650dSSadaf Ebrahimi 3: <unset>
9107*22dc650dSSadaf Ebrahimi 4: <unset>
9108*22dc650dSSadaf Ebrahimi 5:
9109*22dc650dSSadaf Ebrahimi
9110*22dc650dSSadaf Ebrahimi/(\2|a)(\1)/
9111*22dc650dSSadaf Ebrahimi    aaa
9112*22dc650dSSadaf Ebrahimi 0: aa
9113*22dc650dSSadaf Ebrahimi 1: a
9114*22dc650dSSadaf Ebrahimi 2: a
9115*22dc650dSSadaf Ebrahimi
9116*22dc650dSSadaf Ebrahimi/(\2)(\1)/
9117*22dc650dSSadaf Ebrahimi
9118*22dc650dSSadaf Ebrahimi/Z*(|d*){216}/
9119*22dc650dSSadaf Ebrahimi
9120*22dc650dSSadaf Ebrahimi/(?1)(?#?'){8}(a)/
9121*22dc650dSSadaf Ebrahimi    baaaaaaaaac
9122*22dc650dSSadaf Ebrahimi 0: aaaaaaaaa
9123*22dc650dSSadaf Ebrahimi 1: a
9124*22dc650dSSadaf Ebrahimi
9125*22dc650dSSadaf Ebrahimi/((((((((((((x))))))))))))\12/
9126*22dc650dSSadaf Ebrahimi    xx
9127*22dc650dSSadaf Ebrahimi 0: xx
9128*22dc650dSSadaf Ebrahimi 1: x
9129*22dc650dSSadaf Ebrahimi 2: x
9130*22dc650dSSadaf Ebrahimi 3: x
9131*22dc650dSSadaf Ebrahimi 4: x
9132*22dc650dSSadaf Ebrahimi 5: x
9133*22dc650dSSadaf Ebrahimi 6: x
9134*22dc650dSSadaf Ebrahimi 7: x
9135*22dc650dSSadaf Ebrahimi 8: x
9136*22dc650dSSadaf Ebrahimi 9: x
9137*22dc650dSSadaf Ebrahimi10: x
9138*22dc650dSSadaf Ebrahimi11: x
9139*22dc650dSSadaf Ebrahimi12: x
9140*22dc650dSSadaf Ebrahimi
9141*22dc650dSSadaf Ebrahimi/A[\8]B[\9]C/
9142*22dc650dSSadaf Ebrahimi    A8B9C
9143*22dc650dSSadaf Ebrahimi 0: A8B9C
9144*22dc650dSSadaf Ebrahimi
9145*22dc650dSSadaf Ebrahimi/(?1)()((((((\1++))\x85)+)|))/
9146*22dc650dSSadaf Ebrahimi    \x85\x85
9147*22dc650dSSadaf Ebrahimi 0: \x85\x85
9148*22dc650dSSadaf Ebrahimi 1:
9149*22dc650dSSadaf Ebrahimi 2: \x85\x85
9150*22dc650dSSadaf Ebrahimi 3: \x85\x85
9151*22dc650dSSadaf Ebrahimi 4: \x85\x85
9152*22dc650dSSadaf Ebrahimi 5: \x85
9153*22dc650dSSadaf Ebrahimi 6:
9154*22dc650dSSadaf Ebrahimi 7:
9155*22dc650dSSadaf Ebrahimi
9156*22dc650dSSadaf Ebrahimi/(?|(\k'Pm')|(?'Pm'))/
9157*22dc650dSSadaf Ebrahimi    abcd
9158*22dc650dSSadaf Ebrahimi 0:
9159*22dc650dSSadaf Ebrahimi 1:
9160*22dc650dSSadaf Ebrahimi
9161*22dc650dSSadaf Ebrahimi/(?|(aaa)|(b))\g{1}/
9162*22dc650dSSadaf Ebrahimi    aaaaaa
9163*22dc650dSSadaf Ebrahimi 0: aaaaaa
9164*22dc650dSSadaf Ebrahimi 1: aaa
9165*22dc650dSSadaf Ebrahimi    bb
9166*22dc650dSSadaf Ebrahimi 0: bb
9167*22dc650dSSadaf Ebrahimi 1: b
9168*22dc650dSSadaf Ebrahimi
9169*22dc650dSSadaf Ebrahimi/(?|(aaa)|(b))(?1)/
9170*22dc650dSSadaf Ebrahimi    aaaaaa
9171*22dc650dSSadaf Ebrahimi 0: aaaaaa
9172*22dc650dSSadaf Ebrahimi 1: aaa
9173*22dc650dSSadaf Ebrahimi    baaa
9174*22dc650dSSadaf Ebrahimi 0: baaa
9175*22dc650dSSadaf Ebrahimi 1: b
9176*22dc650dSSadaf Ebrahimi\= Expect no match
9177*22dc650dSSadaf Ebrahimi    bb
9178*22dc650dSSadaf EbrahimiNo match
9179*22dc650dSSadaf Ebrahimi
9180*22dc650dSSadaf Ebrahimi/(?|(aaa)|(b))/
9181*22dc650dSSadaf Ebrahimi    xaaa
9182*22dc650dSSadaf Ebrahimi 0: aaa
9183*22dc650dSSadaf Ebrahimi 1: aaa
9184*22dc650dSSadaf Ebrahimi    xbc
9185*22dc650dSSadaf Ebrahimi 0: b
9186*22dc650dSSadaf Ebrahimi 1: b
9187*22dc650dSSadaf Ebrahimi
9188*22dc650dSSadaf Ebrahimi/(?|(?'a'aaa)|(?'a'b))\k'a'/
9189*22dc650dSSadaf Ebrahimi    aaaaaa
9190*22dc650dSSadaf Ebrahimi 0: aaaaaa
9191*22dc650dSSadaf Ebrahimi 1: aaa
9192*22dc650dSSadaf Ebrahimi    bb
9193*22dc650dSSadaf Ebrahimi 0: bb
9194*22dc650dSSadaf Ebrahimi 1: b
9195*22dc650dSSadaf Ebrahimi
9196*22dc650dSSadaf Ebrahimi/(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/dupnames
9197*22dc650dSSadaf Ebrahimi    aaaccccaaa
9198*22dc650dSSadaf Ebrahimi 0: aaaccccaaa
9199*22dc650dSSadaf Ebrahimi 1: aaa
9200*22dc650dSSadaf Ebrahimi 2: cccc
9201*22dc650dSSadaf Ebrahimi    bccccb
9202*22dc650dSSadaf Ebrahimi 0: bccccb
9203*22dc650dSSadaf Ebrahimi 1: b
9204*22dc650dSSadaf Ebrahimi 2: cccc
9205*22dc650dSSadaf Ebrahimi
9206*22dc650dSSadaf Ebrahimi# /x does not apply to MARK labels
9207*22dc650dSSadaf Ebrahimi
9208*22dc650dSSadaf Ebrahimi/x (*MARK:ab cd # comment
9209*22dc650dSSadaf Ebrahimief) x/x,mark
9210*22dc650dSSadaf Ebrahimi    axxz
9211*22dc650dSSadaf Ebrahimi 0: xx
9212*22dc650dSSadaf EbrahimiMK: ab cd # comment\x0aef
9213*22dc650dSSadaf Ebrahimi
9214*22dc650dSSadaf Ebrahimi/(?<=a(B){0}c)X/
9215*22dc650dSSadaf Ebrahimi    acX
9216*22dc650dSSadaf Ebrahimi 0: X
9217*22dc650dSSadaf Ebrahimi
9218*22dc650dSSadaf Ebrahimi/(?<DEFINE>b)(?(DEFINE)(a+))(?&DEFINE)/
9219*22dc650dSSadaf Ebrahimi    bbbb
9220*22dc650dSSadaf Ebrahimi 0: bb
9221*22dc650dSSadaf Ebrahimi 1: b
9222*22dc650dSSadaf Ebrahimi\= Expect no match
9223*22dc650dSSadaf Ebrahimi    baaab
9224*22dc650dSSadaf EbrahimiNo match
9225*22dc650dSSadaf Ebrahimi
9226*22dc650dSSadaf Ebrahimi/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])/
9227*22dc650dSSadaf Ebrahimi    \   Fred:099
9228*22dc650dSSadaf Ebrahimi 0:
9229*22dc650dSSadaf Ebrahimi
9230*22dc650dSSadaf Ebrahimi/(?=.*X)X$/
9231*22dc650dSSadaf Ebrahimi    \  X
9232*22dc650dSSadaf Ebrahimi 0: X
9233*22dc650dSSadaf Ebrahimi
9234*22dc650dSSadaf Ebrahimi/(?s)(?=.*?)b/
9235*22dc650dSSadaf Ebrahimi    aabc
9236*22dc650dSSadaf Ebrahimi 0: b
9237*22dc650dSSadaf Ebrahimi
9238*22dc650dSSadaf Ebrahimi/(Z)(a)\2{1,2}?(?-i)\1X/i
9239*22dc650dSSadaf Ebrahimi    ZaAAZX
9240*22dc650dSSadaf Ebrahimi 0: ZaAAZX
9241*22dc650dSSadaf Ebrahimi 1: Z
9242*22dc650dSSadaf Ebrahimi 2: a
9243*22dc650dSSadaf Ebrahimi
9244*22dc650dSSadaf Ebrahimi/(?'c')XX(?'YYYYYYYYYYYYYYYYYYYYYYYCl')/
9245*22dc650dSSadaf Ebrahimi
9246*22dc650dSSadaf Ebrahimi/[s[:digit:]\E-H]+/
9247*22dc650dSSadaf Ebrahimi    s09-H
9248*22dc650dSSadaf Ebrahimi 0: s09-H
9249*22dc650dSSadaf Ebrahimi
9250*22dc650dSSadaf Ebrahimi/[s[:digit:]\Q\E-H]+/
9251*22dc650dSSadaf Ebrahimi    s09-H
9252*22dc650dSSadaf Ebrahimi 0: s09-H
9253*22dc650dSSadaf Ebrahimi
9254*22dc650dSSadaf Ebrahimi/a+(?:|b)a/
9255*22dc650dSSadaf Ebrahimi    aaaa
9256*22dc650dSSadaf Ebrahimi 0: aaaa
9257*22dc650dSSadaf Ebrahimi
9258*22dc650dSSadaf Ebrahimi/X?(R||){3335}/
9259*22dc650dSSadaf Ebrahimi
9260*22dc650dSSadaf Ebrahimi/(?1)(A(*COMMIT)|B)D/
9261*22dc650dSSadaf Ebrahimi    ABD
9262*22dc650dSSadaf Ebrahimi 0: ABD
9263*22dc650dSSadaf Ebrahimi 1: B
9264*22dc650dSSadaf Ebrahimi    XABD
9265*22dc650dSSadaf Ebrahimi 0: ABD
9266*22dc650dSSadaf Ebrahimi 1: B
9267*22dc650dSSadaf Ebrahimi    BAD
9268*22dc650dSSadaf Ebrahimi 0: BAD
9269*22dc650dSSadaf Ebrahimi 1: A
9270*22dc650dSSadaf Ebrahimi    ABXABD
9271*22dc650dSSadaf Ebrahimi 0: ABD
9272*22dc650dSSadaf Ebrahimi 1: B
9273*22dc650dSSadaf Ebrahimi\= Expect no match
9274*22dc650dSSadaf Ebrahimi    ABX
9275*22dc650dSSadaf EbrahimiNo match
9276*22dc650dSSadaf Ebrahimi
9277*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<m> 1? (?=(?<cond>2)?) 1 2 (?('cond')|3)))
9278*22dc650dSSadaf Ebrahimi    \A
9279*22dc650dSSadaf Ebrahimi    ()
9280*22dc650dSSadaf Ebrahimi    (?&m)
9281*22dc650dSSadaf Ebrahimi    \Z/x
9282*22dc650dSSadaf Ebrahimi    123
9283*22dc650dSSadaf Ebrahimi 0: 123
9284*22dc650dSSadaf Ebrahimi 1: <unset>
9285*22dc650dSSadaf Ebrahimi 2: <unset>
9286*22dc650dSSadaf Ebrahimi 3:
9287*22dc650dSSadaf Ebrahimi
9288*22dc650dSSadaf Ebrahimi/^(?:
9289*22dc650dSSadaf Ebrahimi(?: A| (1? (?=(?<cond>2)?) (1) 2 (?('cond')|3)) )
9290*22dc650dSSadaf Ebrahimi(Z)
9291*22dc650dSSadaf Ebrahimi)+$/x
9292*22dc650dSSadaf Ebrahimi    AZ123Z
9293*22dc650dSSadaf Ebrahimi 0: AZ123Z
9294*22dc650dSSadaf Ebrahimi 1: 123
9295*22dc650dSSadaf Ebrahimi 2: <unset>
9296*22dc650dSSadaf Ebrahimi 3: 1
9297*22dc650dSSadaf Ebrahimi 4: Z
9298*22dc650dSSadaf Ebrahimi\= Expect no match
9299*22dc650dSSadaf Ebrahimi    AZ12Z
9300*22dc650dSSadaf EbrahimiNo match
9301*22dc650dSSadaf Ebrahimi
9302*22dc650dSSadaf Ebrahimi/^ (?(DEFINE) ( (?!(a)\2b)..) )   ()(?1)  /x
9303*22dc650dSSadaf Ebrahimi    acb
9304*22dc650dSSadaf Ebrahimi 0: ac
9305*22dc650dSSadaf Ebrahimi 1: <unset>
9306*22dc650dSSadaf Ebrahimi 2: <unset>
9307*22dc650dSSadaf Ebrahimi 3:
9308*22dc650dSSadaf Ebrahimi\= Expect no match
9309*22dc650dSSadaf Ebrahimi    aab
9310*22dc650dSSadaf EbrahimiNo match
9311*22dc650dSSadaf Ebrahimi
9312*22dc650dSSadaf Ebrahimi/(?>ab|abab){1,5}?M/
9313*22dc650dSSadaf Ebrahimi    abababababababababababM
9314*22dc650dSSadaf Ebrahimi 0: abababababM
9315*22dc650dSSadaf Ebrahimi
9316*22dc650dSSadaf Ebrahimi/(?>ab|abab){2}?M/
9317*22dc650dSSadaf Ebrahimi    abababM
9318*22dc650dSSadaf Ebrahimi 0: ababM
9319*22dc650dSSadaf Ebrahimi
9320*22dc650dSSadaf Ebrahimi/((?(?=(a))a)+k)/
9321*22dc650dSSadaf Ebrahimi    bbak
9322*22dc650dSSadaf Ebrahimi 0: ak
9323*22dc650dSSadaf Ebrahimi 1: ak
9324*22dc650dSSadaf Ebrahimi 2: a
9325*22dc650dSSadaf Ebrahimi
9326*22dc650dSSadaf Ebrahimi/((?(?=(a))a|)+k)/
9327*22dc650dSSadaf Ebrahimi    bbak
9328*22dc650dSSadaf Ebrahimi 0: ak
9329*22dc650dSSadaf Ebrahimi 1: ak
9330*22dc650dSSadaf Ebrahimi 2: a
9331*22dc650dSSadaf Ebrahimi
9332*22dc650dSSadaf Ebrahimi/(?(?!(b))a|b)+k/
9333*22dc650dSSadaf Ebrahimi    ababbalbbadabak
9334*22dc650dSSadaf Ebrahimi 0: abak
9335*22dc650dSSadaf Ebrahimi 1: b
9336*22dc650dSSadaf Ebrahimi
9337*22dc650dSSadaf Ebrahimi/(?!(b))c|b/
9338*22dc650dSSadaf Ebrahimi    Ab
9339*22dc650dSSadaf Ebrahimi 0: b
9340*22dc650dSSadaf Ebrahimi    Ac
9341*22dc650dSSadaf Ebrahimi 0: c
9342*22dc650dSSadaf Ebrahimi
9343*22dc650dSSadaf Ebrahimi/(?=(b))b|c/
9344*22dc650dSSadaf Ebrahimi    Ab
9345*22dc650dSSadaf Ebrahimi 0: b
9346*22dc650dSSadaf Ebrahimi 1: b
9347*22dc650dSSadaf Ebrahimi    Ac
9348*22dc650dSSadaf Ebrahimi 0: c
9349*22dc650dSSadaf Ebrahimi
9350*22dc650dSSadaf Ebrahimi/^(.|(.)(?1)\2)$/
9351*22dc650dSSadaf Ebrahimi    a
9352*22dc650dSSadaf Ebrahimi 0: a
9353*22dc650dSSadaf Ebrahimi 1: a
9354*22dc650dSSadaf Ebrahimi    aba
9355*22dc650dSSadaf Ebrahimi 0: aba
9356*22dc650dSSadaf Ebrahimi 1: aba
9357*22dc650dSSadaf Ebrahimi 2: a
9358*22dc650dSSadaf Ebrahimi    abcba
9359*22dc650dSSadaf Ebrahimi 0: abcba
9360*22dc650dSSadaf Ebrahimi 1: abcba
9361*22dc650dSSadaf Ebrahimi 2: a
9362*22dc650dSSadaf Ebrahimi    ababa
9363*22dc650dSSadaf Ebrahimi 0: ababa
9364*22dc650dSSadaf Ebrahimi 1: ababa
9365*22dc650dSSadaf Ebrahimi 2: a
9366*22dc650dSSadaf Ebrahimi    abcdcba
9367*22dc650dSSadaf Ebrahimi 0: abcdcba
9368*22dc650dSSadaf Ebrahimi 1: abcdcba
9369*22dc650dSSadaf Ebrahimi 2: a
9370*22dc650dSSadaf Ebrahimi
9371*22dc650dSSadaf Ebrahimi/^((.)(?1)\2|.?)$/
9372*22dc650dSSadaf Ebrahimi    a
9373*22dc650dSSadaf Ebrahimi 0: a
9374*22dc650dSSadaf Ebrahimi 1: a
9375*22dc650dSSadaf Ebrahimi    aba
9376*22dc650dSSadaf Ebrahimi 0: aba
9377*22dc650dSSadaf Ebrahimi 1: aba
9378*22dc650dSSadaf Ebrahimi 2: a
9379*22dc650dSSadaf Ebrahimi    abba
9380*22dc650dSSadaf Ebrahimi 0: abba
9381*22dc650dSSadaf Ebrahimi 1: abba
9382*22dc650dSSadaf Ebrahimi 2: a
9383*22dc650dSSadaf Ebrahimi    abcba
9384*22dc650dSSadaf Ebrahimi 0: abcba
9385*22dc650dSSadaf Ebrahimi 1: abcba
9386*22dc650dSSadaf Ebrahimi 2: a
9387*22dc650dSSadaf Ebrahimi    ababa
9388*22dc650dSSadaf Ebrahimi 0: ababa
9389*22dc650dSSadaf Ebrahimi 1: ababa
9390*22dc650dSSadaf Ebrahimi 2: a
9391*22dc650dSSadaf Ebrahimi    abccba
9392*22dc650dSSadaf Ebrahimi 0: abccba
9393*22dc650dSSadaf Ebrahimi 1: abccba
9394*22dc650dSSadaf Ebrahimi 2: a
9395*22dc650dSSadaf Ebrahimi    abcdcba
9396*22dc650dSSadaf Ebrahimi 0: abcdcba
9397*22dc650dSSadaf Ebrahimi 1: abcdcba
9398*22dc650dSSadaf Ebrahimi 2: a
9399*22dc650dSSadaf Ebrahimi    abcddcba
9400*22dc650dSSadaf Ebrahimi 0: abcddcba
9401*22dc650dSSadaf Ebrahimi 1: abcddcba
9402*22dc650dSSadaf Ebrahimi 2: a
9403*22dc650dSSadaf Ebrahimi
9404*22dc650dSSadaf Ebrahimi/^(.)(\1|a(?2))/
9405*22dc650dSSadaf Ebrahimi    bab
9406*22dc650dSSadaf Ebrahimi 0: bab
9407*22dc650dSSadaf Ebrahimi 1: b
9408*22dc650dSSadaf Ebrahimi 2: ab
9409*22dc650dSSadaf Ebrahimi
9410*22dc650dSSadaf Ebrahimi/^(.|(.)(?1)?\2)$/
9411*22dc650dSSadaf Ebrahimi    abcba
9412*22dc650dSSadaf Ebrahimi 0: abcba
9413*22dc650dSSadaf Ebrahimi 1: abcba
9414*22dc650dSSadaf Ebrahimi 2: a
9415*22dc650dSSadaf Ebrahimi
9416*22dc650dSSadaf Ebrahimi/^(?(?=(a))abc|def)/
9417*22dc650dSSadaf Ebrahimi    abc
9418*22dc650dSSadaf Ebrahimi 0: abc
9419*22dc650dSSadaf Ebrahimi 1: a
9420*22dc650dSSadaf Ebrahimi
9421*22dc650dSSadaf Ebrahimi/^(?(?!(a))def|abc)/
9422*22dc650dSSadaf Ebrahimi    abc
9423*22dc650dSSadaf Ebrahimi 0: abc
9424*22dc650dSSadaf Ebrahimi 1: a
9425*22dc650dSSadaf Ebrahimi
9426*22dc650dSSadaf Ebrahimi/^(?(?=(a)(*ACCEPT))abc|def)/
9427*22dc650dSSadaf Ebrahimi    abc
9428*22dc650dSSadaf Ebrahimi 0: abc
9429*22dc650dSSadaf Ebrahimi 1: a
9430*22dc650dSSadaf Ebrahimi
9431*22dc650dSSadaf Ebrahimi/^(?(?!(a)(*ACCEPT))def|abc)/
9432*22dc650dSSadaf Ebrahimi    abc
9433*22dc650dSSadaf Ebrahimi 0: abc
9434*22dc650dSSadaf Ebrahimi 1: a
9435*22dc650dSSadaf Ebrahimi
9436*22dc650dSSadaf Ebrahimi/^(?1)\d{3}(a)/
9437*22dc650dSSadaf Ebrahimi    a123a
9438*22dc650dSSadaf Ebrahimi 0: a123a
9439*22dc650dSSadaf Ebrahimi 1: a
9440*22dc650dSSadaf Ebrahimi
9441*22dc650dSSadaf Ebrahimi# This pattern uses a lot of named subpatterns in order to match email
9442*22dc650dSSadaf Ebrahimi# addresses in various formats. It's a heavy test for named subpatterns. In the
9443*22dc650dSSadaf Ebrahimi# <atext> group, slash is coded as \x{2f} so that this pattern can also be
9444*22dc650dSSadaf Ebrahimi# processed by perltest.sh, which does not cater for an escaped delimiter
9445*22dc650dSSadaf Ebrahimi# within the pattern. $ within the pattern must also be escaped. All $ and @
9446*22dc650dSSadaf Ebrahimi# characters in subject strings are escaped so that Perl doesn't interpret them
9447*22dc650dSSadaf Ebrahimi# as variable insertions and " characters must also be escaped for Perl.
9448*22dc650dSSadaf Ebrahimi
9449*22dc650dSSadaf Ebrahimi# This set of subpatterns is more or less a direct transliteration of the BNF
9450*22dc650dSSadaf Ebrahimi# definitions in RFC2822, without any of the obsolete features. The addition of
9451*22dc650dSSadaf Ebrahimi# a possessive + to the definition of <phrase> reduced the match limit in PCRE2
9452*22dc650dSSadaf Ebrahimi# from over 5 million to just under 400, and eliminated a very noticeable delay
9453*22dc650dSSadaf Ebrahimi# when this file was passed to perltest.sh.
9454*22dc650dSSadaf Ebrahimi
9455*22dc650dSSadaf Ebrahimi/(?ix)(?(DEFINE)
9456*22dc650dSSadaf Ebrahimi(?<addr_spec>       (?&local_part) \@ (?&domain) )
9457*22dc650dSSadaf Ebrahimi(?<angle_addr>      (?&CFWS)?+ < (?&addr_spec) > (?&CFWS)?+ )
9458*22dc650dSSadaf Ebrahimi(?<atext>           [a-z\d!#\$%&'*+-\x{2f}=?^_`{|}~] )
9459*22dc650dSSadaf Ebrahimi(?<atom>            (?&CFWS)?+ (?&atext)+ (?&CFWS)?+ )
9460*22dc650dSSadaf Ebrahimi(?<ccontent>        (?&ctext) | (?&quoted_pair) | (?&comment) )
9461*22dc650dSSadaf Ebrahimi(?<ctext>           [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ ()\\] )
9462*22dc650dSSadaf Ebrahimi(?<comment>         \( (?: (?&FWS)?+ (?&ccontent) )*+ (?&FWS)?+ \) )
9463*22dc650dSSadaf Ebrahimi(?<CFWS>            (?: (?&FWS)?+ (?&comment) )* (?# NOT possessive)
9464*22dc650dSSadaf Ebrahimi                    (?: (?&FWS)?+ (?&comment) | (?&FWS) ) )
9465*22dc650dSSadaf Ebrahimi(?<dcontent>        (?&dtext) | (?&quoted_pair) )
9466*22dc650dSSadaf Ebrahimi(?<display_name>    (?&phrase) )
9467*22dc650dSSadaf Ebrahimi(?<domain>          (?&dot_atom) | (?&domain_literal) )
9468*22dc650dSSadaf Ebrahimi(?<domain_literal>  (?&CFWS)?+ \[ (?: (?&FWS)?+ (?&dcontent) )* (?&FWS)?+ \]
9469*22dc650dSSadaf Ebrahimi                    (?&CFWS)?+ )
9470*22dc650dSSadaf Ebrahimi(?<dot_atom>        (?&CFWS)?+ (?&dot_atom_text) (?&CFWS)?+ )
9471*22dc650dSSadaf Ebrahimi(?<dot_atom_text>   (?&atext)++ (?: \. (?&atext)++)*+ )
9472*22dc650dSSadaf Ebrahimi(?<dtext>           [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ \[\]\\] )
9473*22dc650dSSadaf Ebrahimi(?<FWS>             (?: [\t\ ]*+ \n)?+ [\t\ ]++ )
9474*22dc650dSSadaf Ebrahimi(?<local_part>      (?&dot_atom) | (?&quoted_string)  )
9475*22dc650dSSadaf Ebrahimi(?<mailbox>         (?&name_addr) | (?&addr_spec) )
9476*22dc650dSSadaf Ebrahimi(?<name_addr>       (?&display_name)? (?&angle_addr) )
9477*22dc650dSSadaf Ebrahimi(?<phrase>          (?&word)++ )
9478*22dc650dSSadaf Ebrahimi(?<qcontent>        (?&qtext) | (?&quoted_pair) )
9479*22dc650dSSadaf Ebrahimi(?<quoted_pair>     " (?&text) )
9480*22dc650dSSadaf Ebrahimi(?<quoted_string>   (?&CFWS)?+ " (?: (?&FWS)?+ (?&qcontent))* (?&FWS)?+ "
9481*22dc650dSSadaf Ebrahimi                    (?&CFWS)?+ )
9482*22dc650dSSadaf Ebrahimi(?<qtext>           [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ "\\] )
9483*22dc650dSSadaf Ebrahimi(?<text>            [^\r\n] )
9484*22dc650dSSadaf Ebrahimi(?<word>            (?&atom) | (?&quoted_string) )
9485*22dc650dSSadaf Ebrahimi) # End DEFINE
9486*22dc650dSSadaf Ebrahimi^(?&mailbox)$/
9487*22dc650dSSadaf Ebrahimi    Alan Other <user\@dom.ain>
9488*22dc650dSSadaf Ebrahimi 0: Alan Other <[email protected]>
9489*22dc650dSSadaf Ebrahimi    <user\@dom.ain>
9490*22dc650dSSadaf Ebrahimi 0: <[email protected]>
9491*22dc650dSSadaf Ebrahimi    user\@dom.ain
9492*22dc650dSSadaf Ebrahimi 0: [email protected]
9493*22dc650dSSadaf Ebrahimi    user\@[]
9494*22dc650dSSadaf Ebrahimi 0: user@[]
9495*22dc650dSSadaf Ebrahimi    user\@[domain literal]
9496*22dc650dSSadaf Ebrahimi 0: user@[domain literal]
9497*22dc650dSSadaf Ebrahimi    user\@[domain literal with \"[square brackets\"] inside]
9498*22dc650dSSadaf Ebrahimi 0: user@[domain literal with "[square brackets"] inside]
9499*22dc650dSSadaf Ebrahimi    \"A. Other\" <user.1234\@dom.ain> (a comment)
9500*22dc650dSSadaf Ebrahimi 0: "A. Other" <[email protected]> (a comment)
9501*22dc650dSSadaf Ebrahimi    A. Other <user.1234\@dom.ain> (a comment)
9502*22dc650dSSadaf Ebrahimi 0: A. Other <[email protected]> (a comment)
9503*22dc650dSSadaf Ebrahimi    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
9504*22dc650dSSadaf Ebrahimi 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
9505*22dc650dSSadaf Ebrahimi\= Expect no match
9506*22dc650dSSadaf Ebrahimi    A missing angle <user\@some.where
9507*22dc650dSSadaf EbrahimiNo match
9508*22dc650dSSadaf Ebrahimi    The quick brown fox
9509*22dc650dSSadaf EbrahimiNo match
9510*22dc650dSSadaf Ebrahimi
9511*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
9512*22dc650dSSadaf Ebrahimi
9513*22dc650dSSadaf Ebrahimi# This pattern uses named groups to match default PCRE2 patterns. It's another
9514*22dc650dSSadaf Ebrahimi# heavy test for named subpatterns. Once again, code slash as \x{2f} and escape
9515*22dc650dSSadaf Ebrahimi# $ even in classes so that this works with pcre2test.
9516*22dc650dSSadaf Ebrahimi
9517*22dc650dSSadaf Ebrahimi/(?sx)(?(DEFINE)
9518*22dc650dSSadaf Ebrahimi
9519*22dc650dSSadaf Ebrahimi(?<assertion>         (?&simple_assertion) | (?&lookaround) )
9520*22dc650dSSadaf Ebrahimi
9521*22dc650dSSadaf Ebrahimi(?<atomic_group>      \( \? > (?&regex) \) )
9522*22dc650dSSadaf Ebrahimi
9523*22dc650dSSadaf Ebrahimi(?<back_reference>    \\ \d+ |
9524*22dc650dSSadaf Ebrahimi                      \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) |
9525*22dc650dSSadaf Ebrahimi                      \\k <(?&groupname)> |
9526*22dc650dSSadaf Ebrahimi                      \\k '(?&groupname)' |
9527*22dc650dSSadaf Ebrahimi                      \\k \{ (?&groupname) \} |
9528*22dc650dSSadaf Ebrahimi                      \( \? P= (?&groupname) \) )
9529*22dc650dSSadaf Ebrahimi
9530*22dc650dSSadaf Ebrahimi(?<branch>            (?:(?&assertion) |
9531*22dc650dSSadaf Ebrahimi                         (?&callout) |
9532*22dc650dSSadaf Ebrahimi                         (?&comment) |
9533*22dc650dSSadaf Ebrahimi                         (?&option_setting) |
9534*22dc650dSSadaf Ebrahimi                         (?&qualified_item) |
9535*22dc650dSSadaf Ebrahimi                         (?&quoted_string) |
9536*22dc650dSSadaf Ebrahimi                         (?&quoted_string_empty) |
9537*22dc650dSSadaf Ebrahimi                         (?&special_escape) |
9538*22dc650dSSadaf Ebrahimi                         (?&verb)
9539*22dc650dSSadaf Ebrahimi                      )* )
9540*22dc650dSSadaf Ebrahimi
9541*22dc650dSSadaf Ebrahimi(?<callout>           \(\?C (?: \d+ |
9542*22dc650dSSadaf Ebrahimi                      (?: (?<D>["'`^%\#\$])
9543*22dc650dSSadaf Ebrahimi                        (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' |
9544*22dc650dSSadaf Ebrahimi                      \{ (?: \}\} | [^}]*+ )* \} )
9545*22dc650dSSadaf Ebrahimi                      )? \) )
9546*22dc650dSSadaf Ebrahimi
9547*22dc650dSSadaf Ebrahimi(?<capturing_group>   \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )?
9548*22dc650dSSadaf Ebrahimi                      (?&regex) \) )
9549*22dc650dSSadaf Ebrahimi
9550*22dc650dSSadaf Ebrahimi(?<character_class>   \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )
9551*22dc650dSSadaf Ebrahimi
9552*22dc650dSSadaf Ebrahimi(?<character_type>    (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )
9553*22dc650dSSadaf Ebrahimi
9554*22dc650dSSadaf Ebrahimi(?<class_item>        (?: \[ : (?:
9555*22dc650dSSadaf Ebrahimi                      alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print|
9556*22dc650dSSadaf Ebrahimi                      punct|space|upper|word|xdigit
9557*22dc650dSSadaf Ebrahimi                      ) : \] |
9558*22dc650dSSadaf Ebrahimi                      (?&quoted_string) |
9559*22dc650dSSadaf Ebrahimi                      (?&quoted_string_empty) |
9560*22dc650dSSadaf Ebrahimi                      (?&escaped_character) |
9561*22dc650dSSadaf Ebrahimi                      (?&character_type) |
9562*22dc650dSSadaf Ebrahimi                      [^]] ) )
9563*22dc650dSSadaf Ebrahimi
9564*22dc650dSSadaf Ebrahimi(?<comment>           \(\?\# [^)]* \) | (?&quoted_string_empty) | \\E )
9565*22dc650dSSadaf Ebrahimi
9566*22dc650dSSadaf Ebrahimi(?<condition>         (?: \( [+-]? \d+ \) |
9567*22dc650dSSadaf Ebrahimi                          \( < (?&groupname) > \) |
9568*22dc650dSSadaf Ebrahimi                          \( ' (?&groupname) ' \) |
9569*22dc650dSSadaf Ebrahimi                          \( R \d* \) |
9570*22dc650dSSadaf Ebrahimi                          \( R & (?&groupname) \) |
9571*22dc650dSSadaf Ebrahimi                          \( (?&groupname) \) |
9572*22dc650dSSadaf Ebrahimi                          \( DEFINE \) |
9573*22dc650dSSadaf Ebrahimi                          \( VERSION >?=\d+(?:\.\d\d?)? \) |
9574*22dc650dSSadaf Ebrahimi                          (?&callout)?+ (?&comment)* (?&lookaround) ) )
9575*22dc650dSSadaf Ebrahimi
9576*22dc650dSSadaf Ebrahimi(?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )
9577*22dc650dSSadaf Ebrahimi
9578*22dc650dSSadaf Ebrahimi(?<delimited_regex>   (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?&regex)
9579*22dc650dSSadaf Ebrahimi                      \k'delimiter' .* )
9580*22dc650dSSadaf Ebrahimi
9581*22dc650dSSadaf Ebrahimi(?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} |
9582*22dc650dSSadaf Ebrahimi                      x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} |
9583*22dc650dSSadaf Ebrahimi                      [aefnrt] | c[[:print:]] |
9584*22dc650dSSadaf Ebrahimi                      [^[:alnum:]] ) )
9585*22dc650dSSadaf Ebrahimi
9586*22dc650dSSadaf Ebrahimi(?<group>             (?&capturing_group) | (?&non_capturing_group) |
9587*22dc650dSSadaf Ebrahimi                      (?&resetting_group) | (?&atomic_group) |
9588*22dc650dSSadaf Ebrahimi                      (?&conditional_group) )
9589*22dc650dSSadaf Ebrahimi
9590*22dc650dSSadaf Ebrahimi(?<groupname>         [a-zA-Z_]\w* )
9591*22dc650dSSadaf Ebrahimi
9592*22dc650dSSadaf Ebrahimi(?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )
9593*22dc650dSSadaf Ebrahimi
9594*22dc650dSSadaf Ebrahimi(?<lookaround>        \(\? (?: = | ! | <= | <! ) (?&regex) \) )
9595*22dc650dSSadaf Ebrahimi
9596*22dc650dSSadaf Ebrahimi(?<non_capturing_group> \(\? [iJmnsUx-]* : (?&regex) \) )
9597*22dc650dSSadaf Ebrahimi
9598*22dc650dSSadaf Ebrahimi(?<option_setting>    \(\? [iJmnsUx-]* \) )
9599*22dc650dSSadaf Ebrahimi
9600*22dc650dSSadaf Ebrahimi(?<qualified_item>    (?:\. |
9601*22dc650dSSadaf Ebrahimi                         (?&lookaround) |
9602*22dc650dSSadaf Ebrahimi                         (?&back_reference) |
9603*22dc650dSSadaf Ebrahimi                         (?&character_class) |
9604*22dc650dSSadaf Ebrahimi                         (?&character_type) |
9605*22dc650dSSadaf Ebrahimi                         (?&escaped_character) |
9606*22dc650dSSadaf Ebrahimi                         (?&group) |
9607*22dc650dSSadaf Ebrahimi                         (?&subroutine_call) |
9608*22dc650dSSadaf Ebrahimi                         (?&literal_character) |
9609*22dc650dSSadaf Ebrahimi                         (?&quoted_string)
9610*22dc650dSSadaf Ebrahimi                      ) (?&comment)? (?&qualifier)? )
9611*22dc650dSSadaf Ebrahimi
9612*22dc650dSSadaf Ebrahimi(?<qualifier>         (?: [?*+] | (?&range_qualifier) ) [+?]? )
9613*22dc650dSSadaf Ebrahimi
9614*22dc650dSSadaf Ebrahimi(?<quoted_string>     (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) )
9615*22dc650dSSadaf Ebrahimi
9616*22dc650dSSadaf Ebrahimi(?<quoted_string_empty>  \\Q\\E )
9617*22dc650dSSadaf Ebrahimi
9618*22dc650dSSadaf Ebrahimi(?<range_qualifier>   \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )
9619*22dc650dSSadaf Ebrahimi
9620*22dc650dSSadaf Ebrahimi(?<regex>             (?&start_item)* (?&branch) (?: \| (?&branch) )* )
9621*22dc650dSSadaf Ebrahimi
9622*22dc650dSSadaf Ebrahimi(?<resetting_group>   \( \? \| (?&regex) \) )
9623*22dc650dSSadaf Ebrahimi
9624*22dc650dSSadaf Ebrahimi(?<simple_assertion>  \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )
9625*22dc650dSSadaf Ebrahimi
9626*22dc650dSSadaf Ebrahimi(?<special_escape>    \\K )
9627*22dc650dSSadaf Ebrahimi
9628*22dc650dSSadaf Ebrahimi(?<start_item>        \( \* (?:
9629*22dc650dSSadaf Ebrahimi                      ANY |
9630*22dc650dSSadaf Ebrahimi                      ANYCRLF |
9631*22dc650dSSadaf Ebrahimi                      BSR_ANYCRLF |
9632*22dc650dSSadaf Ebrahimi                      BSR_UNICODE |
9633*22dc650dSSadaf Ebrahimi                      CR |
9634*22dc650dSSadaf Ebrahimi                      CRLF |
9635*22dc650dSSadaf Ebrahimi                      LF |
9636*22dc650dSSadaf Ebrahimi                      LIMIT_MATCH=\d+ |
9637*22dc650dSSadaf Ebrahimi                      LIMIT_DEPTH=\d+ |
9638*22dc650dSSadaf Ebrahimi                      LIMIT_HEAP=\d+ |
9639*22dc650dSSadaf Ebrahimi                      NOTEMPTY |
9640*22dc650dSSadaf Ebrahimi                      NOTEMPTY_ATSTART |
9641*22dc650dSSadaf Ebrahimi                      NO_AUTO_POSSESS |
9642*22dc650dSSadaf Ebrahimi                      NO_DOTSTAR_ANCHOR |
9643*22dc650dSSadaf Ebrahimi                      NO_JIT |
9644*22dc650dSSadaf Ebrahimi                      NO_START_OPT |
9645*22dc650dSSadaf Ebrahimi                      NUL |
9646*22dc650dSSadaf Ebrahimi                      UTF |
9647*22dc650dSSadaf Ebrahimi                      UCP ) \) )
9648*22dc650dSSadaf Ebrahimi
9649*22dc650dSSadaf Ebrahimi(?<subroutine_call>   (?: \(\?R\) | \(\?[+-]?\d+\) |
9650*22dc650dSSadaf Ebrahimi                      \(\? (?: & | P> ) (?&groupname) \) |
9651*22dc650dSSadaf Ebrahimi                      \\g < (?&groupname) > |
9652*22dc650dSSadaf Ebrahimi                      \\g ' (?&groupname) ' |
9653*22dc650dSSadaf Ebrahimi                      \\g < [+-]? \d+ > |
9654*22dc650dSSadaf Ebrahimi                      \\g ' [+-]? \d+ ) )
9655*22dc650dSSadaf Ebrahimi
9656*22dc650dSSadaf Ebrahimi(?<verb>              \(\* (?: ACCEPT | FAIL | F | COMMIT |
9657*22dc650dSSadaf Ebrahimi                      (?:MARK)?:(?&verbname) |
9658*22dc650dSSadaf Ebrahimi                      (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )
9659*22dc650dSSadaf Ebrahimi
9660*22dc650dSSadaf Ebrahimi(?<verbname>          [^)]+ )
9661*22dc650dSSadaf Ebrahimi
9662*22dc650dSSadaf Ebrahimi) # End DEFINE
9663*22dc650dSSadaf Ebrahimi# Kick it all off...
9664*22dc650dSSadaf Ebrahimi^(?&delimited_regex)$/subject_literal,jitstack=256
9665*22dc650dSSadaf Ebrahimi    /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
9666*22dc650dSSadaf Ebrahimi 0: /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
9667*22dc650dSSadaf Ebrahimi    /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
9668*22dc650dSSadaf Ebrahimi 0: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
9669*22dc650dSSadaf Ebrahimi    /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
9670*22dc650dSSadaf Ebrahimi 0: /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
9671*22dc650dSSadaf Ebrahimi    /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
9672*22dc650dSSadaf Ebrahimi 0: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
9673*22dc650dSSadaf Ebrahimi    /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
9674*22dc650dSSadaf Ebrahimi 0: /<tr([\w\W\s\d][^<>]{0,})><TD([\w\W\s\d][^<>]{0,})>([\d]{0,}\.)(.*)((<BR>([\w\W\s\d][^<>]{0,})|[\s]{0,}))<\/a><\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><TD([\w\W\s\d][^<>]{0,})>([\w\W\s\d][^<>]{0,})<\/TD><\/TR>/is
9675*22dc650dSSadaf Ebrahimi    /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /
9676*22dc650dSSadaf Ebrahimi 0: /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /
9677*22dc650dSSadaf Ebrahimi    /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
9678*22dc650dSSadaf Ebrahimi 0: /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
9679*22dc650dSSadaf Ebrahimi    /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
9680*22dc650dSSadaf Ebrahimi 0: /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
9681*22dc650dSSadaf Ebrahimi    /^(\w++|\s++)*$/
9682*22dc650dSSadaf Ebrahimi 0: /^(\w++|\s++)*$/
9683*22dc650dSSadaf Ebrahimi    /a+b?(*THEN)c+(*FAIL)/
9684*22dc650dSSadaf Ebrahimi 0: /a+b?(*THEN)c+(*FAIL)/
9685*22dc650dSSadaf Ebrahimi    /(A (A|B(*ACCEPT)|C) D)(E)/x
9686*22dc650dSSadaf Ebrahimi 0: /(A (A|B(*ACCEPT)|C) D)(E)/x
9687*22dc650dSSadaf Ebrahimi    /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
9688*22dc650dSSadaf Ebrahimi 0: /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
9689*22dc650dSSadaf Ebrahimi    /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B
9690*22dc650dSSadaf Ebrahimi 0: /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B
9691*22dc650dSSadaf Ebrahimi    /(?C`a``b`)(?C'a''b')(?C"a""b")(?C^a^^b^)(?C%a%%b%)(?C#a##b#)(?C$a$$b$)(?C{a}}b})/B,callout_info
9692*22dc650dSSadaf Ebrahimi 0: /(?C`a``b`)(?C'a''b')(?C"a""b")(?C^a^^b^)(?C%a%%b%)(?C#a##b#)(?C$a$$b$)(?C{a}}b})/B,callout_info
9693*22dc650dSSadaf Ebrahimi    /(?sx)(?(DEFINE)(?<assertion> (?&simple_assertion) | (?&lookaround) )(?<atomic_group> \( \? > (?&regex) \) )(?<back_reference> \\ \d+ | \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) | \\k <(?&groupname)> | \\k '(?&groupname)' | \\k \{ (?&groupname) \} | \( \? P= (?&groupname) \) )(?<branch> (?:(?&assertion) | (?&callout) | (?&comment) | (?&option_setting) | (?&qualified_item) | (?&quoted_string) | (?&quoted_string_empty) | (?&special_escape) | (?&verb) )* )(?<callout> \(\?C (?: \d+ | (?: (?<D>["'`^%\#\$]) (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' | \{ (?: \}\} | [^}]*+ )* \} ) )? \) )(?<capturing_group> \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )? (?&regex) \) )(?<character_class> \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )(?<character_type> (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )(?<class_item> (?: \[ : (?: alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print| punct|space|upper|word|xdigit ) : \] | (?&quoted_string) | (?&quoted_string_empty) | (?&escaped_character) | (?&character_type) | [^]] ) )(?<comment> \(\?\# [^)]* \) | (?&quoted_string_empty) | \\E )(?<condition> (?: \( [+-]? \d+ \) | \( < (?&groupname) > \) | \( ' (?&groupname) ' \) | \( R \d* \) | \( R & (?&groupname) \) | \( (?&groupname) \) | \( DEFINE \) | \( VERSION >?=\d+(?:\.\d\d?)? \) | (?&callout)?+ (?&comment)* (?&lookaround) ) )(?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )(?<delimited_regex> (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?&regex) \k'delimiter' .* )(?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} | x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} | [aefnrt] | c[[:print:]] | [^[:alnum:]] ) )(?<group> (?&capturing_group) | (?&non_capturing_group) | (?&resetting_group) | (?&atomic_group) | (?&conditional_group) )(?<groupname> [a-zA-Z_]\w* )(?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )(?<lookaround> \(\? (?: = | ! | <= | <! ) (?&regex) \) )(?<non_capturing_group> \(\? [iJmnsUx-]* : (?&regex) \) )(?<option_setting> \(\? [iJmnsUx-]* \) )(?<qualified_item> (?:\. | (?&lookaround) | (?&back_reference) | (?&character_class) | (?&character_type) | (?&escaped_character) | (?&group) | (?&subroutine_call) | (?&literal_character) | (?&quoted_string) ) (?&comment)? (?&qualifier)? )(?<qualifier> (?: [?*+] | (?&range_qualifier) ) [+?]? )(?<quoted_string> (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) ) (?<quoted_string_empty> \\Q\\E ) (?<range_qualifier> \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )(?<regex> (?&start_item)* (?&branch) (?: \| (?&branch) )* )(?<resetting_group> \( \? \| (?&regex) \) )(?<simple_assertion> \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )(?<special_escape> \\K )(?<start_item> \( \* (?: ANY | ANYCRLF | BSR_ANYCRLF | BSR_UNICODE | CR | CRLF | LF | LIMIT_MATCH=\d+ | LIMIT_DEPTH=\d+ | LIMIT_HEAP=\d+ | NOTEMPTY | NOTEMPTY_ATSTART | NO_AUTO_POSSESS | NO_DOTSTAR_ANCHOR | NO_JIT | NO_START_OPT | NUL | UTF | UCP ) \) )(?<subroutine_call> (?: \(\?R\) | \(\?[+-]?\d+\) | \(\? (?: & | P> ) (?&groupname) \) | \\g < (?&groupname) > | \\g ' (?&groupname) ' | \\g < [+-]? \d+ > | \\g ' [+-]? \d+ ) )(?<verb> \(\* (?: ACCEPT | FAIL | F | COMMIT | (?:MARK)?:(?&verbname) | (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )(?<verbname> [^)]+ ))^(?&delimited_regex)$/
9694*22dc650dSSadaf Ebrahimi 0: /(?sx)(?(DEFINE)(?<assertion> (?&simple_assertion) | (?&lookaround) )(?<atomic_group> \( \? > (?&regex) \) )(?<back_reference> \\ \d+ | \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) | \\k <(?&groupname)> | \\k '(?&groupname)' | \\k \{ (?&groupname) \} | \( \? P= (?&groupname) \) )(?<branch> (?:(?&assertion) | (?&callout) | (?&comment) | (?&option_setting) | (?&qualified_item) | (?&quoted_string) | (?&quoted_string_empty) | (?&special_escape) | (?&verb) )* )(?<callout> \(\?C (?: \d+ | (?: (?<D>["'`^%\#\$]) (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' | \{ (?: \}\} | [^}]*+ )* \} ) )? \) )(?<capturing_group> \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )? (?&regex) \) )(?<character_class> \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )(?<character_type> (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )(?<class_item> (?: \[ : (?: alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print| punct|space|upper|word|xdigit ) : \] | (?&quoted_string) | (?&quoted_string_empty) | (?&escaped_character) | (?&character_type) | [^]] ) )(?<comment> \(\?\# [^)]* \) | (?&quoted_string_empty) | \\E )(?<condition> (?: \( [+-]? \d+ \) | \( < (?&groupname) > \) | \( ' (?&groupname) ' \) | \( R \d* \) | \( R & (?&groupname) \) | \( (?&groupname) \) | \( DEFINE \) | \( VERSION >?=\d+(?:\.\d\d?)? \) | (?&callout)?+ (?&comment)* (?&lookaround) ) )(?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )(?<delimited_regex> (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?&regex) \k'delimiter' .* )(?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} | x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} | [aefnrt] | c[[:print:]] | [^[:alnum:]] ) )(?<group> (?&capturing_group) | (?&non_capturing_group) | (?&resetting_group) | (?&atomic_group) | (?&conditional_group) )(?<groupname> [a-zA-Z_]\w* )(?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )(?<lookaround> \(\? (?: = | ! | <= | <! ) (?&regex) \) )(?<non_capturing_group> \(\? [iJmnsUx-]* : (?&regex) \) )(?<option_setting> \(\? [iJmnsUx-]* \) )(?<qualified_item> (?:\. | (?&lookaround) | (?&back_reference) | (?&character_class) | (?&character_type) | (?&escaped_character) | (?&group) | (?&subroutine_call) | (?&literal_character) | (?&quoted_string) ) (?&comment)? (?&qualifier)? )(?<qualifier> (?: [?*+] | (?&range_qualifier) ) [+?]? )(?<quoted_string> (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) ) (?<quoted_string_empty> \\Q\\E ) (?<range_qualifier> \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )(?<regex> (?&start_item)* (?&branch) (?: \| (?&branch) )* )(?<resetting_group> \( \? \| (?&regex) \) )(?<simple_assertion> \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )(?<special_escape> \\K )(?<start_item> \( \* (?: ANY | ANYCRLF | BSR_ANYCRLF | BSR_UNICODE | CR | CRLF | LF | LIMIT_MATCH=\d+ | LIMIT_DEPTH=\d+ | LIMIT_HEAP=\d+ | NOTEMPTY | NOTEMPTY_ATSTART | NO_AUTO_POSSESS | NO_DOTSTAR_ANCHOR | NO_JIT | NO_START_OPT | NUL | UTF | UCP ) \) )(?<subroutine_call> (?: \(\?R\) | \(\?[+-]?\d+\) | \(\? (?: & | P> ) (?&groupname) \) | \\g < (?&groupname) > | \\g ' (?&groupname) ' | \\g < [+-]? \d+ > | \\g ' [+-]? \d+ ) )(?<verb> \(\* (?: ACCEPT | FAIL | F | COMMIT | (?:MARK)?:(?&verbname) | (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )(?<verbname> [^)]+ ))^(?&delimited_regex)$/
9695*22dc650dSSadaf Ebrahimi\= Expect no match
9696*22dc650dSSadaf Ebrahimi    /((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
9697*22dc650dSSadaf EbrahimiNo match
9698*22dc650dSSadaf Ebrahimi    /(?:(?(2y)a|b)(X))+/
9699*22dc650dSSadaf EbrahimiNo match
9700*22dc650dSSadaf Ebrahimi    /a(*MARK)b/
9701*22dc650dSSadaf EbrahimiNo match
9702*22dc650dSSadaf Ebrahimi    /a(*CR)b/
9703*22dc650dSSadaf EbrahimiNo match
9704*22dc650dSSadaf Ebrahimi    /(?P<abn>(?P=abn)(?<badstufxxx)/
9705*22dc650dSSadaf EbrahimiNo match
9706*22dc650dSSadaf Ebrahimi
9707*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
9708*22dc650dSSadaf Ebrahimi
9709*22dc650dSSadaf Ebrahimi/<(?x:[a b])>/xx
9710*22dc650dSSadaf Ebrahimi    < >
9711*22dc650dSSadaf Ebrahimi 0: < >
9712*22dc650dSSadaf Ebrahimi
9713*22dc650dSSadaf Ebrahimi/<(?:[a b])>/xx
9714*22dc650dSSadaf Ebrahimi    < >
9715*22dc650dSSadaf EbrahimiNo match
9716*22dc650dSSadaf Ebrahimi
9717*22dc650dSSadaf Ebrahimi/<(?xxx:[a b])>/
9718*22dc650dSSadaf Ebrahimi    < >
9719*22dc650dSSadaf EbrahimiNo match
9720*22dc650dSSadaf Ebrahimi
9721*22dc650dSSadaf Ebrahimi/<(?-x:[a b])>/xx
9722*22dc650dSSadaf Ebrahimi    < >
9723*22dc650dSSadaf Ebrahimi 0: < >
9724*22dc650dSSadaf Ebrahimi
9725*22dc650dSSadaf Ebrahimi/[[:digit:]-]+/
9726*22dc650dSSadaf Ebrahimi    12-24
9727*22dc650dSSadaf Ebrahimi 0: 12-24
9728*22dc650dSSadaf Ebrahimi
9729*22dc650dSSadaf Ebrahimi/((?<=((*ACCEPT)) )\1?\b) /
9730*22dc650dSSadaf Ebrahimi\= Expect no match
9731*22dc650dSSadaf Ebrahimi    ((?<=((*ACCEPT)) )\\1?\\b)\x20
9732*22dc650dSSadaf EbrahimiNo match
9733*22dc650dSSadaf Ebrahimi
9734*22dc650dSSadaf Ebrahimi/((?<=((*ACCEPT))X)\1?Y)\1/
9735*22dc650dSSadaf Ebrahimi    XYYZ
9736*22dc650dSSadaf Ebrahimi 0: YY
9737*22dc650dSSadaf Ebrahimi 1: Y
9738*22dc650dSSadaf Ebrahimi 2:
9739*22dc650dSSadaf Ebrahimi
9740*22dc650dSSadaf Ebrahimi/((?<=((*ACCEPT))X)\1?Y(*ACCEPT))\1/
9741*22dc650dSSadaf Ebrahimi    XYYZ
9742*22dc650dSSadaf Ebrahimi 0: Y
9743*22dc650dSSadaf Ebrahimi 1: Y
9744*22dc650dSSadaf Ebrahimi 2:
9745*22dc650dSSadaf Ebrahimi
9746*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<optional_a>a?)X)^(?&optional_a)a$/
9747*22dc650dSSadaf Ebrahimi    aa
9748*22dc650dSSadaf Ebrahimi 0: aa
9749*22dc650dSSadaf Ebrahimi    a
9750*22dc650dSSadaf Ebrahimi 0: a
9751*22dc650dSSadaf Ebrahimi
9752*22dc650dSSadaf Ebrahimi/^(a?)b(?1)a/
9753*22dc650dSSadaf Ebrahimi    abaa
9754*22dc650dSSadaf Ebrahimi 0: abaa
9755*22dc650dSSadaf Ebrahimi 1: a
9756*22dc650dSSadaf Ebrahimi    aba
9757*22dc650dSSadaf Ebrahimi 0: aba
9758*22dc650dSSadaf Ebrahimi 1: a
9759*22dc650dSSadaf Ebrahimi    baa
9760*22dc650dSSadaf Ebrahimi 0: baa
9761*22dc650dSSadaf Ebrahimi 1:
9762*22dc650dSSadaf Ebrahimi    ba
9763*22dc650dSSadaf Ebrahimi 0: ba
9764*22dc650dSSadaf Ebrahimi 1:
9765*22dc650dSSadaf Ebrahimi
9766*22dc650dSSadaf Ebrahimi/^(a?)+b(?1)a/
9767*22dc650dSSadaf Ebrahimi    abaa
9768*22dc650dSSadaf Ebrahimi 0: abaa
9769*22dc650dSSadaf Ebrahimi 1:
9770*22dc650dSSadaf Ebrahimi    aba
9771*22dc650dSSadaf Ebrahimi 0: aba
9772*22dc650dSSadaf Ebrahimi 1:
9773*22dc650dSSadaf Ebrahimi    baa
9774*22dc650dSSadaf Ebrahimi 0: baa
9775*22dc650dSSadaf Ebrahimi 1:
9776*22dc650dSSadaf Ebrahimi    ba
9777*22dc650dSSadaf Ebrahimi 0: ba
9778*22dc650dSSadaf Ebrahimi 1:
9779*22dc650dSSadaf Ebrahimi
9780*22dc650dSSadaf Ebrahimi/^(a?)++b(?1)a/
9781*22dc650dSSadaf Ebrahimi    abaa
9782*22dc650dSSadaf Ebrahimi 0: abaa
9783*22dc650dSSadaf Ebrahimi 1:
9784*22dc650dSSadaf Ebrahimi    aba
9785*22dc650dSSadaf Ebrahimi 0: aba
9786*22dc650dSSadaf Ebrahimi 1:
9787*22dc650dSSadaf Ebrahimi    baa
9788*22dc650dSSadaf Ebrahimi 0: baa
9789*22dc650dSSadaf Ebrahimi 1:
9790*22dc650dSSadaf Ebrahimi    ba
9791*22dc650dSSadaf Ebrahimi 0: ba
9792*22dc650dSSadaf Ebrahimi 1:
9793*22dc650dSSadaf Ebrahimi
9794*22dc650dSSadaf Ebrahimi/^(a?)+b/
9795*22dc650dSSadaf Ebrahimi    b
9796*22dc650dSSadaf Ebrahimi 0: b
9797*22dc650dSSadaf Ebrahimi 1:
9798*22dc650dSSadaf Ebrahimi    ab
9799*22dc650dSSadaf Ebrahimi 0: ab
9800*22dc650dSSadaf Ebrahimi 1:
9801*22dc650dSSadaf Ebrahimi    aaab
9802*22dc650dSSadaf Ebrahimi 0: aaab
9803*22dc650dSSadaf Ebrahimi 1:
9804*22dc650dSSadaf Ebrahimi
9805*22dc650dSSadaf Ebrahimi/(?=a+)a(a+)++b/
9806*22dc650dSSadaf Ebrahimi    aab
9807*22dc650dSSadaf Ebrahimi 0: aab
9808*22dc650dSSadaf Ebrahimi 1: a
9809*22dc650dSSadaf Ebrahimi
9810*22dc650dSSadaf Ebrahimi/(?<=\G.)/g,aftertext
9811*22dc650dSSadaf Ebrahimi    abc
9812*22dc650dSSadaf Ebrahimi 0:
9813*22dc650dSSadaf Ebrahimi 0+ bc
9814*22dc650dSSadaf Ebrahimi 0:
9815*22dc650dSSadaf Ebrahimi 0+ c
9816*22dc650dSSadaf Ebrahimi 0:
9817*22dc650dSSadaf Ebrahimi 0+
9818*22dc650dSSadaf Ebrahimi
9819*22dc650dSSadaf Ebrahimi/(?<=(?=.)?)/
9820*22dc650dSSadaf Ebrahimi
9821*22dc650dSSadaf Ebrahimi/(?<=(?=.)?+)/
9822*22dc650dSSadaf Ebrahimi
9823*22dc650dSSadaf Ebrahimi/(?<=(?=.)*)/
9824*22dc650dSSadaf Ebrahimi
9825*22dc650dSSadaf Ebrahimi/(?<=(?=.){4,5})/
9826*22dc650dSSadaf Ebrahimi
9827*22dc650dSSadaf Ebrahimi/(?<=(?=.){4,5}x)/
9828*22dc650dSSadaf Ebrahimi
9829*22dc650dSSadaf Ebrahimi/a(?=.(*:X))(*SKIP:X)(*F)|(.)/
9830*22dc650dSSadaf Ebrahimi    abc
9831*22dc650dSSadaf Ebrahimi 0: a
9832*22dc650dSSadaf Ebrahimi 1: a
9833*22dc650dSSadaf Ebrahimi
9834*22dc650dSSadaf Ebrahimi/a(?>(*:X))(*SKIP:X)(*F)|(.)/
9835*22dc650dSSadaf Ebrahimi    abc
9836*22dc650dSSadaf Ebrahimi 0: a
9837*22dc650dSSadaf Ebrahimi 1: a
9838*22dc650dSSadaf Ebrahimi
9839*22dc650dSSadaf Ebrahimi/a(?:(*:X))(*SKIP:X)(*F)|(.)/
9840*22dc650dSSadaf Ebrahimi    abc
9841*22dc650dSSadaf Ebrahimi 0: b
9842*22dc650dSSadaf Ebrahimi 1: b
9843*22dc650dSSadaf Ebrahimi
9844*22dc650dSSadaf Ebrahimi#pattern no_start_optimize
9845*22dc650dSSadaf Ebrahimi
9846*22dc650dSSadaf Ebrahimi/(?>a(*:1))(?>b(*:1))(*SKIP:1)x|.*/
9847*22dc650dSSadaf Ebrahimi    abc
9848*22dc650dSSadaf Ebrahimi 0: abc
9849*22dc650dSSadaf Ebrahimi
9850*22dc650dSSadaf Ebrahimi/(?>a(*:1))(?>b)(*SKIP:1)x|.*/
9851*22dc650dSSadaf Ebrahimi    abc
9852*22dc650dSSadaf Ebrahimi 0: abc
9853*22dc650dSSadaf Ebrahimi
9854*22dc650dSSadaf Ebrahimi#subject mark
9855*22dc650dSSadaf Ebrahimi
9856*22dc650dSSadaf Ebrahimi/a(*ACCEPT:X)b/
9857*22dc650dSSadaf Ebrahimi    abc
9858*22dc650dSSadaf Ebrahimi 0: a
9859*22dc650dSSadaf EbrahimiMK: X
9860*22dc650dSSadaf Ebrahimi
9861*22dc650dSSadaf Ebrahimi/(?=a(*ACCEPT:QQ)bc)axyz/
9862*22dc650dSSadaf Ebrahimi    axyz
9863*22dc650dSSadaf Ebrahimi 0: axyz
9864*22dc650dSSadaf EbrahimiMK: QQ
9865*22dc650dSSadaf Ebrahimi
9866*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a(*ACCEPT:X)))(?1)b/
9867*22dc650dSSadaf Ebrahimi    abc
9868*22dc650dSSadaf Ebrahimi 0: ab
9869*22dc650dSSadaf EbrahimiMK: X
9870*22dc650dSSadaf Ebrahimi
9871*22dc650dSSadaf Ebrahimi/a(*F:X)b/
9872*22dc650dSSadaf Ebrahimi    abc
9873*22dc650dSSadaf EbrahimiNo match, mark = X
9874*22dc650dSSadaf Ebrahimi
9875*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a(*F:X)))(?1)b/
9876*22dc650dSSadaf Ebrahimi    abc
9877*22dc650dSSadaf EbrahimiNo match, mark = X
9878*22dc650dSSadaf Ebrahimi
9879*22dc650dSSadaf Ebrahimi/a(*COMMIT:X)b/
9880*22dc650dSSadaf Ebrahimi    abc
9881*22dc650dSSadaf Ebrahimi 0: ab
9882*22dc650dSSadaf EbrahimiMK: X
9883*22dc650dSSadaf Ebrahimi
9884*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a(*COMMIT:X)))(?1)b/
9885*22dc650dSSadaf Ebrahimi    abc
9886*22dc650dSSadaf Ebrahimi 0: ab
9887*22dc650dSSadaf EbrahimiMK: X
9888*22dc650dSSadaf Ebrahimi
9889*22dc650dSSadaf Ebrahimi/a+(*:Z)b(*COMMIT:X)(*SKIP:Z)c|.*/
9890*22dc650dSSadaf Ebrahimi    aaaabd
9891*22dc650dSSadaf Ebrahimi 0: bd
9892*22dc650dSSadaf Ebrahimi
9893*22dc650dSSadaf Ebrahimi/a+(*:Z)b(*COMMIT:X)(*SKIP:X)c|.*/
9894*22dc650dSSadaf Ebrahimi    aaaabd
9895*22dc650dSSadaf EbrahimiNo match, mark = X
9896*22dc650dSSadaf Ebrahimi
9897*22dc650dSSadaf Ebrahimi/a(*COMMIT:X)b/
9898*22dc650dSSadaf Ebrahimi    axabc
9899*22dc650dSSadaf EbrahimiNo match, mark = X
9900*22dc650dSSadaf Ebrahimi
9901*22dc650dSSadaf Ebrahimi#pattern -no_start_optimize
9902*22dc650dSSadaf Ebrahimi#subject -mark
9903*22dc650dSSadaf Ebrahimi
9904*22dc650dSSadaf Ebrahimi/(.COMMIT)(*COMMIT::::::::::interal error:::)/
9905*22dc650dSSadaf Ebrahimi
9906*22dc650dSSadaf Ebrahimi/(*COMMIT:��)/
9907*22dc650dSSadaf Ebrahimi
9908*22dc650dSSadaf Ebrahimi/(*COMMIT:]w)/
9909*22dc650dSSadaf Ebrahimi
9910*22dc650dSSadaf Ebrahimi/(?i)A(?^)B(?^x:C D)(?^i)e f/
9911*22dc650dSSadaf Ebrahimi    aBCDE F
9912*22dc650dSSadaf Ebrahimi 0: aBCDE F
9913*22dc650dSSadaf Ebrahimi\= Expect no match
9914*22dc650dSSadaf Ebrahimi    aBCDEF
9915*22dc650dSSadaf EbrahimiNo match
9916*22dc650dSSadaf Ebrahimi    AbCDe f
9917*22dc650dSSadaf EbrahimiNo match
9918*22dc650dSSadaf Ebrahimi
9919*22dc650dSSadaf Ebrahimi/(*pla:foo).{6}/
9920*22dc650dSSadaf Ebrahimi    abcfoobarxyz
9921*22dc650dSSadaf Ebrahimi 0: foobar
9922*22dc650dSSadaf Ebrahimi\= Expect no match
9923*22dc650dSSadaf Ebrahimi    abcfooba
9924*22dc650dSSadaf EbrahimiNo match
9925*22dc650dSSadaf Ebrahimi
9926*22dc650dSSadaf Ebrahimi/(*positive_lookahead:foo).{6}/
9927*22dc650dSSadaf Ebrahimi    abcfoobarxyz
9928*22dc650dSSadaf Ebrahimi 0: foobar
9929*22dc650dSSadaf Ebrahimi
9930*22dc650dSSadaf Ebrahimi/(?(*pla:foo).{6}|a..)/
9931*22dc650dSSadaf Ebrahimi    foobarbaz
9932*22dc650dSSadaf Ebrahimi 0: foobar
9933*22dc650dSSadaf Ebrahimi    abcfoobar
9934*22dc650dSSadaf Ebrahimi 0: abc
9935*22dc650dSSadaf Ebrahimi
9936*22dc650dSSadaf Ebrahimi/(?(*positive_lookahead:foo).{6}|a..)/
9937*22dc650dSSadaf Ebrahimi    foobarbaz
9938*22dc650dSSadaf Ebrahimi 0: foobar
9939*22dc650dSSadaf Ebrahimi    abcfoobar
9940*22dc650dSSadaf Ebrahimi 0: abc
9941*22dc650dSSadaf Ebrahimi
9942*22dc650dSSadaf Ebrahimi/(*plb:foo)bar/
9943*22dc650dSSadaf Ebrahimi    abcfoobar
9944*22dc650dSSadaf Ebrahimi 0: bar
9945*22dc650dSSadaf Ebrahimi\= Expect no match
9946*22dc650dSSadaf Ebrahimi    abcbarfoo
9947*22dc650dSSadaf EbrahimiNo match
9948*22dc650dSSadaf Ebrahimi
9949*22dc650dSSadaf Ebrahimi/(*positive_lookbehind:foo)bar/
9950*22dc650dSSadaf Ebrahimi    abcfoobar
9951*22dc650dSSadaf Ebrahimi 0: bar
9952*22dc650dSSadaf Ebrahimi\= Expect no match
9953*22dc650dSSadaf Ebrahimi    abcbarfoo
9954*22dc650dSSadaf EbrahimiNo match
9955*22dc650dSSadaf Ebrahimi
9956*22dc650dSSadaf Ebrahimi/(?(*plb:foo)bar|baz)/
9957*22dc650dSSadaf Ebrahimi    abcfoobar
9958*22dc650dSSadaf Ebrahimi 0: bar
9959*22dc650dSSadaf Ebrahimi    bazfoobar
9960*22dc650dSSadaf Ebrahimi 0: baz
9961*22dc650dSSadaf Ebrahimi    abcbazfoobar
9962*22dc650dSSadaf Ebrahimi 0: baz
9963*22dc650dSSadaf Ebrahimi    foobazfoobar
9964*22dc650dSSadaf Ebrahimi 0: bar
9965*22dc650dSSadaf Ebrahimi
9966*22dc650dSSadaf Ebrahimi/(?(*positive_lookbehind:foo)bar|baz)/
9967*22dc650dSSadaf Ebrahimi    abcfoobar
9968*22dc650dSSadaf Ebrahimi 0: bar
9969*22dc650dSSadaf Ebrahimi    bazfoobar
9970*22dc650dSSadaf Ebrahimi 0: baz
9971*22dc650dSSadaf Ebrahimi    abcbazfoobar
9972*22dc650dSSadaf Ebrahimi 0: baz
9973*22dc650dSSadaf Ebrahimi    foobazfoobar
9974*22dc650dSSadaf Ebrahimi 0: bar
9975*22dc650dSSadaf Ebrahimi
9976*22dc650dSSadaf Ebrahimi/(*nlb:foo)bar/
9977*22dc650dSSadaf Ebrahimi    abcbarfoo
9978*22dc650dSSadaf Ebrahimi 0: bar
9979*22dc650dSSadaf Ebrahimi\= Expect no match
9980*22dc650dSSadaf Ebrahimi    abcfoobar
9981*22dc650dSSadaf EbrahimiNo match
9982*22dc650dSSadaf Ebrahimi
9983*22dc650dSSadaf Ebrahimi/(*negative_lookbehind:foo)bar/
9984*22dc650dSSadaf Ebrahimi    abcbarfoo
9985*22dc650dSSadaf Ebrahimi 0: bar
9986*22dc650dSSadaf Ebrahimi\= Expect no match
9987*22dc650dSSadaf Ebrahimi    abcfoobar
9988*22dc650dSSadaf EbrahimiNo match
9989*22dc650dSSadaf Ebrahimi
9990*22dc650dSSadaf Ebrahimi/(?(*nlb:foo)bar|baz)/
9991*22dc650dSSadaf Ebrahimi    abcfoobaz
9992*22dc650dSSadaf Ebrahimi 0: baz
9993*22dc650dSSadaf Ebrahimi    abcbarbaz
9994*22dc650dSSadaf Ebrahimi 0: bar
9995*22dc650dSSadaf Ebrahimi\= Expect no match
9996*22dc650dSSadaf Ebrahimi    abcfoobar
9997*22dc650dSSadaf EbrahimiNo match
9998*22dc650dSSadaf Ebrahimi
9999*22dc650dSSadaf Ebrahimi/(?(*negative_lookbehind:foo)bar|baz)/
10000*22dc650dSSadaf Ebrahimi    abcfoobaz
10001*22dc650dSSadaf Ebrahimi 0: baz
10002*22dc650dSSadaf Ebrahimi    abcbarbaz
10003*22dc650dSSadaf Ebrahimi 0: bar
10004*22dc650dSSadaf Ebrahimi\= Expect no match
10005*22dc650dSSadaf Ebrahimi    abcfoobar
10006*22dc650dSSadaf EbrahimiNo match
10007*22dc650dSSadaf Ebrahimi
10008*22dc650dSSadaf Ebrahimi/(*atomic:a+)\w/
10009*22dc650dSSadaf Ebrahimi    aaab
10010*22dc650dSSadaf Ebrahimi 0: aaab
10011*22dc650dSSadaf Ebrahimi\= Expect no match
10012*22dc650dSSadaf Ebrahimi    aaaa
10013*22dc650dSSadaf EbrahimiNo match
10014*22dc650dSSadaf Ebrahimi
10015*22dc650dSSadaf Ebrahimi/   (?<word> \w+ )*    \.   /xi
10016*22dc650dSSadaf Ebrahimi    pokus.
10017*22dc650dSSadaf Ebrahimi 0: pokus.
10018*22dc650dSSadaf Ebrahimi 1: pokus
10019*22dc650dSSadaf Ebrahimi
10020*22dc650dSSadaf Ebrahimi/(?(DEFINE) (?<word> \w+ ) ) (?&word)*   \./xi
10021*22dc650dSSadaf Ebrahimi    pokus.
10022*22dc650dSSadaf Ebrahimi 0: pokus.
10023*22dc650dSSadaf Ebrahimi
10024*22dc650dSSadaf Ebrahimi/(?(DEFINE) (?<word> \w+ ) ) ( (?&word)* )   \./xi
10025*22dc650dSSadaf Ebrahimi    pokus.
10026*22dc650dSSadaf Ebrahimi 0: pokus.
10027*22dc650dSSadaf Ebrahimi 1: <unset>
10028*22dc650dSSadaf Ebrahimi 2: pokus
10029*22dc650dSSadaf Ebrahimi
10030*22dc650dSSadaf Ebrahimi/(?&word)*  (?(DEFINE) (?<word> \w+ ) )  \./xi
10031*22dc650dSSadaf Ebrahimi    pokus.
10032*22dc650dSSadaf Ebrahimi 0: pokus.
10033*22dc650dSSadaf Ebrahimi
10034*22dc650dSSadaf Ebrahimi/(?&word)*  \. (?<word> \w+ )/xi
10035*22dc650dSSadaf Ebrahimi    pokus.hokus
10036*22dc650dSSadaf Ebrahimi 0: pokus.hokus
10037*22dc650dSSadaf Ebrahimi 1: hokus
10038*22dc650dSSadaf Ebrahimi
10039*22dc650dSSadaf Ebrahimi/a(?(?=(*:2)b).)/mark
10040*22dc650dSSadaf Ebrahimi    abc
10041*22dc650dSSadaf Ebrahimi 0: ab
10042*22dc650dSSadaf EbrahimiMK: 2
10043*22dc650dSSadaf Ebrahimi    acb
10044*22dc650dSSadaf Ebrahimi 0: a
10045*22dc650dSSadaf Ebrahimi
10046*22dc650dSSadaf Ebrahimi/a(?(?!(*:2)b).)/mark
10047*22dc650dSSadaf Ebrahimi    acb
10048*22dc650dSSadaf Ebrahimi 0: ac
10049*22dc650dSSadaf Ebrahimi    abc
10050*22dc650dSSadaf Ebrahimi 0: a
10051*22dc650dSSadaf EbrahimiMK: 2
10052*22dc650dSSadaf Ebrahimi
10053*22dc650dSSadaf Ebrahimi/(?:a|ab){1}+c/
10054*22dc650dSSadaf Ebrahimi\= Expect no match
10055*22dc650dSSadaf Ebrahimi    abc
10056*22dc650dSSadaf EbrahimiNo match
10057*22dc650dSSadaf Ebrahimi
10058*22dc650dSSadaf Ebrahimi/(a|ab){1}+c/
10059*22dc650dSSadaf Ebrahimi    abc
10060*22dc650dSSadaf EbrahimiNo match
10061*22dc650dSSadaf Ebrahimi
10062*22dc650dSSadaf Ebrahimi/(a+){1}+a/
10063*22dc650dSSadaf Ebrahimi\= Expect no match
10064*22dc650dSSadaf Ebrahimi    aaaa
10065*22dc650dSSadaf EbrahimiNo match
10066*22dc650dSSadaf Ebrahimi
10067*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a|ab))(?1){1}+c/
10068*22dc650dSSadaf Ebrahimi    abc
10069*22dc650dSSadaf EbrahimiNo match
10070*22dc650dSSadaf Ebrahimi
10071*22dc650dSSadaf Ebrahimi/(?:a|(?=b)|.)*\z/
10072*22dc650dSSadaf Ebrahimi    abc
10073*22dc650dSSadaf Ebrahimi 0: abc
10074*22dc650dSSadaf Ebrahimi
10075*22dc650dSSadaf Ebrahimi/(?:a|(?=b)|.)*/
10076*22dc650dSSadaf Ebrahimi    abc
10077*22dc650dSSadaf Ebrahimi 0: a
10078*22dc650dSSadaf Ebrahimi
10079*22dc650dSSadaf Ebrahimi/(?<=a(*SKIP)x)|c/
10080*22dc650dSSadaf Ebrahimi    abcd
10081*22dc650dSSadaf EbrahimiNo match
10082*22dc650dSSadaf Ebrahimi
10083*22dc650dSSadaf Ebrahimi/(?<=a(*SKIP)x)|d/
10084*22dc650dSSadaf Ebrahimi    abcd
10085*22dc650dSSadaf Ebrahimi 0: d
10086*22dc650dSSadaf Ebrahimi
10087*22dc650dSSadaf Ebrahimi/(?<=(?=.(?<=x)))/aftertext
10088*22dc650dSSadaf Ebrahimi    abx
10089*22dc650dSSadaf Ebrahimi 0:
10090*22dc650dSSadaf Ebrahimi 0+ x
10091*22dc650dSSadaf Ebrahimi
10092*22dc650dSSadaf Ebrahimi/(?<=(?=(?<=a)))b/
10093*22dc650dSSadaf Ebrahimi    ab
10094*22dc650dSSadaf Ebrahimi 0: b
10095*22dc650dSSadaf Ebrahimi
10096*22dc650dSSadaf Ebrahimi/^(?<A>a)(?(<A>)b)((?<=b).*)$/
10097*22dc650dSSadaf Ebrahimi    abc
10098*22dc650dSSadaf Ebrahimi 0: abc
10099*22dc650dSSadaf Ebrahimi 1: a
10100*22dc650dSSadaf Ebrahimi 2: c
10101*22dc650dSSadaf Ebrahimi
10102*22dc650dSSadaf Ebrahimi/^(a\1?){4}$/
10103*22dc650dSSadaf Ebrahimi    aaaa
10104*22dc650dSSadaf Ebrahimi 0: aaaa
10105*22dc650dSSadaf Ebrahimi 1: a
10106*22dc650dSSadaf Ebrahimi    aaaaaa
10107*22dc650dSSadaf Ebrahimi 0: aaaaaa
10108*22dc650dSSadaf Ebrahimi 1: aa
10109*22dc650dSSadaf Ebrahimi
10110*22dc650dSSadaf Ebrahimi/^((\1+)|\d)+133X$/
10111*22dc650dSSadaf Ebrahimi    111133X
10112*22dc650dSSadaf Ebrahimi 0: 111133X
10113*22dc650dSSadaf Ebrahimi 1: 11
10114*22dc650dSSadaf Ebrahimi 2: 11
10115*22dc650dSSadaf Ebrahimi
10116*22dc650dSSadaf Ebrahimi/^(?>.*?([A-Z])(?!.*\1)){26}/i
10117*22dc650dSSadaf Ebrahimi    The quick brown fox jumps over the lazy dog.
10118*22dc650dSSadaf Ebrahimi 0: The quick brown fox jumps over the lazy dog
10119*22dc650dSSadaf Ebrahimi 1: g
10120*22dc650dSSadaf Ebrahimi    Jackdaws love my big sphinx of quartz.
10121*22dc650dSSadaf Ebrahimi 0: Jackdaws love my big sphinx of quartz
10122*22dc650dSSadaf Ebrahimi 1: z
10123*22dc650dSSadaf Ebrahimi    Pack my box with five dozen liquor jugs.
10124*22dc650dSSadaf Ebrahimi 0: Pack my box with five dozen liquor jugs
10125*22dc650dSSadaf Ebrahimi 1: s
10126*22dc650dSSadaf Ebrahimi\= Expect no match
10127*22dc650dSSadaf Ebrahimi    The quick brown fox jumps over the lazy cat.
10128*22dc650dSSadaf EbrahimiNo match
10129*22dc650dSSadaf Ebrahimi    Hackdaws love my big sphinx of quartz.
10130*22dc650dSSadaf EbrahimiNo match
10131*22dc650dSSadaf Ebrahimi    Pack my fox with five dozen liquor jugs.
10132*22dc650dSSadaf EbrahimiNo match
10133*22dc650dSSadaf Ebrahimi
10134*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(A)))X(*F)/
10135*22dc650dSSadaf Ebrahimi\= Expect no match
10136*22dc650dSSadaf Ebrahimi    AXYZ
10137*22dc650dSSadaf EbrahimiNo match
10138*22dc650dSSadaf Ebrahimi
10139*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(A)))./
10140*22dc650dSSadaf Ebrahimi    AXYZ
10141*22dc650dSSadaf Ebrahimi 0: Y
10142*22dc650dSSadaf Ebrahimi
10143*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(.*))Y)./
10144*22dc650dSSadaf Ebrahimi    AXYZ
10145*22dc650dSSadaf Ebrahimi 0: Z
10146*22dc650dSSadaf Ebrahimi
10147*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(Y))(?1))./
10148*22dc650dSSadaf Ebrahimi    AXYZ
10149*22dc650dSSadaf Ebrahimi 0: Z
10150*22dc650dSSadaf Ebrahimi
10151*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<foo>bar))(?<![-a-z0-9])word/
10152*22dc650dSSadaf Ebrahimi    word
10153*22dc650dSSadaf Ebrahimi 0: word
10154*22dc650dSSadaf Ebrahimi
10155*22dc650dSSadaf Ebrahimi/a{1,2,3}b/
10156*22dc650dSSadaf Ebrahimi    a{1,2,3}b
10157*22dc650dSSadaf Ebrahimi 0: a{1,2,3}b
10158*22dc650dSSadaf Ebrahimi
10159*22dc650dSSadaf Ebrahimi/\214748364/
10160*22dc650dSSadaf Ebrahimi    >\x{8c}748364<
10161*22dc650dSSadaf Ebrahimi 0: \x8c748364
10162*22dc650dSSadaf Ebrahimi
10163*22dc650dSSadaf Ebrahimi/a{65536/
10164*22dc650dSSadaf Ebrahimi    >a{65536<
10165*22dc650dSSadaf Ebrahimi 0: a{65536
10166*22dc650dSSadaf Ebrahimi
10167*22dc650dSSadaf Ebrahimi/a\K.(?0)*/
10168*22dc650dSSadaf Ebrahimi    abac
10169*22dc650dSSadaf Ebrahimi 0: c
10170*22dc650dSSadaf Ebrahimi
10171*22dc650dSSadaf Ebrahimi/(a\K.(?1)*)/
10172*22dc650dSSadaf Ebrahimi    abac
10173*22dc650dSSadaf Ebrahimi 0: c
10174*22dc650dSSadaf Ebrahimi 1: abac
10175*22dc650dSSadaf Ebrahimi
10176*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
10177*22dc650dSSadaf Ebrahimi# Perl-compatible tests of variable-length lookbehinds.
10178*22dc650dSSadaf Ebrahimi
10179*22dc650dSSadaf Ebrahimi/(?<=ab?c).../g
10180*22dc650dSSadaf Ebrahimi    abcdefgacxyz
10181*22dc650dSSadaf Ebrahimi 0: def
10182*22dc650dSSadaf Ebrahimi 0: xyz
10183*22dc650dSSadaf Ebrahimi
10184*22dc650dSSadaf Ebrahimi/(?<=PQR|ab?c).../g
10185*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
10186*22dc650dSSadaf Ebrahimi 0: def
10187*22dc650dSSadaf Ebrahimi 0: xyz
10188*22dc650dSSadaf Ebrahimi 0: 123
10189*22dc650dSSadaf Ebrahimi
10190*22dc650dSSadaf Ebrahimi/(?<=ab?c|PQR).../g
10191*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
10192*22dc650dSSadaf Ebrahimi 0: def
10193*22dc650dSSadaf Ebrahimi 0: xyz
10194*22dc650dSSadaf Ebrahimi 0: 123
10195*22dc650dSSadaf Ebrahimi
10196*22dc650dSSadaf Ebrahimi/(?<=PQ|ab?c).../g
10197*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
10198*22dc650dSSadaf Ebrahimi 0: def
10199*22dc650dSSadaf Ebrahimi 0: xyz
10200*22dc650dSSadaf Ebrahimi 0: R12
10201*22dc650dSSadaf Ebrahimi
10202*22dc650dSSadaf Ebrahimi/(?<=ab?c|PQ).../g
10203*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
10204*22dc650dSSadaf Ebrahimi 0: def
10205*22dc650dSSadaf Ebrahimi 0: xyz
10206*22dc650dSSadaf Ebrahimi 0: R12
10207*22dc650dSSadaf Ebrahimi
10208*22dc650dSSadaf Ebrahimi/(?<=a(b?c|d?e?e)f)X./g
10209*22dc650dSSadaf Ebrahimi     acfX1zzzaefX2zzzadeefX3zzzX4zzz
10210*22dc650dSSadaf Ebrahimi 0: X1
10211*22dc650dSSadaf Ebrahimi 1: c
10212*22dc650dSSadaf Ebrahimi 0: X2
10213*22dc650dSSadaf Ebrahimi 1: e
10214*22dc650dSSadaf Ebrahimi 0: X3
10215*22dc650dSSadaf Ebrahimi 1: dee
10216*22dc650dSSadaf Ebrahimi
10217*22dc650dSSadaf Ebrahimi/(?<!a(b?c|d?e?e)f)X./g
10218*22dc650dSSadaf Ebrahimi     acfX1zzzaefX2zzzadeefX3zzzX4zzz
10219*22dc650dSSadaf Ebrahimi 0: X4
10220*22dc650dSSadaf Ebrahimi
10221*22dc650dSSadaf Ebrahimi/(?(?<=ab?c)d|e)/
10222*22dc650dSSadaf Ebrahimi    abcdefg
10223*22dc650dSSadaf Ebrahimi 0: d
10224*22dc650dSSadaf Ebrahimi    acdefg
10225*22dc650dSSadaf Ebrahimi 0: d
10226*22dc650dSSadaf Ebrahimi    axdefg
10227*22dc650dSSadaf Ebrahimi 0: e
10228*22dc650dSSadaf Ebrahimi
10229*22dc650dSSadaf Ebrahimi/(?<=\d{2,3}|ABC)./
10230*22dc650dSSadaf Ebrahimi    ABCD
10231*22dc650dSSadaf Ebrahimi 0: D
10232*22dc650dSSadaf Ebrahimi
10233*22dc650dSSadaf Ebrahimi/(?<=(\d{1,255}))X/
10234*22dc650dSSadaf Ebrahimi    1234X
10235*22dc650dSSadaf Ebrahimi 0: X
10236*22dc650dSSadaf Ebrahimi 1: 1234
10237*22dc650dSSadaf Ebrahimi
10238*22dc650dSSadaf Ebrahimi/(?<=a(b?c){3}d)X/
10239*22dc650dSSadaf Ebrahimi   ZXacbccdXYZ
10240*22dc650dSSadaf Ebrahimi 0: X
10241*22dc650dSSadaf Ebrahimi 1: c
10242*22dc650dSSadaf Ebrahimi
10243*22dc650dSSadaf Ebrahimi/(?<=a(b?c){0}d)X/
10244*22dc650dSSadaf Ebrahimi   ZXadXYZ
10245*22dc650dSSadaf Ebrahimi 0: X
10246*22dc650dSSadaf Ebrahimi
10247*22dc650dSSadaf Ebrahimi/(?<=a?(b?c){0}d)X./
10248*22dc650dSSadaf Ebrahimi   ZXadXYZ
10249*22dc650dSSadaf Ebrahimi 0: XY
10250*22dc650dSSadaf Ebrahimi
10251*22dc650dSSadaf Ebrahimi/(?<=\R)X/
10252*22dc650dSSadaf Ebrahimi    \x{0a}X
10253*22dc650dSSadaf Ebrahimi 0: X
10254*22dc650dSSadaf Ebrahimi    a\x{0a}X
10255*22dc650dSSadaf Ebrahimi 0: X
10256*22dc650dSSadaf Ebrahimi    a\x{0d}\x{0a}X
10257*22dc650dSSadaf Ebrahimi 0: X
10258*22dc650dSSadaf Ebrahimi
10259*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
10260*22dc650dSSadaf Ebrahimi
10261*22dc650dSSadaf Ebrahimi# Altered interpretation of {,n}
10262*22dc650dSSadaf Ebrahimi
10263*22dc650dSSadaf Ebrahimi/a{,3}B/
10264*22dc650dSSadaf Ebrahimi    XBBB
10265*22dc650dSSadaf Ebrahimi 0: B
10266*22dc650dSSadaf Ebrahimi    XaBBB
10267*22dc650dSSadaf Ebrahimi 0: aB
10268*22dc650dSSadaf Ebrahimi    XaaBBB
10269*22dc650dSSadaf Ebrahimi 0: aaB
10270*22dc650dSSadaf Ebrahimi    XaaaBBB
10271*22dc650dSSadaf Ebrahimi 0: aaaB
10272*22dc650dSSadaf Ebrahimi    XaaaaBBB
10273*22dc650dSSadaf Ebrahimi 0: aaaB
10274*22dc650dSSadaf Ebrahimi
10275*22dc650dSSadaf Ebrahimi# But {,} remains not a qualifier
10276*22dc650dSSadaf Ebrahimi
10277*22dc650dSSadaf Ebrahimi/a{,}B/
10278*22dc650dSSadaf Ebrahimi    Xa{,}BBB
10279*22dc650dSSadaf Ebrahimi 0: a{,}B
10280*22dc650dSSadaf Ebrahimi\= Expect no match
10281*22dc650dSSadaf Ebrahimi    XBBB
10282*22dc650dSSadaf EbrahimiNo match
10283*22dc650dSSadaf Ebrahimi    XaBBB
10284*22dc650dSSadaf EbrahimiNo match
10285*22dc650dSSadaf Ebrahimi
10286*22dc650dSSadaf Ebrahimi# Checks for non-quantifiers after refactored code
10287*22dc650dSSadaf Ebrahimi
10288*22dc650dSSadaf Ebrahimi/X{/
10289*22dc650dSSadaf Ebrahimi    ZZX{}YY
10290*22dc650dSSadaf Ebrahimi 0: X{
10291*22dc650dSSadaf Ebrahimi
10292*22dc650dSSadaf Ebrahimi/X{A/
10293*22dc650dSSadaf Ebrahimi    ZZX{ABC}
10294*22dc650dSSadaf Ebrahimi 0: X{A
10295*22dc650dSSadaf Ebrahimi
10296*22dc650dSSadaf Ebrahimi/X{}/
10297*22dc650dSSadaf Ebrahimi    ZZX{}YZ
10298*22dc650dSSadaf Ebrahimi 0: X{}
10299*22dc650dSSadaf Ebrahimi
10300*22dc650dSSadaf Ebrahimi/X{1234/
10301*22dc650dSSadaf Ebrahimi    ZZX{123456
10302*22dc650dSSadaf Ebrahimi 0: X{1234
10303*22dc650dSSadaf Ebrahimi
10304*22dc650dSSadaf Ebrahimi/X{12ABC}/
10305*22dc650dSSadaf Ebrahimi    ZZX{12ABC}Y
10306*22dc650dSSadaf Ebrahimi 0: X{12ABC}
10307*22dc650dSSadaf Ebrahimi
10308*22dc650dSSadaf Ebrahimi/X{1,/
10309*22dc650dSSadaf Ebrahimi    ZZX{1,...
10310*22dc650dSSadaf Ebrahimi 0: X{1,
10311*22dc650dSSadaf Ebrahimi
10312*22dc650dSSadaf Ebrahimi/X{,9/
10313*22dc650dSSadaf Ebrahimi    ZZX{,9}abc
10314*22dc650dSSadaf Ebrahimi 0: X{,9
10315*22dc650dSSadaf Ebrahimi
10316*22dc650dSSadaf Ebrahimi/X{,9]/
10317*22dc650dSSadaf Ebrahimi    ZZX{,9]..
10318*22dc650dSSadaf Ebrahimi 0: X{,9]
10319*22dc650dSSadaf Ebrahimi
10320*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
10321*22dc650dSSadaf Ebrahimi
10322*22dc650dSSadaf Ebrahimi/(A)(?-1)(?+1)(B)/
10323*22dc650dSSadaf Ebrahimi    xxAABBzz
10324*22dc650dSSadaf Ebrahimi 0: AABB
10325*22dc650dSSadaf Ebrahimi 1: A
10326*22dc650dSSadaf Ebrahimi 2: B
10327*22dc650dSSadaf Ebrahimi
10328*22dc650dSSadaf Ebrahimi/(A)(\g{ -2 }B)/
10329*22dc650dSSadaf Ebrahimi    XAABX
10330*22dc650dSSadaf Ebrahimi 0: AAB
10331*22dc650dSSadaf Ebrahimi 1: A
10332*22dc650dSSadaf Ebrahimi 2: AB
10333*22dc650dSSadaf Ebrahimi
10334*22dc650dSSadaf Ebrahimi/(A)((?-2)B)/
10335*22dc650dSSadaf Ebrahimi    XAABX
10336*22dc650dSSadaf Ebrahimi 0: AAB
10337*22dc650dSSadaf Ebrahimi 1: A
10338*22dc650dSSadaf Ebrahimi 2: AB
10339*22dc650dSSadaf Ebrahimi
10340*22dc650dSSadaf Ebrahimi/a\c\X/
10341*22dc650dSSadaf Ebrahimi    --a\x1cX--
10342*22dc650dSSadaf Ebrahimi 0: a\x1cX
10343*22dc650dSSadaf Ebrahimi
10344*22dc650dSSadaf Ebrahimi/(a)\g{ 1 }/
10345*22dc650dSSadaf Ebrahimi    baab
10346*22dc650dSSadaf Ebrahimi 0: aa
10347*22dc650dSSadaf Ebrahimi 1: a
10348*22dc650dSSadaf Ebrahimi
10349*22dc650dSSadaf Ebrahimi/a{ 1,2 }/
10350*22dc650dSSadaf Ebrahimi    Xaaaaa
10351*22dc650dSSadaf Ebrahimi 0: aa
10352*22dc650dSSadaf Ebrahimi
10353*22dc650dSSadaf Ebrahimi/a{ 1 , 2 }/
10354*22dc650dSSadaf Ebrahimi    Xaaaaa
10355*22dc650dSSadaf Ebrahimi 0: aa
10356*22dc650dSSadaf Ebrahimi
10357*22dc650dSSadaf Ebrahimi/(?'name'ab)\k{ name }(?P=name)/
10358*22dc650dSSadaf Ebrahimi    XabababX
10359*22dc650dSSadaf Ebrahimi 0: ababab
10360*22dc650dSSadaf Ebrahimi 1: ab
10361*22dc650dSSadaf Ebrahimi
10362*22dc650dSSadaf Ebrahimi/A{,}B/
10363*22dc650dSSadaf Ebrahimi    A{,}B
10364*22dc650dSSadaf Ebrahimi 0: A{,}B
10365*22dc650dSSadaf Ebrahimi
10366*22dc650dSSadaf Ebrahimi/A{ , }B/
10367*22dc650dSSadaf Ebrahimi    A{ , }B
10368*22dc650dSSadaf Ebrahimi 0: A{ , }B
10369*22dc650dSSadaf Ebrahimi
10370*22dc650dSSadaf Ebrahimi/A{ ,3}/
10371*22dc650dSSadaf Ebrahimi    AAAAAACC
10372*22dc650dSSadaf Ebrahimi 0: AAA
10373*22dc650dSSadaf Ebrahimi
10374*22dc650dSSadaf Ebrahimi/A{ 3, }/
10375*22dc650dSSadaf Ebrahimi    BBAAAAAACC
10376*22dc650dSSadaf Ebrahimi 0: AAAAAA
10377*22dc650dSSadaf Ebrahimi
10378*22dc650dSSadaf Ebrahimi# This pattern validates regular expression patterns. The original that I was
10379*22dc650dSSadaf Ebrahimi# sent was this:
10380*22dc650dSSadaf Ebrahimi# /^((?:(?:[^?+*{}()[\]\\|]+|\\.|\[(?:\^?\\.|\^[^\\]|[^\\^])(?:[^\]\\]+|\\.)*\]|\((?:\?[:=!]|\?<[=!]|\?>)?(?1)??\)|\(\?(?:R|[+-]?\d+)\))(?:(?:[?+*]|\{\d+(?:,\d*)?\})[?+]?)?|\|)*)$/
10381*22dc650dSSadaf Ebrahimi# This is not very readable, and also does not handle all features. I have done
10382*22dc650dSSadaf Ebrahimi# some work on it.
10383*22dc650dSSadaf Ebrahimi
10384*22dc650dSSadaf Ebrahimi/^
10385*22dc650dSSadaf Ebrahimi(?<re>
10386*22dc650dSSadaf Ebrahimi# A regular expression is zero or more of these items.
10387*22dc650dSSadaf Ebrahimi  (?:
10388*22dc650dSSadaf Ebrahimi  # An item is one of these:
10389*22dc650dSSadaf Ebrahimi    (?:
10390*22dc650dSSadaf Ebrahimi      [^?+*{}()\[\]\\|]++|  # Non-meta characters or unquoted .
10391*22dc650dSSadaf Ebrahimi      \\.|                  # Quoted .
10392*22dc650dSSadaf Ebrahimi
10393*22dc650dSSadaf Ebrahimi      \[                    # Class, which is [
10394*22dc650dSSadaf Ebrahimi      (?:                   # Followed by
10395*22dc650dSSadaf Ebrahimi        \^?\\.|             # Optional ^ and any escaped character
10396*22dc650dSSadaf Ebrahimi        \^[^\\]|            # OR ^ and not escaped character
10397*22dc650dSSadaf Ebrahimi        [^\\^]              # OR neither ^ nor \
10398*22dc650dSSadaf Ebrahimi      )                     # Followed by
10399*22dc650dSSadaf Ebrahimi      (?:[^\]\\]+|\\.)*+    # Zero or more (not ] or \) OR escaped dot
10400*22dc650dSSadaf Ebrahimi      \]|                   # Class ends with ]
10401*22dc650dSSadaf Ebrahimi
10402*22dc650dSSadaf Ebrahimi      \(                    # Parenthesized group
10403*22dc650dSSadaf Ebrahimi        (?:                 # Start with optional
10404*22dc650dSSadaf Ebrahimi          \?[:=!]|          # ? followed by : = !
10405*22dc650dSSadaf Ebrahimi          \?<[=!]|          # OR ?< followed by = or !
10406*22dc650dSSadaf Ebrahimi          \?>               # OR ?>
10407*22dc650dSSadaf Ebrahimi        )?
10408*22dc650dSSadaf Ebrahimi        (?&re)??            # Then a nested <re>
10409*22dc650dSSadaf Ebrahimi      \)|                   # End parenthesized group
10410*22dc650dSSadaf Ebrahimi
10411*22dc650dSSadaf Ebrahimi      \(\?                  # Other parenthesized items
10412*22dc650dSSadaf Ebrahimi        (?:                 # (? followed by
10413*22dc650dSSadaf Ebrahimi          R|                # R
10414*22dc650dSSadaf Ebrahimi          [+-]?\d++         # Or optional +- and digits
10415*22dc650dSSadaf Ebrahimi        )
10416*22dc650dSSadaf Ebrahimi      \)|                   # End parens
10417*22dc650dSSadaf Ebrahimi
10418*22dc650dSSadaf Ebrahimi      \(\*                  # Verbs
10419*22dc650dSSadaf Ebrahimi        (?:
10420*22dc650dSSadaf Ebrahimi          COMMIT|
10421*22dc650dSSadaf Ebrahimi          FAIL|
10422*22dc650dSSadaf Ebrahimi          MARK:[^)]*|
10423*22dc650dSSadaf Ebrahimi          (?:PRUNE|SKIP|THEN)(?::[^\)]*+)?
10424*22dc650dSSadaf Ebrahimi        )
10425*22dc650dSSadaf Ebrahimi      \)
10426*22dc650dSSadaf Ebrahimi    )                       # End list of items
10427*22dc650dSSadaf Ebrahimi
10428*22dc650dSSadaf Ebrahimi    # Followed by an optional quantifier
10429*22dc650dSSadaf Ebrahimi
10430*22dc650dSSadaf Ebrahimi    (?:
10431*22dc650dSSadaf Ebrahimi      (?:
10432*22dc650dSSadaf Ebrahimi        [?+*]     # ?+*
10433*22dc650dSSadaf Ebrahimi        |         # OR
10434*22dc650dSSadaf Ebrahimi        \{\d+     # { digits
10435*22dc650dSSadaf Ebrahimi        (?:,\d*)? # optionally followed by ,digits
10436*22dc650dSSadaf Ebrahimi        \}        # then closing }
10437*22dc650dSSadaf Ebrahimi        |         # OR
10438*22dc650dSSadaf Ebrahimi        \{,\d+}   # {,digits}
10439*22dc650dSSadaf Ebrahimi      )
10440*22dc650dSSadaf Ebrahimi      [?+]?       # optional ungreedy or possessive
10441*22dc650dSSadaf Ebrahimi    )?
10442*22dc650dSSadaf Ebrahimi
10443*22dc650dSSadaf Ebrahimi    | # OR an "item" is a branch ending
10444*22dc650dSSadaf Ebrahimi
10445*22dc650dSSadaf Ebrahimi    \|
10446*22dc650dSSadaf Ebrahimi
10447*22dc650dSSadaf Ebrahimi  )*  # Zero or more top-level items.
10448*22dc650dSSadaf Ebrahimi)     # End regex group.
10449*22dc650dSSadaf Ebrahimi$/x
10450*22dc650dSSadaf Ebrahimi    [abcdef]
10451*22dc650dSSadaf Ebrahimi 0: [abcdef]
10452*22dc650dSSadaf Ebrahimi 1: [abcdef]
10453*22dc650dSSadaf Ebrahimi    [abc\\]def]
10454*22dc650dSSadaf Ebrahimi 0: [abc\]def]
10455*22dc650dSSadaf Ebrahimi 1: [abc\]def]
10456*22dc650dSSadaf Ebrahimi    a.b|abcd
10457*22dc650dSSadaf Ebrahimi 0: a.b|abcd
10458*22dc650dSSadaf Ebrahimi 1: a.b|abcd
10459*22dc650dSSadaf Ebrahimi    ab()d
10460*22dc650dSSadaf Ebrahimi 0: ab()d
10461*22dc650dSSadaf Ebrahimi 1: ab()d
10462*22dc650dSSadaf Ebrahimi    ab{1,3}d
10463*22dc650dSSadaf Ebrahimi 0: ab{1,3}d
10464*22dc650dSSadaf Ebrahimi 1: ab{1,3}d
10465*22dc650dSSadaf Ebrahimi    ab{,3}d
10466*22dc650dSSadaf Ebrahimi 0: ab{,3}d
10467*22dc650dSSadaf Ebrahimi 1: ab{,3}d
10468*22dc650dSSadaf Ebrahimi    ab(*FAIL)d(*COMMIT)(*SKIP)(*THEN:abc)
10469*22dc650dSSadaf Ebrahimi 0: ab(*FAIL)d(*COMMIT)(*SKIP)(*THEN:abc)
10470*22dc650dSSadaf Ebrahimi 1: ab(*FAIL)d(*COMMIT)(*SKIP)(*THEN:abc)
10471*22dc650dSSadaf Ebrahimi    ab(*MARK:xyz)
10472*22dc650dSSadaf Ebrahimi 0: ab(*MARK:xyz)
10473*22dc650dSSadaf Ebrahimi 1: ab(*MARK:xyz)
10474*22dc650dSSadaf Ebrahimi    (?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\\s])
10475*22dc650dSSadaf Ebrahimi 0: (?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])
10476*22dc650dSSadaf Ebrahimi 1: (?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])
10477*22dc650dSSadaf Ebrahimi    abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\^\\\\\\?caxyz
10478*22dc650dSSadaf Ebrahimi 0: abcd\t\n\r\f\a\e\071\x3b\^\\\?caxyz
10479*22dc650dSSadaf Ebrahimi 1: abcd\t\n\r\f\a\e\071\x3b\^\\\?caxyz
10480*22dc650dSSadaf Ebrahimi    a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz
10481*22dc650dSSadaf Ebrahimi 0: a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz
10482*22dc650dSSadaf Ebrahimi 1: a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz
10483*22dc650dSSadaf Ebrahimi    \\G(?:(?=(\\1.|)(.))){1,13}?(?!.*\\2.*\\2)\\1\\K\\2
10484*22dc650dSSadaf Ebrahimi 0: \G(?:(?=(\1.|)(.))){1,13}?(?!.*\2.*\2)\1\K\2
10485*22dc650dSSadaf Ebrahimi 1: \G(?:(?=(\1.|)(.))){1,13}?(?!.*\2.*\2)\1\K\2
10486*22dc650dSSadaf Ebrahimi\= Expect no match
10487*22dc650dSSadaf Ebrahimi    ab)d
10488*22dc650dSSadaf EbrahimiNo match
10489*22dc650dSSadaf Ebrahimi    ab(d
10490*22dc650dSSadaf EbrahimiNo match
10491*22dc650dSSadaf Ebrahimi    {4,5}
10492*22dc650dSSadaf EbrahimiNo match
10493*22dc650dSSadaf Ebrahimi    a[]b
10494*22dc650dSSadaf EbrahimiNo match
10495*22dc650dSSadaf Ebrahimi    (a)(?(1)a|b|c)
10496*22dc650dSSadaf EbrahimiNo match
10497*22dc650dSSadaf Ebrahimi
10498*22dc650dSSadaf Ebrahimi/^..A(*SKIP)B|C/
10499*22dc650dSSadaf Ebrahimi    12ADC
10500*22dc650dSSadaf Ebrahimi 0: C
10501*22dc650dSSadaf Ebrahimi
10502*22dc650dSSadaf Ebrahimi/(?<!a?)/
10503*22dc650dSSadaf Ebrahimi    a
10504*22dc650dSSadaf EbrahimiNo match
10505*22dc650dSSadaf Ebrahimi
10506*22dc650dSSadaf Ebrahimi# End of testinput1
10507