xref: /aosp_15_r20/external/pcre/testdata/testinput1 (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    What do you know about the quick brown fox?
16*22dc650dSSadaf Ebrahimi\= Expect no match
17*22dc650dSSadaf Ebrahimi    The quick brown FOX
18*22dc650dSSadaf Ebrahimi    What do you know about THE QUICK BROWN FOX?
19*22dc650dSSadaf Ebrahimi
20*22dc650dSSadaf Ebrahimi/The quick brown fox/i
21*22dc650dSSadaf Ebrahimi    the quick brown fox
22*22dc650dSSadaf Ebrahimi    The quick brown FOX
23*22dc650dSSadaf Ebrahimi    What do you know about the quick brown fox?
24*22dc650dSSadaf Ebrahimi    What do you know about THE QUICK BROWN FOX?
25*22dc650dSSadaf Ebrahimi
26*22dc650dSSadaf Ebrahimi/abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
27*22dc650dSSadaf Ebrahimi    abcd\t\n\r\f\a\e9;\$\\?caxyz
28*22dc650dSSadaf Ebrahimi
29*22dc650dSSadaf Ebrahimi/a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
30*22dc650dSSadaf Ebrahimi    abxyzpqrrrabbxyyyypqAzz
31*22dc650dSSadaf Ebrahimi    abxyzpqrrrabbxyyyypqAzz
32*22dc650dSSadaf Ebrahimi    aabxyzpqrrrabbxyyyypqAzz
33*22dc650dSSadaf Ebrahimi    aaabxyzpqrrrabbxyyyypqAzz
34*22dc650dSSadaf Ebrahimi    aaaabxyzpqrrrabbxyyyypqAzz
35*22dc650dSSadaf Ebrahimi    abcxyzpqrrrabbxyyyypqAzz
36*22dc650dSSadaf Ebrahimi    aabcxyzpqrrrabbxyyyypqAzz
37*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypAzz
38*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqAzz
39*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqAzz
40*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqAzz
41*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqAzz
42*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqqAzz
43*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqqqAzz
44*22dc650dSSadaf Ebrahimi    aaaabcxyzpqrrrabbxyyyypqAzz
45*22dc650dSSadaf Ebrahimi    abxyzzpqrrrabbxyyyypqAzz
46*22dc650dSSadaf Ebrahimi    aabxyzzzpqrrrabbxyyyypqAzz
47*22dc650dSSadaf Ebrahimi    aaabxyzzzzpqrrrabbxyyyypqAzz
48*22dc650dSSadaf Ebrahimi    aaaabxyzzzzpqrrrabbxyyyypqAzz
49*22dc650dSSadaf Ebrahimi    abcxyzzpqrrrabbxyyyypqAzz
50*22dc650dSSadaf Ebrahimi    aabcxyzzzpqrrrabbxyyyypqAzz
51*22dc650dSSadaf Ebrahimi    aaabcxyzzzzpqrrrabbxyyyypqAzz
52*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbxyyyypqAzz
53*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyyypqAzz
54*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
55*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypABzz
56*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypABBzz
57*22dc650dSSadaf Ebrahimi    >>>aaabxyzpqrrrabbxyyyypqAzz
58*22dc650dSSadaf Ebrahimi    >aaaabxyzpqrrrabbxyyyypqAzz
59*22dc650dSSadaf Ebrahimi    >>>>abcxyzpqrrrabbxyyyypqAzz
60*22dc650dSSadaf Ebrahimi\= Expect no match
61*22dc650dSSadaf Ebrahimi    abxyzpqrrabbxyyyypqAzz
62*22dc650dSSadaf Ebrahimi    abxyzpqrrrrabbxyyyypqAzz
63*22dc650dSSadaf Ebrahimi    abxyzpqrrrabxyyyypqAzz
64*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
65*22dc650dSSadaf Ebrahimi    aaaabcxyzzzzpqrrrabbbxyyypqAzz
66*22dc650dSSadaf Ebrahimi    aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
67*22dc650dSSadaf Ebrahimi
68*22dc650dSSadaf Ebrahimi/^(abc){1,2}zz/
69*22dc650dSSadaf Ebrahimi    abczz
70*22dc650dSSadaf Ebrahimi    abcabczz
71*22dc650dSSadaf Ebrahimi\= Expect no match
72*22dc650dSSadaf Ebrahimi    zz
73*22dc650dSSadaf Ebrahimi    abcabcabczz
74*22dc650dSSadaf Ebrahimi    >>abczz
75*22dc650dSSadaf Ebrahimi
76*22dc650dSSadaf Ebrahimi/^(b+?|a){1,2}?c/
77*22dc650dSSadaf Ebrahimi    bc
78*22dc650dSSadaf Ebrahimi    bbc
79*22dc650dSSadaf Ebrahimi    bbbc
80*22dc650dSSadaf Ebrahimi    bac
81*22dc650dSSadaf Ebrahimi    bbac
82*22dc650dSSadaf Ebrahimi    aac
83*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbc
84*22dc650dSSadaf Ebrahimi    bbbbbbbbbbbac
85*22dc650dSSadaf Ebrahimi\= Expect no match
86*22dc650dSSadaf Ebrahimi    aaac
87*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbac
88*22dc650dSSadaf Ebrahimi
89*22dc650dSSadaf Ebrahimi/^(b+|a){1,2}c/
90*22dc650dSSadaf Ebrahimi    bc
91*22dc650dSSadaf Ebrahimi    bbc
92*22dc650dSSadaf Ebrahimi    bbbc
93*22dc650dSSadaf Ebrahimi    bac
94*22dc650dSSadaf Ebrahimi    bbac
95*22dc650dSSadaf Ebrahimi    aac
96*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbc
97*22dc650dSSadaf Ebrahimi    bbbbbbbbbbbac
98*22dc650dSSadaf Ebrahimi\= Expect no match
99*22dc650dSSadaf Ebrahimi    aaac
100*22dc650dSSadaf Ebrahimi    abbbbbbbbbbbac
101*22dc650dSSadaf Ebrahimi
102*22dc650dSSadaf Ebrahimi/^(ba|b*){1,2}?bc/
103*22dc650dSSadaf Ebrahimi    babc
104*22dc650dSSadaf Ebrahimi    bbabc
105*22dc650dSSadaf Ebrahimi    bababc
106*22dc650dSSadaf Ebrahimi\= Expect no match
107*22dc650dSSadaf Ebrahimi    bababbc
108*22dc650dSSadaf Ebrahimi    babababc
109*22dc650dSSadaf Ebrahimi
110*22dc650dSSadaf Ebrahimi/^\ca\cA\c[;\c:/
111*22dc650dSSadaf Ebrahimi    \x01\x01\e;z
112*22dc650dSSadaf Ebrahimi
113*22dc650dSSadaf Ebrahimi/^[ab\]cde]/
114*22dc650dSSadaf Ebrahimi    athing
115*22dc650dSSadaf Ebrahimi    bthing
116*22dc650dSSadaf Ebrahimi    ]thing
117*22dc650dSSadaf Ebrahimi    cthing
118*22dc650dSSadaf Ebrahimi    dthing
119*22dc650dSSadaf Ebrahimi    ething
120*22dc650dSSadaf Ebrahimi\= Expect no match
121*22dc650dSSadaf Ebrahimi    fthing
122*22dc650dSSadaf Ebrahimi    [thing
123*22dc650dSSadaf Ebrahimi    \\thing
124*22dc650dSSadaf Ebrahimi
125*22dc650dSSadaf Ebrahimi/^[]cde]/
126*22dc650dSSadaf Ebrahimi    ]thing
127*22dc650dSSadaf Ebrahimi    cthing
128*22dc650dSSadaf Ebrahimi    dthing
129*22dc650dSSadaf Ebrahimi    ething
130*22dc650dSSadaf Ebrahimi\= Expect no match
131*22dc650dSSadaf Ebrahimi    athing
132*22dc650dSSadaf Ebrahimi    fthing
133*22dc650dSSadaf Ebrahimi
134*22dc650dSSadaf Ebrahimi/^[^ab\]cde]/
135*22dc650dSSadaf Ebrahimi    fthing
136*22dc650dSSadaf Ebrahimi    [thing
137*22dc650dSSadaf Ebrahimi    \\thing
138*22dc650dSSadaf Ebrahimi\= Expect no match
139*22dc650dSSadaf Ebrahimi    athing
140*22dc650dSSadaf Ebrahimi    bthing
141*22dc650dSSadaf Ebrahimi    ]thing
142*22dc650dSSadaf Ebrahimi    cthing
143*22dc650dSSadaf Ebrahimi    dthing
144*22dc650dSSadaf Ebrahimi    ething
145*22dc650dSSadaf Ebrahimi
146*22dc650dSSadaf Ebrahimi/^[^]cde]/
147*22dc650dSSadaf Ebrahimi    athing
148*22dc650dSSadaf Ebrahimi    fthing
149*22dc650dSSadaf Ebrahimi\= Expect no match
150*22dc650dSSadaf Ebrahimi    ]thing
151*22dc650dSSadaf Ebrahimi    cthing
152*22dc650dSSadaf Ebrahimi    dthing
153*22dc650dSSadaf Ebrahimi    ething
154*22dc650dSSadaf Ebrahimi
155*22dc650dSSadaf Ebrahimi/^\�/
156*22dc650dSSadaf Ebrahimi157*22dc650dSSadaf Ebrahimi
158*22dc650dSSadaf Ebrahimi/^�/
159*22dc650dSSadaf Ebrahimi160*22dc650dSSadaf Ebrahimi
161*22dc650dSSadaf Ebrahimi/^[0-9]+$/
162*22dc650dSSadaf Ebrahimi    0
163*22dc650dSSadaf Ebrahimi    1
164*22dc650dSSadaf Ebrahimi    2
165*22dc650dSSadaf Ebrahimi    3
166*22dc650dSSadaf Ebrahimi    4
167*22dc650dSSadaf Ebrahimi    5
168*22dc650dSSadaf Ebrahimi    6
169*22dc650dSSadaf Ebrahimi    7
170*22dc650dSSadaf Ebrahimi    8
171*22dc650dSSadaf Ebrahimi    9
172*22dc650dSSadaf Ebrahimi    10
173*22dc650dSSadaf Ebrahimi    100
174*22dc650dSSadaf Ebrahimi\= Expect no match
175*22dc650dSSadaf Ebrahimi    abc
176*22dc650dSSadaf Ebrahimi
177*22dc650dSSadaf Ebrahimi/^.*nter/
178*22dc650dSSadaf Ebrahimi    enter
179*22dc650dSSadaf Ebrahimi    inter
180*22dc650dSSadaf Ebrahimi    uponter
181*22dc650dSSadaf Ebrahimi
182*22dc650dSSadaf Ebrahimi/^xxx[0-9]+$/
183*22dc650dSSadaf Ebrahimi    xxx0
184*22dc650dSSadaf Ebrahimi    xxx1234
185*22dc650dSSadaf Ebrahimi\= Expect no match
186*22dc650dSSadaf Ebrahimi    xxx
187*22dc650dSSadaf Ebrahimi
188*22dc650dSSadaf Ebrahimi/^.+[0-9][0-9][0-9]$/
189*22dc650dSSadaf Ebrahimi    x123
190*22dc650dSSadaf Ebrahimi    x1234
191*22dc650dSSadaf Ebrahimi    xx123
192*22dc650dSSadaf Ebrahimi    123456
193*22dc650dSSadaf Ebrahimi\= Expect no match
194*22dc650dSSadaf Ebrahimi    123
195*22dc650dSSadaf Ebrahimi
196*22dc650dSSadaf Ebrahimi/^.+?[0-9][0-9][0-9]$/
197*22dc650dSSadaf Ebrahimi    x123
198*22dc650dSSadaf Ebrahimi    x1234
199*22dc650dSSadaf Ebrahimi    xx123
200*22dc650dSSadaf Ebrahimi    123456
201*22dc650dSSadaf Ebrahimi\= Expect no match
202*22dc650dSSadaf Ebrahimi    123
203*22dc650dSSadaf Ebrahimi
204*22dc650dSSadaf Ebrahimi/^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
205*22dc650dSSadaf Ebrahimi    abc!pqr=apquxz.ixr.zzz.ac.uk
206*22dc650dSSadaf Ebrahimi\= Expect no match
207*22dc650dSSadaf Ebrahimi    !pqr=apquxz.ixr.zzz.ac.uk
208*22dc650dSSadaf Ebrahimi    abc!=apquxz.ixr.zzz.ac.uk
209*22dc650dSSadaf Ebrahimi    abc!pqr=apquxz:ixr.zzz.ac.uk
210*22dc650dSSadaf Ebrahimi    abc!pqr=apquxz.ixr.zzz.ac.ukk
211*22dc650dSSadaf Ebrahimi
212*22dc650dSSadaf Ebrahimi/:/
213*22dc650dSSadaf Ebrahimi    Well, we need a colon: somewhere
214*22dc650dSSadaf Ebrahimi\= Expect no match
215*22dc650dSSadaf Ebrahimi    Fail without a colon
216*22dc650dSSadaf Ebrahimi
217*22dc650dSSadaf Ebrahimi/([\da-f:]+)$/i
218*22dc650dSSadaf Ebrahimi    0abc
219*22dc650dSSadaf Ebrahimi    abc
220*22dc650dSSadaf Ebrahimi    fed
221*22dc650dSSadaf Ebrahimi    E
222*22dc650dSSadaf Ebrahimi    ::
223*22dc650dSSadaf Ebrahimi    5f03:12C0::932e
224*22dc650dSSadaf Ebrahimi    fed def
225*22dc650dSSadaf Ebrahimi    Any old stuff
226*22dc650dSSadaf Ebrahimi\= Expect no match
227*22dc650dSSadaf Ebrahimi    0zzz
228*22dc650dSSadaf Ebrahimi    gzzz
229*22dc650dSSadaf Ebrahimi    fed\x20
230*22dc650dSSadaf Ebrahimi    Any old rubbish
231*22dc650dSSadaf Ebrahimi
232*22dc650dSSadaf Ebrahimi/^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
233*22dc650dSSadaf Ebrahimi    .1.2.3
234*22dc650dSSadaf Ebrahimi    A.12.123.0
235*22dc650dSSadaf Ebrahimi\= Expect no match
236*22dc650dSSadaf Ebrahimi    .1.2.3333
237*22dc650dSSadaf Ebrahimi    1.2.3
238*22dc650dSSadaf Ebrahimi    1234.2.3
239*22dc650dSSadaf Ebrahimi
240*22dc650dSSadaf Ebrahimi/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
241*22dc650dSSadaf Ebrahimi    1 IN SOA non-sp1 non-sp2(
242*22dc650dSSadaf Ebrahimi    1    IN    SOA    non-sp1    non-sp2   (
243*22dc650dSSadaf Ebrahimi\= Expect no match
244*22dc650dSSadaf Ebrahimi    1IN SOA non-sp1 non-sp2(
245*22dc650dSSadaf Ebrahimi
246*22dc650dSSadaf Ebrahimi/^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
247*22dc650dSSadaf Ebrahimi    a.
248*22dc650dSSadaf Ebrahimi    Z.
249*22dc650dSSadaf Ebrahimi    2.
250*22dc650dSSadaf Ebrahimi    ab-c.pq-r.
251*22dc650dSSadaf Ebrahimi    sxk.zzz.ac.uk.
252*22dc650dSSadaf Ebrahimi    x-.y-.
253*22dc650dSSadaf Ebrahimi\= Expect no match
254*22dc650dSSadaf Ebrahimi    -abc.peq.
255*22dc650dSSadaf Ebrahimi
256*22dc650dSSadaf Ebrahimi/^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
257*22dc650dSSadaf Ebrahimi    *.a
258*22dc650dSSadaf Ebrahimi    *.b0-a
259*22dc650dSSadaf Ebrahimi    *.c3-b.c
260*22dc650dSSadaf Ebrahimi    *.c-a.b-c
261*22dc650dSSadaf Ebrahimi\= Expect no match
262*22dc650dSSadaf Ebrahimi    *.0
263*22dc650dSSadaf Ebrahimi    *.a-
264*22dc650dSSadaf Ebrahimi    *.a-b.c-
265*22dc650dSSadaf Ebrahimi    *.c-a.0-c
266*22dc650dSSadaf Ebrahimi
267*22dc650dSSadaf Ebrahimi/^(?=ab(de))(abd)(e)/
268*22dc650dSSadaf Ebrahimi    abde
269*22dc650dSSadaf Ebrahimi
270*22dc650dSSadaf Ebrahimi/^(?!(ab)de|x)(abd)(f)/
271*22dc650dSSadaf Ebrahimi    abdf
272*22dc650dSSadaf Ebrahimi
273*22dc650dSSadaf Ebrahimi/^(?=(ab(cd)))(ab)/
274*22dc650dSSadaf Ebrahimi    abcd
275*22dc650dSSadaf Ebrahimi
276*22dc650dSSadaf Ebrahimi/^[\da-f](\.[\da-f])*$/i
277*22dc650dSSadaf Ebrahimi    a.b.c.d
278*22dc650dSSadaf Ebrahimi    A.B.C.D
279*22dc650dSSadaf Ebrahimi    a.b.c.1.2.3.C
280*22dc650dSSadaf Ebrahimi
281*22dc650dSSadaf Ebrahimi/^\".*\"\s*(;.*)?$/
282*22dc650dSSadaf Ebrahimi    \"1234\"
283*22dc650dSSadaf Ebrahimi    \"abcd\" ;
284*22dc650dSSadaf Ebrahimi    \"\" ; rhubarb
285*22dc650dSSadaf Ebrahimi\= Expect no match
286*22dc650dSSadaf Ebrahimi    \"1234\" : things
287*22dc650dSSadaf Ebrahimi
288*22dc650dSSadaf Ebrahimi/^$/
289*22dc650dSSadaf Ebrahimi    \
290*22dc650dSSadaf Ebrahimi\= Expect no match
291*22dc650dSSadaf Ebrahimi    A non-empty line
292*22dc650dSSadaf Ebrahimi
293*22dc650dSSadaf Ebrahimi/   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/x
294*22dc650dSSadaf Ebrahimi    ab c
295*22dc650dSSadaf Ebrahimi\= Expect no match
296*22dc650dSSadaf Ebrahimi    abc
297*22dc650dSSadaf Ebrahimi    ab cde
298*22dc650dSSadaf Ebrahimi
299*22dc650dSSadaf Ebrahimi/(?x)   ^    a   (?# begins with a)  b\sc (?# then b c) $ (?# then end)/
300*22dc650dSSadaf Ebrahimi    ab c
301*22dc650dSSadaf Ebrahimi\= Expect no match
302*22dc650dSSadaf Ebrahimi    abc
303*22dc650dSSadaf Ebrahimi    ab cde
304*22dc650dSSadaf Ebrahimi
305*22dc650dSSadaf Ebrahimi/^   a\ b[c ]d       $/x
306*22dc650dSSadaf Ebrahimi    a bcd
307*22dc650dSSadaf Ebrahimi    a b d
308*22dc650dSSadaf Ebrahimi\= Expect no match
309*22dc650dSSadaf Ebrahimi    abcd
310*22dc650dSSadaf Ebrahimi    ab d
311*22dc650dSSadaf Ebrahimi
312*22dc650dSSadaf Ebrahimi/^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
313*22dc650dSSadaf Ebrahimi    abcdefhijklm
314*22dc650dSSadaf Ebrahimi
315*22dc650dSSadaf Ebrahimi/^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
316*22dc650dSSadaf Ebrahimi    abcdefhijklm
317*22dc650dSSadaf Ebrahimi
318*22dc650dSSadaf Ebrahimi/^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
319*22dc650dSSadaf Ebrahimi    a+ Z0+\x08\n\x1d\x12
320*22dc650dSSadaf Ebrahimi
321*22dc650dSSadaf Ebrahimi/^[.^$|()*+?{,}]+/
322*22dc650dSSadaf Ebrahimi    .^\$(*+)|{?,?}
323*22dc650dSSadaf Ebrahimi
324*22dc650dSSadaf Ebrahimi/^a*\w/
325*22dc650dSSadaf Ebrahimi    z
326*22dc650dSSadaf Ebrahimi    az
327*22dc650dSSadaf Ebrahimi    aaaz
328*22dc650dSSadaf Ebrahimi    a
329*22dc650dSSadaf Ebrahimi    aa
330*22dc650dSSadaf Ebrahimi    aaaa
331*22dc650dSSadaf Ebrahimi    a+
332*22dc650dSSadaf Ebrahimi    aa+
333*22dc650dSSadaf Ebrahimi
334*22dc650dSSadaf Ebrahimi/^a*?\w/
335*22dc650dSSadaf Ebrahimi    z
336*22dc650dSSadaf Ebrahimi    az
337*22dc650dSSadaf Ebrahimi    aaaz
338*22dc650dSSadaf Ebrahimi    a
339*22dc650dSSadaf Ebrahimi    aa
340*22dc650dSSadaf Ebrahimi    aaaa
341*22dc650dSSadaf Ebrahimi    a+
342*22dc650dSSadaf Ebrahimi    aa+
343*22dc650dSSadaf Ebrahimi
344*22dc650dSSadaf Ebrahimi/^a+\w/
345*22dc650dSSadaf Ebrahimi    az
346*22dc650dSSadaf Ebrahimi    aaaz
347*22dc650dSSadaf Ebrahimi    aa
348*22dc650dSSadaf Ebrahimi    aaaa
349*22dc650dSSadaf Ebrahimi    aa+
350*22dc650dSSadaf Ebrahimi
351*22dc650dSSadaf Ebrahimi/^a+?\w/
352*22dc650dSSadaf Ebrahimi    az
353*22dc650dSSadaf Ebrahimi    aaaz
354*22dc650dSSadaf Ebrahimi    aa
355*22dc650dSSadaf Ebrahimi    aaaa
356*22dc650dSSadaf Ebrahimi    aa+
357*22dc650dSSadaf Ebrahimi
358*22dc650dSSadaf Ebrahimi/^\d{8}\w{2,}/
359*22dc650dSSadaf Ebrahimi    1234567890
360*22dc650dSSadaf Ebrahimi    12345678ab
361*22dc650dSSadaf Ebrahimi    12345678__
362*22dc650dSSadaf Ebrahimi\= Expect no match
363*22dc650dSSadaf Ebrahimi    1234567
364*22dc650dSSadaf Ebrahimi
365*22dc650dSSadaf Ebrahimi/^[aeiou\d]{4,5}$/
366*22dc650dSSadaf Ebrahimi    uoie
367*22dc650dSSadaf Ebrahimi    1234
368*22dc650dSSadaf Ebrahimi    12345
369*22dc650dSSadaf Ebrahimi    aaaaa
370*22dc650dSSadaf Ebrahimi\= Expect no match
371*22dc650dSSadaf Ebrahimi    123456
372*22dc650dSSadaf Ebrahimi
373*22dc650dSSadaf Ebrahimi/^[aeiou\d]{4,5}?/
374*22dc650dSSadaf Ebrahimi    uoie
375*22dc650dSSadaf Ebrahimi    1234
376*22dc650dSSadaf Ebrahimi    12345
377*22dc650dSSadaf Ebrahimi    aaaaa
378*22dc650dSSadaf Ebrahimi    123456
379*22dc650dSSadaf Ebrahimi
380*22dc650dSSadaf Ebrahimi/\A(abc|def)=(\1){2,3}\Z/
381*22dc650dSSadaf Ebrahimi    abc=abcabc
382*22dc650dSSadaf Ebrahimi    def=defdefdef
383*22dc650dSSadaf Ebrahimi\= Expect no match
384*22dc650dSSadaf Ebrahimi    abc=defdef
385*22dc650dSSadaf Ebrahimi
386*22dc650dSSadaf Ebrahimi/^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
387*22dc650dSSadaf Ebrahimi    abcdefghijkcda2
388*22dc650dSSadaf Ebrahimi    abcdefghijkkkkcda2
389*22dc650dSSadaf Ebrahimi
390*22dc650dSSadaf Ebrahimi/(cat(a(ract|tonic)|erpillar)) \1()2(3)/
391*22dc650dSSadaf Ebrahimi    cataract cataract23
392*22dc650dSSadaf Ebrahimi    catatonic catatonic23
393*22dc650dSSadaf Ebrahimi    caterpillar caterpillar23
394*22dc650dSSadaf Ebrahimi
395*22dc650dSSadaf Ebrahimi
396*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]/
397*22dc650dSSadaf Ebrahimi    From abcd  Mon Sep 01 12:33:02 1997
398*22dc650dSSadaf Ebrahimi
399*22dc650dSSadaf Ebrahimi/^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
400*22dc650dSSadaf Ebrahimi    From abcd  Mon Sep 01 12:33:02 1997
401*22dc650dSSadaf Ebrahimi    From abcd  Mon Sep  1 12:33:02 1997
402*22dc650dSSadaf Ebrahimi\= Expect no match
403*22dc650dSSadaf Ebrahimi    From abcd  Sep 01 12:33:02 1997
404*22dc650dSSadaf Ebrahimi
405*22dc650dSSadaf Ebrahimi/^12.34/s
406*22dc650dSSadaf Ebrahimi    12\n34
407*22dc650dSSadaf Ebrahimi    12\r34
408*22dc650dSSadaf Ebrahimi
409*22dc650dSSadaf Ebrahimi/\w+(?=\t)/
410*22dc650dSSadaf Ebrahimi    the quick brown\t fox
411*22dc650dSSadaf Ebrahimi
412*22dc650dSSadaf Ebrahimi/foo(?!bar)(.*)/
413*22dc650dSSadaf Ebrahimi    foobar is foolish see?
414*22dc650dSSadaf Ebrahimi
415*22dc650dSSadaf Ebrahimi/(?:(?!foo)...|^.{0,2})bar(.*)/
416*22dc650dSSadaf Ebrahimi    foobar crowbar etc
417*22dc650dSSadaf Ebrahimi    barrel
418*22dc650dSSadaf Ebrahimi    2barrel
419*22dc650dSSadaf Ebrahimi    A barrel
420*22dc650dSSadaf Ebrahimi
421*22dc650dSSadaf Ebrahimi/^(\D*)(?=\d)(?!123)/
422*22dc650dSSadaf Ebrahimi    abc456
423*22dc650dSSadaf Ebrahimi\= Expect no match
424*22dc650dSSadaf Ebrahimi    abc123
425*22dc650dSSadaf Ebrahimi
426*22dc650dSSadaf Ebrahimi/^1234(?# test newlines
427*22dc650dSSadaf Ebrahimi  inside)/
428*22dc650dSSadaf Ebrahimi    1234
429*22dc650dSSadaf Ebrahimi
430*22dc650dSSadaf Ebrahimi/^1234 #comment in extended re
431*22dc650dSSadaf Ebrahimi  /x
432*22dc650dSSadaf Ebrahimi    1234
433*22dc650dSSadaf Ebrahimi
434*22dc650dSSadaf Ebrahimi/#rhubarb
435*22dc650dSSadaf Ebrahimi  abcd/x
436*22dc650dSSadaf Ebrahimi    abcd
437*22dc650dSSadaf Ebrahimi
438*22dc650dSSadaf Ebrahimi/^abcd#rhubarb/x
439*22dc650dSSadaf Ebrahimi    abcd
440*22dc650dSSadaf Ebrahimi
441*22dc650dSSadaf Ebrahimi/^(a)\1{2,3}(.)/
442*22dc650dSSadaf Ebrahimi    aaab
443*22dc650dSSadaf Ebrahimi    aaaab
444*22dc650dSSadaf Ebrahimi    aaaaab
445*22dc650dSSadaf Ebrahimi    aaaaaab
446*22dc650dSSadaf Ebrahimi
447*22dc650dSSadaf Ebrahimi/(?!^)abc/
448*22dc650dSSadaf Ebrahimi    the abc
449*22dc650dSSadaf Ebrahimi\= Expect no match
450*22dc650dSSadaf Ebrahimi    abc
451*22dc650dSSadaf Ebrahimi
452*22dc650dSSadaf Ebrahimi/(?=^)abc/
453*22dc650dSSadaf Ebrahimi    abc
454*22dc650dSSadaf Ebrahimi\= Expect no match
455*22dc650dSSadaf Ebrahimi    the abc
456*22dc650dSSadaf Ebrahimi
457*22dc650dSSadaf Ebrahimi/^[ab]{1,3}(ab*|b)/
458*22dc650dSSadaf Ebrahimi    aabbbbb
459*22dc650dSSadaf Ebrahimi
460*22dc650dSSadaf Ebrahimi/^[ab]{1,3}?(ab*|b)/
461*22dc650dSSadaf Ebrahimi    aabbbbb
462*22dc650dSSadaf Ebrahimi
463*22dc650dSSadaf Ebrahimi/^[ab]{1,3}?(ab*?|b)/
464*22dc650dSSadaf Ebrahimi    aabbbbb
465*22dc650dSSadaf Ebrahimi
466*22dc650dSSadaf Ebrahimi/^[ab]{1,3}(ab*?|b)/
467*22dc650dSSadaf Ebrahimi    aabbbbb
468*22dc650dSSadaf Ebrahimi
469*22dc650dSSadaf Ebrahimi/  (?: [\040\t] |  \(
470*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
471*22dc650dSSadaf Ebrahimi\)  )*                          # optional leading comment
472*22dc650dSSadaf Ebrahimi(?:    (?:
473*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
474*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
475*22dc650dSSadaf Ebrahimi|
476*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
477*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
478*22dc650dSSadaf Ebrahimi|                     #    or
479*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
480*22dc650dSSadaf Ebrahimi)* "  # closing quote
481*22dc650dSSadaf Ebrahimi)                    # initial word
482*22dc650dSSadaf Ebrahimi(?:  (?: [\040\t] |  \(
483*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
484*22dc650dSSadaf Ebrahimi\)  )*  \.  (?: [\040\t] |  \(
485*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
486*22dc650dSSadaf Ebrahimi\)  )*   (?:
487*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
488*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
489*22dc650dSSadaf Ebrahimi|
490*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
491*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
492*22dc650dSSadaf Ebrahimi|                     #    or
493*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
494*22dc650dSSadaf Ebrahimi)* "  # closing quote
495*22dc650dSSadaf Ebrahimi)  )* # further okay, if led by a period
496*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
497*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
498*22dc650dSSadaf Ebrahimi\)  )*  @  (?: [\040\t] |  \(
499*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
500*22dc650dSSadaf Ebrahimi\)  )*    (?:
501*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
502*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
503*22dc650dSSadaf Ebrahimi|   \[                         # [
504*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
505*22dc650dSSadaf Ebrahimi\]                        #           ]
506*22dc650dSSadaf Ebrahimi)                           # initial subdomain
507*22dc650dSSadaf Ebrahimi(?:                                  #
508*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
509*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
510*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
511*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
512*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
513*22dc650dSSadaf Ebrahimi\)  )*   (?:
514*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
515*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
516*22dc650dSSadaf Ebrahimi|   \[                         # [
517*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
518*22dc650dSSadaf Ebrahimi\]                        #           ]
519*22dc650dSSadaf Ebrahimi)                     #   ...further okay
520*22dc650dSSadaf Ebrahimi)*
521*22dc650dSSadaf Ebrahimi# address
522*22dc650dSSadaf Ebrahimi|                     #  or
523*22dc650dSSadaf Ebrahimi(?:
524*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
525*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
526*22dc650dSSadaf Ebrahimi|
527*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
528*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
529*22dc650dSSadaf Ebrahimi|                     #    or
530*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
531*22dc650dSSadaf Ebrahimi)* "  # closing quote
532*22dc650dSSadaf Ebrahimi)             # one word, optionally followed by....
533*22dc650dSSadaf Ebrahimi(?:
534*22dc650dSSadaf Ebrahimi[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037]  |  # atom and space parts, or...
535*22dc650dSSadaf Ebrahimi\(
536*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
537*22dc650dSSadaf Ebrahimi\)       |  # comments, or...
538*22dc650dSSadaf Ebrahimi
539*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
540*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
541*22dc650dSSadaf Ebrahimi|                     #    or
542*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
543*22dc650dSSadaf Ebrahimi)* "  # closing quote
544*22dc650dSSadaf Ebrahimi# quoted strings
545*22dc650dSSadaf Ebrahimi)*
546*22dc650dSSadaf Ebrahimi<  (?: [\040\t] |  \(
547*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
548*22dc650dSSadaf Ebrahimi\)  )*                     # leading <
549*22dc650dSSadaf Ebrahimi(?:  @  (?: [\040\t] |  \(
550*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
551*22dc650dSSadaf Ebrahimi\)  )*    (?:
552*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
553*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
554*22dc650dSSadaf Ebrahimi|   \[                         # [
555*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
556*22dc650dSSadaf Ebrahimi\]                        #           ]
557*22dc650dSSadaf Ebrahimi)                           # initial subdomain
558*22dc650dSSadaf Ebrahimi(?:                                  #
559*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
560*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
561*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
562*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
563*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
564*22dc650dSSadaf Ebrahimi\)  )*   (?:
565*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
566*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
567*22dc650dSSadaf Ebrahimi|   \[                         # [
568*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
569*22dc650dSSadaf Ebrahimi\]                        #           ]
570*22dc650dSSadaf Ebrahimi)                     #   ...further okay
571*22dc650dSSadaf Ebrahimi)*
572*22dc650dSSadaf Ebrahimi
573*22dc650dSSadaf Ebrahimi(?:  (?: [\040\t] |  \(
574*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
575*22dc650dSSadaf Ebrahimi\)  )*  ,  (?: [\040\t] |  \(
576*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
577*22dc650dSSadaf Ebrahimi\)  )*  @  (?: [\040\t] |  \(
578*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
579*22dc650dSSadaf Ebrahimi\)  )*    (?:
580*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
581*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
582*22dc650dSSadaf Ebrahimi|   \[                         # [
583*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
584*22dc650dSSadaf Ebrahimi\]                        #           ]
585*22dc650dSSadaf Ebrahimi)                           # initial subdomain
586*22dc650dSSadaf Ebrahimi(?:                                  #
587*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
588*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
589*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
590*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
591*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
592*22dc650dSSadaf Ebrahimi\)  )*   (?:
593*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
594*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
595*22dc650dSSadaf Ebrahimi|   \[                         # [
596*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
597*22dc650dSSadaf Ebrahimi\]                        #           ]
598*22dc650dSSadaf Ebrahimi)                     #   ...further okay
599*22dc650dSSadaf Ebrahimi)*
600*22dc650dSSadaf Ebrahimi)* # further okay, if led by comma
601*22dc650dSSadaf Ebrahimi:                                # closing colon
602*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
603*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
604*22dc650dSSadaf Ebrahimi\)  )*  )? #       optional route
605*22dc650dSSadaf Ebrahimi(?:
606*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
607*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
608*22dc650dSSadaf Ebrahimi|
609*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
610*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
611*22dc650dSSadaf Ebrahimi|                     #    or
612*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
613*22dc650dSSadaf Ebrahimi)* "  # closing quote
614*22dc650dSSadaf Ebrahimi)                    # initial word
615*22dc650dSSadaf Ebrahimi(?:  (?: [\040\t] |  \(
616*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
617*22dc650dSSadaf Ebrahimi\)  )*  \.  (?: [\040\t] |  \(
618*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
619*22dc650dSSadaf Ebrahimi\)  )*   (?:
620*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
621*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
622*22dc650dSSadaf Ebrahimi|
623*22dc650dSSadaf Ebrahimi" (?:                      # opening quote...
624*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"]                #   Anything except backslash and quote
625*22dc650dSSadaf Ebrahimi|                     #    or
626*22dc650dSSadaf Ebrahimi\\ [^\x80-\xff]           #   Escaped something (something != CR)
627*22dc650dSSadaf Ebrahimi)* "  # closing quote
628*22dc650dSSadaf Ebrahimi)  )* # further okay, if led by a period
629*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
630*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
631*22dc650dSSadaf Ebrahimi\)  )*  @  (?: [\040\t] |  \(
632*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
633*22dc650dSSadaf Ebrahimi\)  )*    (?:
634*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
635*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
636*22dc650dSSadaf Ebrahimi|   \[                         # [
637*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
638*22dc650dSSadaf Ebrahimi\]                        #           ]
639*22dc650dSSadaf Ebrahimi)                           # initial subdomain
640*22dc650dSSadaf Ebrahimi(?:                                  #
641*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
642*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
643*22dc650dSSadaf Ebrahimi\)  )*  \.                        # if led by a period...
644*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
645*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
646*22dc650dSSadaf Ebrahimi\)  )*   (?:
647*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
648*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
649*22dc650dSSadaf Ebrahimi|   \[                         # [
650*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*    #    stuff
651*22dc650dSSadaf Ebrahimi\]                        #           ]
652*22dc650dSSadaf Ebrahimi)                     #   ...further okay
653*22dc650dSSadaf Ebrahimi)*
654*22dc650dSSadaf Ebrahimi#       address spec
655*22dc650dSSadaf Ebrahimi(?: [\040\t] |  \(
656*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
657*22dc650dSSadaf Ebrahimi\)  )*  > #                  trailing >
658*22dc650dSSadaf Ebrahimi# name and address
659*22dc650dSSadaf Ebrahimi)  (?: [\040\t] |  \(
660*22dc650dSSadaf Ebrahimi(?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  |  \( (?:  [^\\\x80-\xff\n\015()]  |  \\ [^\x80-\xff]  )* \)  )*
661*22dc650dSSadaf Ebrahimi\)  )*                       # optional trailing comment
662*22dc650dSSadaf Ebrahimi/x
663*22dc650dSSadaf Ebrahimi    Alan Other <user\@dom.ain>
664*22dc650dSSadaf Ebrahimi    <user\@dom.ain>
665*22dc650dSSadaf Ebrahimi    user\@dom.ain
666*22dc650dSSadaf Ebrahimi    \"A. Other\" <user.1234\@dom.ain> (a comment)
667*22dc650dSSadaf Ebrahimi    A. Other <user.1234\@dom.ain> (a comment)
668*22dc650dSSadaf Ebrahimi    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
669*22dc650dSSadaf Ebrahimi    A missing angle <user\@some.where
670*22dc650dSSadaf Ebrahimi\= Expect no match
671*22dc650dSSadaf Ebrahimi    The quick brown fox
672*22dc650dSSadaf Ebrahimi
673*22dc650dSSadaf Ebrahimi/[\040\t]*                    # Nab whitespace.
674*22dc650dSSadaf Ebrahimi(?:
675*22dc650dSSadaf Ebrahimi\(                              #  (
676*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
677*22dc650dSSadaf Ebrahimi(?:                                 #       (
678*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
679*22dc650dSSadaf Ebrahimi\(                            #  (
680*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
681*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
682*22dc650dSSadaf Ebrahimi\)                           #                       )
683*22dc650dSSadaf Ebrahimi)    #         special
684*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
685*22dc650dSSadaf Ebrahimi)*                                  #            )*
686*22dc650dSSadaf Ebrahimi\)                             #                )
687*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
688*22dc650dSSadaf Ebrahimi# optional leading comment
689*22dc650dSSadaf Ebrahimi(?:
690*22dc650dSSadaf Ebrahimi(?:
691*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
692*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
693*22dc650dSSadaf Ebrahimi# Atom
694*22dc650dSSadaf Ebrahimi|                       #  or
695*22dc650dSSadaf Ebrahimi"                                     # "
696*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
697*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
698*22dc650dSSadaf Ebrahimi"                                     #        "
699*22dc650dSSadaf Ebrahimi# Quoted string
700*22dc650dSSadaf Ebrahimi)
701*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
702*22dc650dSSadaf Ebrahimi(?:
703*22dc650dSSadaf Ebrahimi\(                              #  (
704*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
705*22dc650dSSadaf Ebrahimi(?:                                 #       (
706*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
707*22dc650dSSadaf Ebrahimi\(                            #  (
708*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
709*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
710*22dc650dSSadaf Ebrahimi\)                           #                       )
711*22dc650dSSadaf Ebrahimi)    #         special
712*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
713*22dc650dSSadaf Ebrahimi)*                                  #            )*
714*22dc650dSSadaf Ebrahimi\)                             #                )
715*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
716*22dc650dSSadaf Ebrahimi(?:
717*22dc650dSSadaf Ebrahimi\.
718*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
719*22dc650dSSadaf Ebrahimi(?:
720*22dc650dSSadaf Ebrahimi\(                              #  (
721*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
722*22dc650dSSadaf Ebrahimi(?:                                 #       (
723*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
724*22dc650dSSadaf Ebrahimi\(                            #  (
725*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
726*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
727*22dc650dSSadaf Ebrahimi\)                           #                       )
728*22dc650dSSadaf Ebrahimi)    #         special
729*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
730*22dc650dSSadaf Ebrahimi)*                                  #            )*
731*22dc650dSSadaf Ebrahimi\)                             #                )
732*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
733*22dc650dSSadaf Ebrahimi(?:
734*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
735*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
736*22dc650dSSadaf Ebrahimi# Atom
737*22dc650dSSadaf Ebrahimi|                       #  or
738*22dc650dSSadaf Ebrahimi"                                     # "
739*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
740*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
741*22dc650dSSadaf Ebrahimi"                                     #        "
742*22dc650dSSadaf Ebrahimi# Quoted string
743*22dc650dSSadaf Ebrahimi)
744*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
745*22dc650dSSadaf Ebrahimi(?:
746*22dc650dSSadaf Ebrahimi\(                              #  (
747*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
748*22dc650dSSadaf Ebrahimi(?:                                 #       (
749*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
750*22dc650dSSadaf Ebrahimi\(                            #  (
751*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
752*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
753*22dc650dSSadaf Ebrahimi\)                           #                       )
754*22dc650dSSadaf Ebrahimi)    #         special
755*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
756*22dc650dSSadaf Ebrahimi)*                                  #            )*
757*22dc650dSSadaf Ebrahimi\)                             #                )
758*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
759*22dc650dSSadaf Ebrahimi# additional words
760*22dc650dSSadaf Ebrahimi)*
761*22dc650dSSadaf Ebrahimi@
762*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
763*22dc650dSSadaf Ebrahimi(?:
764*22dc650dSSadaf Ebrahimi\(                              #  (
765*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
766*22dc650dSSadaf Ebrahimi(?:                                 #       (
767*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
768*22dc650dSSadaf Ebrahimi\(                            #  (
769*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
770*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
771*22dc650dSSadaf Ebrahimi\)                           #                       )
772*22dc650dSSadaf Ebrahimi)    #         special
773*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
774*22dc650dSSadaf Ebrahimi)*                                  #            )*
775*22dc650dSSadaf Ebrahimi\)                             #                )
776*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
777*22dc650dSSadaf Ebrahimi(?:
778*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
779*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
780*22dc650dSSadaf Ebrahimi|
781*22dc650dSSadaf Ebrahimi\[                            # [
782*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
783*22dc650dSSadaf Ebrahimi\]                           #           ]
784*22dc650dSSadaf Ebrahimi)
785*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
786*22dc650dSSadaf Ebrahimi(?:
787*22dc650dSSadaf Ebrahimi\(                              #  (
788*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
789*22dc650dSSadaf Ebrahimi(?:                                 #       (
790*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
791*22dc650dSSadaf Ebrahimi\(                            #  (
792*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
793*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
794*22dc650dSSadaf Ebrahimi\)                           #                       )
795*22dc650dSSadaf Ebrahimi)    #         special
796*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
797*22dc650dSSadaf Ebrahimi)*                                  #            )*
798*22dc650dSSadaf Ebrahimi\)                             #                )
799*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
800*22dc650dSSadaf Ebrahimi# optional trailing comments
801*22dc650dSSadaf Ebrahimi(?:
802*22dc650dSSadaf Ebrahimi\.
803*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
804*22dc650dSSadaf Ebrahimi(?:
805*22dc650dSSadaf Ebrahimi\(                              #  (
806*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
807*22dc650dSSadaf Ebrahimi(?:                                 #       (
808*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
809*22dc650dSSadaf Ebrahimi\(                            #  (
810*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
811*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
812*22dc650dSSadaf Ebrahimi\)                           #                       )
813*22dc650dSSadaf Ebrahimi)    #         special
814*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
815*22dc650dSSadaf Ebrahimi)*                                  #            )*
816*22dc650dSSadaf Ebrahimi\)                             #                )
817*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
818*22dc650dSSadaf Ebrahimi(?:
819*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
820*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
821*22dc650dSSadaf Ebrahimi|
822*22dc650dSSadaf Ebrahimi\[                            # [
823*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
824*22dc650dSSadaf Ebrahimi\]                           #           ]
825*22dc650dSSadaf Ebrahimi)
826*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
827*22dc650dSSadaf Ebrahimi(?:
828*22dc650dSSadaf Ebrahimi\(                              #  (
829*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
830*22dc650dSSadaf Ebrahimi(?:                                 #       (
831*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
832*22dc650dSSadaf Ebrahimi\(                            #  (
833*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
834*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
835*22dc650dSSadaf Ebrahimi\)                           #                       )
836*22dc650dSSadaf Ebrahimi)    #         special
837*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
838*22dc650dSSadaf Ebrahimi)*                                  #            )*
839*22dc650dSSadaf Ebrahimi\)                             #                )
840*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
841*22dc650dSSadaf Ebrahimi# optional trailing comments
842*22dc650dSSadaf Ebrahimi)*
843*22dc650dSSadaf Ebrahimi# address
844*22dc650dSSadaf Ebrahimi|                             #  or
845*22dc650dSSadaf Ebrahimi(?:
846*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
847*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
848*22dc650dSSadaf Ebrahimi# Atom
849*22dc650dSSadaf Ebrahimi|                       #  or
850*22dc650dSSadaf Ebrahimi"                                     # "
851*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
852*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
853*22dc650dSSadaf Ebrahimi"                                     #        "
854*22dc650dSSadaf Ebrahimi# Quoted string
855*22dc650dSSadaf Ebrahimi)
856*22dc650dSSadaf Ebrahimi# leading word
857*22dc650dSSadaf Ebrahimi[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *               # "normal" atoms and or spaces
858*22dc650dSSadaf Ebrahimi(?:
859*22dc650dSSadaf Ebrahimi(?:
860*22dc650dSSadaf Ebrahimi\(                              #  (
861*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
862*22dc650dSSadaf Ebrahimi(?:                                 #       (
863*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
864*22dc650dSSadaf Ebrahimi\(                            #  (
865*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
866*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
867*22dc650dSSadaf Ebrahimi\)                           #                       )
868*22dc650dSSadaf Ebrahimi)    #         special
869*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
870*22dc650dSSadaf Ebrahimi)*                                  #            )*
871*22dc650dSSadaf Ebrahimi\)                             #                )
872*22dc650dSSadaf Ebrahimi|
873*22dc650dSSadaf Ebrahimi"                                     # "
874*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
875*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
876*22dc650dSSadaf Ebrahimi"                                     #        "
877*22dc650dSSadaf Ebrahimi) # "special" comment or quoted string
878*22dc650dSSadaf Ebrahimi[^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] *            #  more "normal"
879*22dc650dSSadaf Ebrahimi)*
880*22dc650dSSadaf Ebrahimi<
881*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
882*22dc650dSSadaf Ebrahimi(?:
883*22dc650dSSadaf Ebrahimi\(                              #  (
884*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
885*22dc650dSSadaf Ebrahimi(?:                                 #       (
886*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
887*22dc650dSSadaf Ebrahimi\(                            #  (
888*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
889*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
890*22dc650dSSadaf Ebrahimi\)                           #                       )
891*22dc650dSSadaf Ebrahimi)    #         special
892*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
893*22dc650dSSadaf Ebrahimi)*                                  #            )*
894*22dc650dSSadaf Ebrahimi\)                             #                )
895*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
896*22dc650dSSadaf Ebrahimi# <
897*22dc650dSSadaf Ebrahimi(?:
898*22dc650dSSadaf Ebrahimi@
899*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
900*22dc650dSSadaf Ebrahimi(?:
901*22dc650dSSadaf Ebrahimi\(                              #  (
902*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
903*22dc650dSSadaf Ebrahimi(?:                                 #       (
904*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
905*22dc650dSSadaf Ebrahimi\(                            #  (
906*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
907*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
908*22dc650dSSadaf Ebrahimi\)                           #                       )
909*22dc650dSSadaf Ebrahimi)    #         special
910*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
911*22dc650dSSadaf Ebrahimi)*                                  #            )*
912*22dc650dSSadaf Ebrahimi\)                             #                )
913*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
914*22dc650dSSadaf Ebrahimi(?:
915*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
916*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
917*22dc650dSSadaf Ebrahimi|
918*22dc650dSSadaf Ebrahimi\[                            # [
919*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
920*22dc650dSSadaf Ebrahimi\]                           #           ]
921*22dc650dSSadaf Ebrahimi)
922*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
923*22dc650dSSadaf Ebrahimi(?:
924*22dc650dSSadaf Ebrahimi\(                              #  (
925*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
926*22dc650dSSadaf Ebrahimi(?:                                 #       (
927*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
928*22dc650dSSadaf Ebrahimi\(                            #  (
929*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
930*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
931*22dc650dSSadaf Ebrahimi\)                           #                       )
932*22dc650dSSadaf Ebrahimi)    #         special
933*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
934*22dc650dSSadaf Ebrahimi)*                                  #            )*
935*22dc650dSSadaf Ebrahimi\)                             #                )
936*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
937*22dc650dSSadaf Ebrahimi# optional trailing comments
938*22dc650dSSadaf Ebrahimi(?:
939*22dc650dSSadaf Ebrahimi\.
940*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
941*22dc650dSSadaf Ebrahimi(?:
942*22dc650dSSadaf Ebrahimi\(                              #  (
943*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
944*22dc650dSSadaf Ebrahimi(?:                                 #       (
945*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
946*22dc650dSSadaf Ebrahimi\(                            #  (
947*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
948*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
949*22dc650dSSadaf Ebrahimi\)                           #                       )
950*22dc650dSSadaf Ebrahimi)    #         special
951*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
952*22dc650dSSadaf Ebrahimi)*                                  #            )*
953*22dc650dSSadaf Ebrahimi\)                             #                )
954*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
955*22dc650dSSadaf Ebrahimi(?:
956*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
957*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
958*22dc650dSSadaf Ebrahimi|
959*22dc650dSSadaf Ebrahimi\[                            # [
960*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
961*22dc650dSSadaf Ebrahimi\]                           #           ]
962*22dc650dSSadaf Ebrahimi)
963*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
964*22dc650dSSadaf Ebrahimi(?:
965*22dc650dSSadaf Ebrahimi\(                              #  (
966*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
967*22dc650dSSadaf Ebrahimi(?:                                 #       (
968*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
969*22dc650dSSadaf Ebrahimi\(                            #  (
970*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
971*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
972*22dc650dSSadaf Ebrahimi\)                           #                       )
973*22dc650dSSadaf Ebrahimi)    #         special
974*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
975*22dc650dSSadaf Ebrahimi)*                                  #            )*
976*22dc650dSSadaf Ebrahimi\)                             #                )
977*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
978*22dc650dSSadaf Ebrahimi# optional trailing comments
979*22dc650dSSadaf Ebrahimi)*
980*22dc650dSSadaf Ebrahimi(?: ,
981*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
982*22dc650dSSadaf Ebrahimi(?:
983*22dc650dSSadaf Ebrahimi\(                              #  (
984*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
985*22dc650dSSadaf Ebrahimi(?:                                 #       (
986*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
987*22dc650dSSadaf Ebrahimi\(                            #  (
988*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
989*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
990*22dc650dSSadaf Ebrahimi\)                           #                       )
991*22dc650dSSadaf Ebrahimi)    #         special
992*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
993*22dc650dSSadaf Ebrahimi)*                                  #            )*
994*22dc650dSSadaf Ebrahimi\)                             #                )
995*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
996*22dc650dSSadaf Ebrahimi@
997*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
998*22dc650dSSadaf Ebrahimi(?:
999*22dc650dSSadaf Ebrahimi\(                              #  (
1000*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1001*22dc650dSSadaf Ebrahimi(?:                                 #       (
1002*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1003*22dc650dSSadaf Ebrahimi\(                            #  (
1004*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1005*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1006*22dc650dSSadaf Ebrahimi\)                           #                       )
1007*22dc650dSSadaf Ebrahimi)    #         special
1008*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1009*22dc650dSSadaf Ebrahimi)*                                  #            )*
1010*22dc650dSSadaf Ebrahimi\)                             #                )
1011*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
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\[                            # [
1017*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1018*22dc650dSSadaf Ebrahimi\]                           #           ]
1019*22dc650dSSadaf Ebrahimi)
1020*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1021*22dc650dSSadaf Ebrahimi(?:
1022*22dc650dSSadaf Ebrahimi\(                              #  (
1023*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1024*22dc650dSSadaf Ebrahimi(?:                                 #       (
1025*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1026*22dc650dSSadaf Ebrahimi\(                            #  (
1027*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1028*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1029*22dc650dSSadaf Ebrahimi\)                           #                       )
1030*22dc650dSSadaf Ebrahimi)    #         special
1031*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1032*22dc650dSSadaf Ebrahimi)*                                  #            )*
1033*22dc650dSSadaf Ebrahimi\)                             #                )
1034*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1035*22dc650dSSadaf Ebrahimi# optional trailing comments
1036*22dc650dSSadaf Ebrahimi(?:
1037*22dc650dSSadaf Ebrahimi\.
1038*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1039*22dc650dSSadaf Ebrahimi(?:
1040*22dc650dSSadaf Ebrahimi\(                              #  (
1041*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1042*22dc650dSSadaf Ebrahimi(?:                                 #       (
1043*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1044*22dc650dSSadaf Ebrahimi\(                            #  (
1045*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1046*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1047*22dc650dSSadaf Ebrahimi\)                           #                       )
1048*22dc650dSSadaf Ebrahimi)    #         special
1049*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1050*22dc650dSSadaf Ebrahimi)*                                  #            )*
1051*22dc650dSSadaf Ebrahimi\)                             #                )
1052*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1053*22dc650dSSadaf Ebrahimi(?:
1054*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1055*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1056*22dc650dSSadaf Ebrahimi|
1057*22dc650dSSadaf Ebrahimi\[                            # [
1058*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1059*22dc650dSSadaf Ebrahimi\]                           #           ]
1060*22dc650dSSadaf Ebrahimi)
1061*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1062*22dc650dSSadaf Ebrahimi(?:
1063*22dc650dSSadaf Ebrahimi\(                              #  (
1064*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1065*22dc650dSSadaf Ebrahimi(?:                                 #       (
1066*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1067*22dc650dSSadaf Ebrahimi\(                            #  (
1068*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1069*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1070*22dc650dSSadaf Ebrahimi\)                           #                       )
1071*22dc650dSSadaf Ebrahimi)    #         special
1072*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1073*22dc650dSSadaf Ebrahimi)*                                  #            )*
1074*22dc650dSSadaf Ebrahimi\)                             #                )
1075*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1076*22dc650dSSadaf Ebrahimi# optional trailing comments
1077*22dc650dSSadaf Ebrahimi)*
1078*22dc650dSSadaf Ebrahimi)*  # additional domains
1079*22dc650dSSadaf Ebrahimi:
1080*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1081*22dc650dSSadaf Ebrahimi(?:
1082*22dc650dSSadaf Ebrahimi\(                              #  (
1083*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1084*22dc650dSSadaf Ebrahimi(?:                                 #       (
1085*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1086*22dc650dSSadaf Ebrahimi\(                            #  (
1087*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1088*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1089*22dc650dSSadaf Ebrahimi\)                           #                       )
1090*22dc650dSSadaf Ebrahimi)    #         special
1091*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1092*22dc650dSSadaf Ebrahimi)*                                  #            )*
1093*22dc650dSSadaf Ebrahimi\)                             #                )
1094*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1095*22dc650dSSadaf Ebrahimi# optional trailing comments
1096*22dc650dSSadaf Ebrahimi)?     #       optional route
1097*22dc650dSSadaf Ebrahimi(?:
1098*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1099*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1100*22dc650dSSadaf Ebrahimi# Atom
1101*22dc650dSSadaf Ebrahimi|                       #  or
1102*22dc650dSSadaf Ebrahimi"                                     # "
1103*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1104*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1105*22dc650dSSadaf Ebrahimi"                                     #        "
1106*22dc650dSSadaf Ebrahimi# Quoted string
1107*22dc650dSSadaf Ebrahimi)
1108*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1109*22dc650dSSadaf Ebrahimi(?:
1110*22dc650dSSadaf Ebrahimi\(                              #  (
1111*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1112*22dc650dSSadaf Ebrahimi(?:                                 #       (
1113*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1114*22dc650dSSadaf Ebrahimi\(                            #  (
1115*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1116*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1117*22dc650dSSadaf Ebrahimi\)                           #                       )
1118*22dc650dSSadaf Ebrahimi)    #         special
1119*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1120*22dc650dSSadaf Ebrahimi)*                                  #            )*
1121*22dc650dSSadaf Ebrahimi\)                             #                )
1122*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1123*22dc650dSSadaf Ebrahimi(?:
1124*22dc650dSSadaf Ebrahimi\.
1125*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1126*22dc650dSSadaf Ebrahimi(?:
1127*22dc650dSSadaf Ebrahimi\(                              #  (
1128*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1129*22dc650dSSadaf Ebrahimi(?:                                 #       (
1130*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1131*22dc650dSSadaf Ebrahimi\(                            #  (
1132*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1133*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1134*22dc650dSSadaf Ebrahimi\)                           #                       )
1135*22dc650dSSadaf Ebrahimi)    #         special
1136*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1137*22dc650dSSadaf Ebrahimi)*                                  #            )*
1138*22dc650dSSadaf Ebrahimi\)                             #                )
1139*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1140*22dc650dSSadaf Ebrahimi(?:
1141*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1142*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1143*22dc650dSSadaf Ebrahimi# Atom
1144*22dc650dSSadaf Ebrahimi|                       #  or
1145*22dc650dSSadaf Ebrahimi"                                     # "
1146*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015"] *                            #   normal
1147*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  [^\\\x80-\xff\n\015"] * )*        #   ( special normal* )*
1148*22dc650dSSadaf Ebrahimi"                                     #        "
1149*22dc650dSSadaf Ebrahimi# Quoted string
1150*22dc650dSSadaf Ebrahimi)
1151*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1152*22dc650dSSadaf Ebrahimi(?:
1153*22dc650dSSadaf Ebrahimi\(                              #  (
1154*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1155*22dc650dSSadaf Ebrahimi(?:                                 #       (
1156*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1157*22dc650dSSadaf Ebrahimi\(                            #  (
1158*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1159*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1160*22dc650dSSadaf Ebrahimi\)                           #                       )
1161*22dc650dSSadaf Ebrahimi)    #         special
1162*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1163*22dc650dSSadaf Ebrahimi)*                                  #            )*
1164*22dc650dSSadaf Ebrahimi\)                             #                )
1165*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1166*22dc650dSSadaf Ebrahimi# additional words
1167*22dc650dSSadaf Ebrahimi)*
1168*22dc650dSSadaf Ebrahimi@
1169*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1170*22dc650dSSadaf Ebrahimi(?:
1171*22dc650dSSadaf Ebrahimi\(                              #  (
1172*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1173*22dc650dSSadaf Ebrahimi(?:                                 #       (
1174*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1175*22dc650dSSadaf Ebrahimi\(                            #  (
1176*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1177*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1178*22dc650dSSadaf Ebrahimi\)                           #                       )
1179*22dc650dSSadaf Ebrahimi)    #         special
1180*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1181*22dc650dSSadaf Ebrahimi)*                                  #            )*
1182*22dc650dSSadaf Ebrahimi\)                             #                )
1183*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1184*22dc650dSSadaf Ebrahimi(?:
1185*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1186*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1187*22dc650dSSadaf Ebrahimi|
1188*22dc650dSSadaf Ebrahimi\[                            # [
1189*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1190*22dc650dSSadaf Ebrahimi\]                           #           ]
1191*22dc650dSSadaf Ebrahimi)
1192*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1193*22dc650dSSadaf Ebrahimi(?:
1194*22dc650dSSadaf Ebrahimi\(                              #  (
1195*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1196*22dc650dSSadaf Ebrahimi(?:                                 #       (
1197*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1198*22dc650dSSadaf Ebrahimi\(                            #  (
1199*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1200*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1201*22dc650dSSadaf Ebrahimi\)                           #                       )
1202*22dc650dSSadaf Ebrahimi)    #         special
1203*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1204*22dc650dSSadaf Ebrahimi)*                                  #            )*
1205*22dc650dSSadaf Ebrahimi\)                             #                )
1206*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1207*22dc650dSSadaf Ebrahimi# optional trailing comments
1208*22dc650dSSadaf Ebrahimi(?:
1209*22dc650dSSadaf Ebrahimi\.
1210*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1211*22dc650dSSadaf Ebrahimi(?:
1212*22dc650dSSadaf Ebrahimi\(                              #  (
1213*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1214*22dc650dSSadaf Ebrahimi(?:                                 #       (
1215*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1216*22dc650dSSadaf Ebrahimi\(                            #  (
1217*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1218*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1219*22dc650dSSadaf Ebrahimi\)                           #                       )
1220*22dc650dSSadaf Ebrahimi)    #         special
1221*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1222*22dc650dSSadaf Ebrahimi)*                                  #            )*
1223*22dc650dSSadaf Ebrahimi\)                             #                )
1224*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1225*22dc650dSSadaf Ebrahimi(?:
1226*22dc650dSSadaf Ebrahimi[^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+    # some number of atom characters...
1227*22dc650dSSadaf Ebrahimi(?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
1228*22dc650dSSadaf Ebrahimi|
1229*22dc650dSSadaf Ebrahimi\[                            # [
1230*22dc650dSSadaf Ebrahimi(?: [^\\\x80-\xff\n\015\[\]] |  \\ [^\x80-\xff]  )*     #    stuff
1231*22dc650dSSadaf Ebrahimi\]                           #           ]
1232*22dc650dSSadaf Ebrahimi)
1233*22dc650dSSadaf Ebrahimi[\040\t]*                    # Nab whitespace.
1234*22dc650dSSadaf Ebrahimi(?:
1235*22dc650dSSadaf Ebrahimi\(                              #  (
1236*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                             #     normal*
1237*22dc650dSSadaf Ebrahimi(?:                                 #       (
1238*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]  |
1239*22dc650dSSadaf Ebrahimi\(                            #  (
1240*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                            #     normal*
1241*22dc650dSSadaf Ebrahimi(?:  \\ [^\x80-\xff]   [^\\\x80-\xff\n\015()] * )*        #     (special normal*)*
1242*22dc650dSSadaf Ebrahimi\)                           #                       )
1243*22dc650dSSadaf Ebrahimi)    #         special
1244*22dc650dSSadaf Ebrahimi[^\\\x80-\xff\n\015()] *                         #         normal*
1245*22dc650dSSadaf Ebrahimi)*                                  #            )*
1246*22dc650dSSadaf Ebrahimi\)                             #                )
1247*22dc650dSSadaf Ebrahimi[\040\t]* )*    # If comment found, allow more spaces.
1248*22dc650dSSadaf Ebrahimi# optional trailing comments
1249*22dc650dSSadaf Ebrahimi)*
1250*22dc650dSSadaf Ebrahimi#       address spec
1251*22dc650dSSadaf Ebrahimi>                    #                 >
1252*22dc650dSSadaf Ebrahimi# name and address
1253*22dc650dSSadaf Ebrahimi)
1254*22dc650dSSadaf Ebrahimi/x
1255*22dc650dSSadaf Ebrahimi    Alan Other <user\@dom.ain>
1256*22dc650dSSadaf Ebrahimi    <user\@dom.ain>
1257*22dc650dSSadaf Ebrahimi    user\@dom.ain
1258*22dc650dSSadaf Ebrahimi    \"A. Other\" <user.1234\@dom.ain> (a comment)
1259*22dc650dSSadaf Ebrahimi    A. Other <user.1234\@dom.ain> (a comment)
1260*22dc650dSSadaf Ebrahimi    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
1261*22dc650dSSadaf Ebrahimi    A missing angle <user\@some.where
1262*22dc650dSSadaf Ebrahimi\= Expect no match
1263*22dc650dSSadaf Ebrahimi    The quick brown fox
1264*22dc650dSSadaf Ebrahimi
1265*22dc650dSSadaf Ebrahimi/abc\0def\00pqr\000xyz\0000AB/
1266*22dc650dSSadaf Ebrahimi    abc\0def\00pqr\000xyz\0000AB
1267*22dc650dSSadaf Ebrahimi    abc456 abc\0def\00pqr\000xyz\0000ABCDE
1268*22dc650dSSadaf Ebrahimi
1269*22dc650dSSadaf Ebrahimi/abc\x0def\x00pqr\x000xyz\x0000AB/
1270*22dc650dSSadaf Ebrahimi    abc\x0def\x00pqr\x000xyz\x0000AB
1271*22dc650dSSadaf Ebrahimi    abc456 abc\x0def\x00pqr\x000xyz\x0000ABCDE
1272*22dc650dSSadaf Ebrahimi
1273*22dc650dSSadaf Ebrahimi/^[\000-\037]/
1274*22dc650dSSadaf Ebrahimi    \0A
1275*22dc650dSSadaf Ebrahimi    \01B
1276*22dc650dSSadaf Ebrahimi    \037C
1277*22dc650dSSadaf Ebrahimi
1278*22dc650dSSadaf Ebrahimi/\0*/
1279*22dc650dSSadaf Ebrahimi    \0\0\0\0
1280*22dc650dSSadaf Ebrahimi
1281*22dc650dSSadaf Ebrahimi/A\x0{2,3}Z/
1282*22dc650dSSadaf Ebrahimi    The A\x0\x0Z
1283*22dc650dSSadaf Ebrahimi    An A\0\x0\0Z
1284*22dc650dSSadaf Ebrahimi\= Expect no match
1285*22dc650dSSadaf Ebrahimi    A\0Z
1286*22dc650dSSadaf Ebrahimi    A\0\x0\0\x0Z
1287*22dc650dSSadaf Ebrahimi
1288*22dc650dSSadaf Ebrahimi/^(cow|)\1(bell)/
1289*22dc650dSSadaf Ebrahimi    cowcowbell
1290*22dc650dSSadaf Ebrahimi    bell
1291*22dc650dSSadaf Ebrahimi\= Expect no match
1292*22dc650dSSadaf Ebrahimi    cowbell
1293*22dc650dSSadaf Ebrahimi
1294*22dc650dSSadaf Ebrahimi/^\s/
1295*22dc650dSSadaf Ebrahimi    \040abc
1296*22dc650dSSadaf Ebrahimi    \x0cabc
1297*22dc650dSSadaf Ebrahimi    \nabc
1298*22dc650dSSadaf Ebrahimi    \rabc
1299*22dc650dSSadaf Ebrahimi    \tabc
1300*22dc650dSSadaf Ebrahimi\= Expect no match
1301*22dc650dSSadaf Ebrahimi    abc
1302*22dc650dSSadaf Ebrahimi
1303*22dc650dSSadaf Ebrahimi/^a	b
1304*22dc650dSSadaf Ebrahimi      c/x
1305*22dc650dSSadaf Ebrahimi    abc
1306*22dc650dSSadaf Ebrahimi
1307*22dc650dSSadaf Ebrahimi/^(a|)\1*b/
1308*22dc650dSSadaf Ebrahimi    ab
1309*22dc650dSSadaf Ebrahimi    aaaab
1310*22dc650dSSadaf Ebrahimi    b
1311*22dc650dSSadaf Ebrahimi\= Expect no match
1312*22dc650dSSadaf Ebrahimi    acb
1313*22dc650dSSadaf Ebrahimi
1314*22dc650dSSadaf Ebrahimi/^(a|)\1+b/
1315*22dc650dSSadaf Ebrahimi    aab
1316*22dc650dSSadaf Ebrahimi    aaaab
1317*22dc650dSSadaf Ebrahimi    b
1318*22dc650dSSadaf Ebrahimi\= Expect no match
1319*22dc650dSSadaf Ebrahimi    ab
1320*22dc650dSSadaf Ebrahimi
1321*22dc650dSSadaf Ebrahimi/^(a|)\1?b/
1322*22dc650dSSadaf Ebrahimi    ab
1323*22dc650dSSadaf Ebrahimi    aab
1324*22dc650dSSadaf Ebrahimi    b
1325*22dc650dSSadaf Ebrahimi\= Expect no match
1326*22dc650dSSadaf Ebrahimi    acb
1327*22dc650dSSadaf Ebrahimi
1328*22dc650dSSadaf Ebrahimi/^(a|)\1{2}b/
1329*22dc650dSSadaf Ebrahimi    aaab
1330*22dc650dSSadaf Ebrahimi    b
1331*22dc650dSSadaf Ebrahimi\= Expect no match
1332*22dc650dSSadaf Ebrahimi    ab
1333*22dc650dSSadaf Ebrahimi    aab
1334*22dc650dSSadaf Ebrahimi    aaaab
1335*22dc650dSSadaf Ebrahimi
1336*22dc650dSSadaf Ebrahimi/^(a|)\1{2,3}b/
1337*22dc650dSSadaf Ebrahimi    aaab
1338*22dc650dSSadaf Ebrahimi    aaaab
1339*22dc650dSSadaf Ebrahimi    b
1340*22dc650dSSadaf Ebrahimi\= Expect no match
1341*22dc650dSSadaf Ebrahimi    ab
1342*22dc650dSSadaf Ebrahimi    aab
1343*22dc650dSSadaf Ebrahimi    aaaaab
1344*22dc650dSSadaf Ebrahimi
1345*22dc650dSSadaf Ebrahimi/ab{1,3}bc/
1346*22dc650dSSadaf Ebrahimi    abbbbc
1347*22dc650dSSadaf Ebrahimi    abbbc
1348*22dc650dSSadaf Ebrahimi    abbc
1349*22dc650dSSadaf Ebrahimi\= Expect no match
1350*22dc650dSSadaf Ebrahimi    abc
1351*22dc650dSSadaf Ebrahimi    abbbbbc
1352*22dc650dSSadaf Ebrahimi
1353*22dc650dSSadaf Ebrahimi/([^.]*)\.([^:]*):[T ]+(.*)/
1354*22dc650dSSadaf Ebrahimi    track1.title:TBlah blah blah
1355*22dc650dSSadaf Ebrahimi
1356*22dc650dSSadaf Ebrahimi/([^.]*)\.([^:]*):[T ]+(.*)/i
1357*22dc650dSSadaf Ebrahimi    track1.title:TBlah blah blah
1358*22dc650dSSadaf Ebrahimi
1359*22dc650dSSadaf Ebrahimi/([^.]*)\.([^:]*):[t ]+(.*)/i
1360*22dc650dSSadaf Ebrahimi    track1.title:TBlah blah blah
1361*22dc650dSSadaf Ebrahimi
1362*22dc650dSSadaf Ebrahimi/^[W-c]+$/
1363*22dc650dSSadaf Ebrahimi    WXY_^abc
1364*22dc650dSSadaf Ebrahimi\= Expect no match
1365*22dc650dSSadaf Ebrahimi    wxy
1366*22dc650dSSadaf Ebrahimi
1367*22dc650dSSadaf Ebrahimi/^[W-c]+$/i
1368*22dc650dSSadaf Ebrahimi    WXY_^abc
1369*22dc650dSSadaf Ebrahimi    wxy_^ABC
1370*22dc650dSSadaf Ebrahimi
1371*22dc650dSSadaf Ebrahimi/^[\x3f-\x5F]+$/i
1372*22dc650dSSadaf Ebrahimi    WXY_^abc
1373*22dc650dSSadaf Ebrahimi    wxy_^ABC
1374*22dc650dSSadaf Ebrahimi
1375*22dc650dSSadaf Ebrahimi/^abc$/m
1376*22dc650dSSadaf Ebrahimi    abc
1377*22dc650dSSadaf Ebrahimi    qqq\nabc
1378*22dc650dSSadaf Ebrahimi    abc\nzzz
1379*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1380*22dc650dSSadaf Ebrahimi
1381*22dc650dSSadaf Ebrahimi/^abc$/
1382*22dc650dSSadaf Ebrahimi    abc
1383*22dc650dSSadaf Ebrahimi\= Expect no match
1384*22dc650dSSadaf Ebrahimi    qqq\nabc
1385*22dc650dSSadaf Ebrahimi    abc\nzzz
1386*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1387*22dc650dSSadaf Ebrahimi
1388*22dc650dSSadaf Ebrahimi/\Aabc\Z/m
1389*22dc650dSSadaf Ebrahimi    abc
1390*22dc650dSSadaf Ebrahimi    abc\n
1391*22dc650dSSadaf Ebrahimi\= Expect no match
1392*22dc650dSSadaf Ebrahimi    qqq\nabc
1393*22dc650dSSadaf Ebrahimi    abc\nzzz
1394*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1395*22dc650dSSadaf Ebrahimi
1396*22dc650dSSadaf Ebrahimi/\A(.)*\Z/s
1397*22dc650dSSadaf Ebrahimi    abc\ndef
1398*22dc650dSSadaf Ebrahimi
1399*22dc650dSSadaf Ebrahimi/\A(.)*\Z/m
1400*22dc650dSSadaf Ebrahimi\= Expect no match
1401*22dc650dSSadaf Ebrahimi    abc\ndef
1402*22dc650dSSadaf Ebrahimi
1403*22dc650dSSadaf Ebrahimi/(?:b)|(?::+)/
1404*22dc650dSSadaf Ebrahimi    b::c
1405*22dc650dSSadaf Ebrahimi    c::b
1406*22dc650dSSadaf Ebrahimi
1407*22dc650dSSadaf Ebrahimi/[-az]+/
1408*22dc650dSSadaf Ebrahimi    az-
1409*22dc650dSSadaf Ebrahimi\= Expect no match
1410*22dc650dSSadaf Ebrahimi    b
1411*22dc650dSSadaf Ebrahimi
1412*22dc650dSSadaf Ebrahimi/[az-]+/
1413*22dc650dSSadaf Ebrahimi    za-
1414*22dc650dSSadaf Ebrahimi\= Expect no match
1415*22dc650dSSadaf Ebrahimi    b
1416*22dc650dSSadaf Ebrahimi
1417*22dc650dSSadaf Ebrahimi/[a\-z]+/
1418*22dc650dSSadaf Ebrahimi    a-z
1419*22dc650dSSadaf Ebrahimi\= Expect no match
1420*22dc650dSSadaf Ebrahimi    b
1421*22dc650dSSadaf Ebrahimi
1422*22dc650dSSadaf Ebrahimi/[a-z]+/
1423*22dc650dSSadaf Ebrahimi    abcdxyz
1424*22dc650dSSadaf Ebrahimi
1425*22dc650dSSadaf Ebrahimi/[\d-]+/
1426*22dc650dSSadaf Ebrahimi    12-34
1427*22dc650dSSadaf Ebrahimi\= Expect no match
1428*22dc650dSSadaf Ebrahimi    aaa
1429*22dc650dSSadaf Ebrahimi
1430*22dc650dSSadaf Ebrahimi/\x5c/
1431*22dc650dSSadaf Ebrahimi    \\
1432*22dc650dSSadaf Ebrahimi
1433*22dc650dSSadaf Ebrahimi/\x20Z/
1434*22dc650dSSadaf Ebrahimi    the Zoo
1435*22dc650dSSadaf Ebrahimi\= Expect no match
1436*22dc650dSSadaf Ebrahimi    Zulu
1437*22dc650dSSadaf Ebrahimi
1438*22dc650dSSadaf Ebrahimi/(abc)\1/i
1439*22dc650dSSadaf Ebrahimi    abcabc
1440*22dc650dSSadaf Ebrahimi    ABCabc
1441*22dc650dSSadaf Ebrahimi    abcABC
1442*22dc650dSSadaf Ebrahimi
1443*22dc650dSSadaf Ebrahimi/abc$/
1444*22dc650dSSadaf Ebrahimi    abc
1445*22dc650dSSadaf Ebrahimi    abc\n
1446*22dc650dSSadaf Ebrahimi\= Expect no match
1447*22dc650dSSadaf Ebrahimi    abc\ndef
1448*22dc650dSSadaf Ebrahimi
1449*22dc650dSSadaf Ebrahimi/(abc)\123/
1450*22dc650dSSadaf Ebrahimi    abc\x53
1451*22dc650dSSadaf Ebrahimi
1452*22dc650dSSadaf Ebrahimi/(abc)\223/
1453*22dc650dSSadaf Ebrahimi    abc\x93
1454*22dc650dSSadaf Ebrahimi
1455*22dc650dSSadaf Ebrahimi/(abc)\323/
1456*22dc650dSSadaf Ebrahimi    abc\xd3
1457*22dc650dSSadaf Ebrahimi
1458*22dc650dSSadaf Ebrahimi/(abc)\100/
1459*22dc650dSSadaf Ebrahimi    abc\x40
1460*22dc650dSSadaf Ebrahimi    abc\100
1461*22dc650dSSadaf Ebrahimi
1462*22dc650dSSadaf Ebrahimi/(abc)\1000/
1463*22dc650dSSadaf Ebrahimi    abc\x400
1464*22dc650dSSadaf Ebrahimi    abc\x40\x30
1465*22dc650dSSadaf Ebrahimi    abc\1000
1466*22dc650dSSadaf Ebrahimi    abc\100\x30
1467*22dc650dSSadaf Ebrahimi    abc\100\060
1468*22dc650dSSadaf Ebrahimi    abc\100\60
1469*22dc650dSSadaf Ebrahimi
1470*22dc650dSSadaf Ebrahimi/^(A)(B)(C)(D)(E)(F)(G)(H)(I)\8\9$/
1471*22dc650dSSadaf Ebrahimi    ABCDEFGHIHI
1472*22dc650dSSadaf Ebrahimi
1473*22dc650dSSadaf Ebrahimi/^[A\8B\9C]+$/
1474*22dc650dSSadaf Ebrahimi    A8B9C
1475*22dc650dSSadaf Ebrahimi\= Expect no match
1476*22dc650dSSadaf Ebrahimi    A8B9C\x00
1477*22dc650dSSadaf Ebrahimi
1478*22dc650dSSadaf Ebrahimi/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\12\123/
1479*22dc650dSSadaf Ebrahimi    abcdefghijkllS
1480*22dc650dSSadaf Ebrahimi
1481*22dc650dSSadaf Ebrahimi/(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\12\123/
1482*22dc650dSSadaf Ebrahimi    abcdefghijk\12S
1483*22dc650dSSadaf Ebrahimi
1484*22dc650dSSadaf Ebrahimi/a{0}bc/
1485*22dc650dSSadaf Ebrahimi    bc
1486*22dc650dSSadaf Ebrahimi
1487*22dc650dSSadaf Ebrahimi/(a|(bc)){0,0}?xyz/
1488*22dc650dSSadaf Ebrahimi    xyz
1489*22dc650dSSadaf Ebrahimi
1490*22dc650dSSadaf Ebrahimi/abc[\10]de/
1491*22dc650dSSadaf Ebrahimi    abc\010de
1492*22dc650dSSadaf Ebrahimi
1493*22dc650dSSadaf Ebrahimi/abc[\1]de/
1494*22dc650dSSadaf Ebrahimi    abc\1de
1495*22dc650dSSadaf Ebrahimi
1496*22dc650dSSadaf Ebrahimi/(abc)[\1]de/
1497*22dc650dSSadaf Ebrahimi    abc\1de
1498*22dc650dSSadaf Ebrahimi
1499*22dc650dSSadaf Ebrahimi/(?s)a.b/
1500*22dc650dSSadaf Ebrahimi    a\nb
1501*22dc650dSSadaf Ebrahimi
1502*22dc650dSSadaf Ebrahimi/^([^a])([^\b])([^c]*)([^d]{3,4})/
1503*22dc650dSSadaf Ebrahimi    baNOTccccd
1504*22dc650dSSadaf Ebrahimi    baNOTcccd
1505*22dc650dSSadaf Ebrahimi    baNOTccd
1506*22dc650dSSadaf Ebrahimi    bacccd
1507*22dc650dSSadaf Ebrahimi\= Expect no match
1508*22dc650dSSadaf Ebrahimi    anything
1509*22dc650dSSadaf Ebrahimi    b\bc
1510*22dc650dSSadaf Ebrahimi    baccd
1511*22dc650dSSadaf Ebrahimi
1512*22dc650dSSadaf Ebrahimi/[^a]/
1513*22dc650dSSadaf Ebrahimi    Abc
1514*22dc650dSSadaf Ebrahimi
1515*22dc650dSSadaf Ebrahimi/[^a]/i
1516*22dc650dSSadaf Ebrahimi    Abc
1517*22dc650dSSadaf Ebrahimi
1518*22dc650dSSadaf Ebrahimi/[^a]+/
1519*22dc650dSSadaf Ebrahimi    AAAaAbc
1520*22dc650dSSadaf Ebrahimi
1521*22dc650dSSadaf Ebrahimi/[^a]+/i
1522*22dc650dSSadaf Ebrahimi    AAAaAbc
1523*22dc650dSSadaf Ebrahimi
1524*22dc650dSSadaf Ebrahimi/[^a]+/
1525*22dc650dSSadaf Ebrahimi    bbb\nccc
1526*22dc650dSSadaf Ebrahimi
1527*22dc650dSSadaf Ebrahimi/[^k]$/
1528*22dc650dSSadaf Ebrahimi    abc
1529*22dc650dSSadaf Ebrahimi\= Expect no match
1530*22dc650dSSadaf Ebrahimi    abk
1531*22dc650dSSadaf Ebrahimi
1532*22dc650dSSadaf Ebrahimi/[^k]{2,3}$/
1533*22dc650dSSadaf Ebrahimi    abc
1534*22dc650dSSadaf Ebrahimi    kbc
1535*22dc650dSSadaf Ebrahimi    kabc
1536*22dc650dSSadaf Ebrahimi\= Expect no match
1537*22dc650dSSadaf Ebrahimi    abk
1538*22dc650dSSadaf Ebrahimi    akb
1539*22dc650dSSadaf Ebrahimi    akk
1540*22dc650dSSadaf Ebrahimi
1541*22dc650dSSadaf Ebrahimi/^\d{8,}\@.+[^k]$/
1542*22dc650dSSadaf Ebrahimi    12345678\@a.b.c.d
1543*22dc650dSSadaf Ebrahimi    123456789\@x.y.z
1544*22dc650dSSadaf Ebrahimi\= Expect no match
1545*22dc650dSSadaf Ebrahimi    12345678\@x.y.uk
1546*22dc650dSSadaf Ebrahimi    1234567\@a.b.c.d
1547*22dc650dSSadaf Ebrahimi
1548*22dc650dSSadaf Ebrahimi/(a)\1{8,}/
1549*22dc650dSSadaf Ebrahimi    aaaaaaaaa
1550*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
1551*22dc650dSSadaf Ebrahimi\= Expect no match
1552*22dc650dSSadaf Ebrahimi    aaaaaaa
1553*22dc650dSSadaf Ebrahimi
1554*22dc650dSSadaf Ebrahimi/[^a]/
1555*22dc650dSSadaf Ebrahimi    aaaabcd
1556*22dc650dSSadaf Ebrahimi    aaAabcd
1557*22dc650dSSadaf Ebrahimi
1558*22dc650dSSadaf Ebrahimi/[^a]/i
1559*22dc650dSSadaf Ebrahimi    aaaabcd
1560*22dc650dSSadaf Ebrahimi    aaAabcd
1561*22dc650dSSadaf Ebrahimi
1562*22dc650dSSadaf Ebrahimi/[^az]/
1563*22dc650dSSadaf Ebrahimi    aaaabcd
1564*22dc650dSSadaf Ebrahimi    aaAabcd
1565*22dc650dSSadaf Ebrahimi
1566*22dc650dSSadaf Ebrahimi/[^az]/i
1567*22dc650dSSadaf Ebrahimi    aaaabcd
1568*22dc650dSSadaf Ebrahimi    aaAabcd
1569*22dc650dSSadaf Ebrahimi
1570*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/
1571*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
1572*22dc650dSSadaf Ebrahimi
1573*22dc650dSSadaf Ebrahimi/P[^*]TAIRE[^*]{1,6}?LL/
1574*22dc650dSSadaf Ebrahimi    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1575*22dc650dSSadaf Ebrahimi
1576*22dc650dSSadaf Ebrahimi/P[^*]TAIRE[^*]{1,}?LL/
1577*22dc650dSSadaf Ebrahimi    xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
1578*22dc650dSSadaf Ebrahimi
1579*22dc650dSSadaf Ebrahimi/(\.\d\d[1-9]?)\d+/
1580*22dc650dSSadaf Ebrahimi    1.230003938
1581*22dc650dSSadaf Ebrahimi    1.875000282
1582*22dc650dSSadaf Ebrahimi    1.235
1583*22dc650dSSadaf Ebrahimi
1584*22dc650dSSadaf Ebrahimi/(\.\d\d((?=0)|\d(?=\d)))/
1585*22dc650dSSadaf Ebrahimi    1.230003938
1586*22dc650dSSadaf Ebrahimi    1.875000282
1587*22dc650dSSadaf Ebrahimi\= Expect no match
1588*22dc650dSSadaf Ebrahimi    1.235
1589*22dc650dSSadaf Ebrahimi
1590*22dc650dSSadaf Ebrahimi/a(?)b/
1591*22dc650dSSadaf Ebrahimi    ab
1592*22dc650dSSadaf Ebrahimi
1593*22dc650dSSadaf Ebrahimi/\b(foo)\s+(\w+)/i
1594*22dc650dSSadaf Ebrahimi    Food is on the foo table
1595*22dc650dSSadaf Ebrahimi
1596*22dc650dSSadaf Ebrahimi/foo(.*)bar/
1597*22dc650dSSadaf Ebrahimi    The food is under the bar in the barn.
1598*22dc650dSSadaf Ebrahimi
1599*22dc650dSSadaf Ebrahimi/foo(.*?)bar/
1600*22dc650dSSadaf Ebrahimi    The food is under the bar in the barn.
1601*22dc650dSSadaf Ebrahimi
1602*22dc650dSSadaf Ebrahimi/(.*)(\d*)/
1603*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1604*22dc650dSSadaf Ebrahimi
1605*22dc650dSSadaf Ebrahimi/(.*)(\d+)/
1606*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1607*22dc650dSSadaf Ebrahimi
1608*22dc650dSSadaf Ebrahimi/(.*?)(\d*)/
1609*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1610*22dc650dSSadaf Ebrahimi
1611*22dc650dSSadaf Ebrahimi/(.*?)(\d+)/
1612*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1613*22dc650dSSadaf Ebrahimi
1614*22dc650dSSadaf Ebrahimi/(.*)(\d+)$/
1615*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1616*22dc650dSSadaf Ebrahimi
1617*22dc650dSSadaf Ebrahimi/(.*?)(\d+)$/
1618*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1619*22dc650dSSadaf Ebrahimi
1620*22dc650dSSadaf Ebrahimi/(.*)\b(\d+)$/
1621*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1622*22dc650dSSadaf Ebrahimi
1623*22dc650dSSadaf Ebrahimi/(.*\D)(\d+)$/
1624*22dc650dSSadaf Ebrahimi    I have 2 numbers: 53147
1625*22dc650dSSadaf Ebrahimi
1626*22dc650dSSadaf Ebrahimi/^\D*(?!123)/
1627*22dc650dSSadaf Ebrahimi    ABC123
1628*22dc650dSSadaf Ebrahimi
1629*22dc650dSSadaf Ebrahimi/^(\D*)(?=\d)(?!123)/
1630*22dc650dSSadaf Ebrahimi    ABC445
1631*22dc650dSSadaf Ebrahimi\= Expect no match
1632*22dc650dSSadaf Ebrahimi    ABC123
1633*22dc650dSSadaf Ebrahimi
1634*22dc650dSSadaf Ebrahimi/^[W-]46]/
1635*22dc650dSSadaf Ebrahimi    W46]789
1636*22dc650dSSadaf Ebrahimi    -46]789
1637*22dc650dSSadaf Ebrahimi\= Expect no match
1638*22dc650dSSadaf Ebrahimi    Wall
1639*22dc650dSSadaf Ebrahimi    Zebra
1640*22dc650dSSadaf Ebrahimi    42
1641*22dc650dSSadaf Ebrahimi    [abcd]
1642*22dc650dSSadaf Ebrahimi    ]abcd[
1643*22dc650dSSadaf Ebrahimi
1644*22dc650dSSadaf Ebrahimi/^[W-\]46]/
1645*22dc650dSSadaf Ebrahimi    W46]789
1646*22dc650dSSadaf Ebrahimi    Wall
1647*22dc650dSSadaf Ebrahimi    Zebra
1648*22dc650dSSadaf Ebrahimi    Xylophone
1649*22dc650dSSadaf Ebrahimi    42
1650*22dc650dSSadaf Ebrahimi    [abcd]
1651*22dc650dSSadaf Ebrahimi    ]abcd[
1652*22dc650dSSadaf Ebrahimi    \\backslash
1653*22dc650dSSadaf Ebrahimi\= Expect no match
1654*22dc650dSSadaf Ebrahimi    -46]789
1655*22dc650dSSadaf Ebrahimi    well
1656*22dc650dSSadaf Ebrahimi
1657*22dc650dSSadaf Ebrahimi/\d\d\/\d\d\/\d\d\d\d/
1658*22dc650dSSadaf Ebrahimi    01/01/2000
1659*22dc650dSSadaf Ebrahimi
1660*22dc650dSSadaf Ebrahimi/word (?:[a-zA-Z0-9]+ ){0,10}otherword/
1661*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark otherword
1662*22dc650dSSadaf Ebrahimi\= Expect no match
1663*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark
1664*22dc650dSSadaf Ebrahimi
1665*22dc650dSSadaf Ebrahimi/word (?:[a-zA-Z0-9]+ ){0,300}otherword/
1666*22dc650dSSadaf Ebrahimi\= Expect no match
1667*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
1668*22dc650dSSadaf Ebrahimi
1669*22dc650dSSadaf Ebrahimi/^(a){0,0}/
1670*22dc650dSSadaf Ebrahimi    bcd
1671*22dc650dSSadaf Ebrahimi    abc
1672*22dc650dSSadaf Ebrahimi    aab
1673*22dc650dSSadaf Ebrahimi
1674*22dc650dSSadaf Ebrahimi/^(a){0,1}/
1675*22dc650dSSadaf Ebrahimi    bcd
1676*22dc650dSSadaf Ebrahimi    abc
1677*22dc650dSSadaf Ebrahimi    aab
1678*22dc650dSSadaf Ebrahimi
1679*22dc650dSSadaf Ebrahimi/^(a){0,2}/
1680*22dc650dSSadaf Ebrahimi    bcd
1681*22dc650dSSadaf Ebrahimi    abc
1682*22dc650dSSadaf Ebrahimi    aab
1683*22dc650dSSadaf Ebrahimi
1684*22dc650dSSadaf Ebrahimi/^(a){0,3}/
1685*22dc650dSSadaf Ebrahimi    bcd
1686*22dc650dSSadaf Ebrahimi    abc
1687*22dc650dSSadaf Ebrahimi    aab
1688*22dc650dSSadaf Ebrahimi    aaa
1689*22dc650dSSadaf Ebrahimi
1690*22dc650dSSadaf Ebrahimi/^(a){0,}/
1691*22dc650dSSadaf Ebrahimi    bcd
1692*22dc650dSSadaf Ebrahimi    abc
1693*22dc650dSSadaf Ebrahimi    aab
1694*22dc650dSSadaf Ebrahimi    aaa
1695*22dc650dSSadaf Ebrahimi    aaaaaaaa
1696*22dc650dSSadaf Ebrahimi
1697*22dc650dSSadaf Ebrahimi/^(a){1,1}/
1698*22dc650dSSadaf Ebrahimi    abc
1699*22dc650dSSadaf Ebrahimi    aab
1700*22dc650dSSadaf Ebrahimi\= Expect no match
1701*22dc650dSSadaf Ebrahimi    bcd
1702*22dc650dSSadaf Ebrahimi
1703*22dc650dSSadaf Ebrahimi/^(a){1,2}/
1704*22dc650dSSadaf Ebrahimi    abc
1705*22dc650dSSadaf Ebrahimi    aab
1706*22dc650dSSadaf Ebrahimi\= Expect no match
1707*22dc650dSSadaf Ebrahimi    bcd
1708*22dc650dSSadaf Ebrahimi
1709*22dc650dSSadaf Ebrahimi/^(a){1,3}/
1710*22dc650dSSadaf Ebrahimi    abc
1711*22dc650dSSadaf Ebrahimi    aab
1712*22dc650dSSadaf Ebrahimi    aaa
1713*22dc650dSSadaf Ebrahimi\= Expect no match
1714*22dc650dSSadaf Ebrahimi    bcd
1715*22dc650dSSadaf Ebrahimi
1716*22dc650dSSadaf Ebrahimi/^(a){1,}/
1717*22dc650dSSadaf Ebrahimi    abc
1718*22dc650dSSadaf Ebrahimi    aab
1719*22dc650dSSadaf Ebrahimi    aaa
1720*22dc650dSSadaf Ebrahimi    aaaaaaaa
1721*22dc650dSSadaf Ebrahimi\= Expect no match
1722*22dc650dSSadaf Ebrahimi    bcd
1723*22dc650dSSadaf Ebrahimi
1724*22dc650dSSadaf Ebrahimi/.*\.gif/
1725*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1726*22dc650dSSadaf Ebrahimi
1727*22dc650dSSadaf Ebrahimi/.{0,}\.gif/
1728*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1729*22dc650dSSadaf Ebrahimi
1730*22dc650dSSadaf Ebrahimi/.*\.gif/m
1731*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1732*22dc650dSSadaf Ebrahimi
1733*22dc650dSSadaf Ebrahimi/.*\.gif/s
1734*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1735*22dc650dSSadaf Ebrahimi
1736*22dc650dSSadaf Ebrahimi/.*\.gif/ms
1737*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1738*22dc650dSSadaf Ebrahimi
1739*22dc650dSSadaf Ebrahimi/.*$/
1740*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1741*22dc650dSSadaf Ebrahimi
1742*22dc650dSSadaf Ebrahimi/.*$/m
1743*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1744*22dc650dSSadaf Ebrahimi
1745*22dc650dSSadaf Ebrahimi/.*$/s
1746*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1747*22dc650dSSadaf Ebrahimi
1748*22dc650dSSadaf Ebrahimi/.*$/ms
1749*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno
1750*22dc650dSSadaf Ebrahimi
1751*22dc650dSSadaf Ebrahimi/.*$/
1752*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
1753*22dc650dSSadaf Ebrahimi
1754*22dc650dSSadaf Ebrahimi/.*$/m
1755*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
1756*22dc650dSSadaf Ebrahimi
1757*22dc650dSSadaf Ebrahimi/.*$/s
1758*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
1759*22dc650dSSadaf Ebrahimi
1760*22dc650dSSadaf Ebrahimi/.*$/ms
1761*22dc650dSSadaf Ebrahimi    borfle\nbib.gif\nno\n
1762*22dc650dSSadaf Ebrahimi
1763*22dc650dSSadaf Ebrahimi/(.*X|^B)/
1764*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
1765*22dc650dSSadaf Ebrahimi    BarFoo
1766*22dc650dSSadaf Ebrahimi\= Expect no match
1767*22dc650dSSadaf Ebrahimi    abcde\nBar
1768*22dc650dSSadaf Ebrahimi
1769*22dc650dSSadaf Ebrahimi/(.*X|^B)/m
1770*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
1771*22dc650dSSadaf Ebrahimi    BarFoo
1772*22dc650dSSadaf Ebrahimi    abcde\nBar
1773*22dc650dSSadaf Ebrahimi
1774*22dc650dSSadaf Ebrahimi/(.*X|^B)/s
1775*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
1776*22dc650dSSadaf Ebrahimi    BarFoo
1777*22dc650dSSadaf Ebrahimi\= Expect no match
1778*22dc650dSSadaf Ebrahimi    abcde\nBar
1779*22dc650dSSadaf Ebrahimi
1780*22dc650dSSadaf Ebrahimi/(.*X|^B)/ms
1781*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
1782*22dc650dSSadaf Ebrahimi    BarFoo
1783*22dc650dSSadaf Ebrahimi    abcde\nBar
1784*22dc650dSSadaf Ebrahimi
1785*22dc650dSSadaf Ebrahimi/(?s)(.*X|^B)/
1786*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
1787*22dc650dSSadaf Ebrahimi    BarFoo
1788*22dc650dSSadaf Ebrahimi\= Expect no match
1789*22dc650dSSadaf Ebrahimi    abcde\nBar
1790*22dc650dSSadaf Ebrahimi
1791*22dc650dSSadaf Ebrahimi/(?s:.*X|^B)/
1792*22dc650dSSadaf Ebrahimi    abcde\n1234Xyz
1793*22dc650dSSadaf Ebrahimi    BarFoo
1794*22dc650dSSadaf Ebrahimi\= Expect no match
1795*22dc650dSSadaf Ebrahimi    abcde\nBar
1796*22dc650dSSadaf Ebrahimi
1797*22dc650dSSadaf Ebrahimi/^.*B/
1798*22dc650dSSadaf Ebrahimi\= Expect no match
1799*22dc650dSSadaf Ebrahimi    abc\nB
1800*22dc650dSSadaf Ebrahimi
1801*22dc650dSSadaf Ebrahimi/(?s)^.*B/
1802*22dc650dSSadaf Ebrahimi    abc\nB
1803*22dc650dSSadaf Ebrahimi
1804*22dc650dSSadaf Ebrahimi/(?m)^.*B/
1805*22dc650dSSadaf Ebrahimi    abc\nB
1806*22dc650dSSadaf Ebrahimi
1807*22dc650dSSadaf Ebrahimi/(?ms)^.*B/
1808*22dc650dSSadaf Ebrahimi    abc\nB
1809*22dc650dSSadaf Ebrahimi
1810*22dc650dSSadaf Ebrahimi/(?ms)^B/
1811*22dc650dSSadaf Ebrahimi    abc\nB
1812*22dc650dSSadaf Ebrahimi
1813*22dc650dSSadaf Ebrahimi/(?s)B$/
1814*22dc650dSSadaf Ebrahimi    B\n
1815*22dc650dSSadaf Ebrahimi
1816*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]/
1817*22dc650dSSadaf Ebrahimi    123456654321
1818*22dc650dSSadaf Ebrahimi
1819*22dc650dSSadaf Ebrahimi/^\d\d\d\d\d\d\d\d\d\d\d\d/
1820*22dc650dSSadaf Ebrahimi    123456654321
1821*22dc650dSSadaf Ebrahimi
1822*22dc650dSSadaf Ebrahimi/^[\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d][\d]/
1823*22dc650dSSadaf Ebrahimi    123456654321
1824*22dc650dSSadaf Ebrahimi
1825*22dc650dSSadaf Ebrahimi/^[abc]{12}/
1826*22dc650dSSadaf Ebrahimi    abcabcabcabc
1827*22dc650dSSadaf Ebrahimi
1828*22dc650dSSadaf Ebrahimi/^[a-c]{12}/
1829*22dc650dSSadaf Ebrahimi    abcabcabcabc
1830*22dc650dSSadaf Ebrahimi
1831*22dc650dSSadaf Ebrahimi/^(a|b|c){12}/
1832*22dc650dSSadaf Ebrahimi    abcabcabcabc
1833*22dc650dSSadaf Ebrahimi
1834*22dc650dSSadaf Ebrahimi/^[abcdefghijklmnopqrstuvwxy0123456789]/
1835*22dc650dSSadaf Ebrahimi    n
1836*22dc650dSSadaf Ebrahimi\= Expect no match
1837*22dc650dSSadaf Ebrahimi    z
1838*22dc650dSSadaf Ebrahimi
1839*22dc650dSSadaf Ebrahimi/abcde{0,0}/
1840*22dc650dSSadaf Ebrahimi    abcd
1841*22dc650dSSadaf Ebrahimi\= Expect no match
1842*22dc650dSSadaf Ebrahimi    abce
1843*22dc650dSSadaf Ebrahimi
1844*22dc650dSSadaf Ebrahimi/ab[cd]{0,0}e/
1845*22dc650dSSadaf Ebrahimi    abe
1846*22dc650dSSadaf Ebrahimi\= Expect no match
1847*22dc650dSSadaf Ebrahimi    abcde
1848*22dc650dSSadaf Ebrahimi
1849*22dc650dSSadaf Ebrahimi/ab(c){0,0}d/
1850*22dc650dSSadaf Ebrahimi    abd
1851*22dc650dSSadaf Ebrahimi\= Expect no match
1852*22dc650dSSadaf Ebrahimi    abcd
1853*22dc650dSSadaf Ebrahimi
1854*22dc650dSSadaf Ebrahimi/a(b*)/
1855*22dc650dSSadaf Ebrahimi    a
1856*22dc650dSSadaf Ebrahimi    ab
1857*22dc650dSSadaf Ebrahimi    abbbb
1858*22dc650dSSadaf Ebrahimi\= Expect no match
1859*22dc650dSSadaf Ebrahimi    bbbbb
1860*22dc650dSSadaf Ebrahimi
1861*22dc650dSSadaf Ebrahimi/ab\d{0}e/
1862*22dc650dSSadaf Ebrahimi    abe
1863*22dc650dSSadaf Ebrahimi\= Expect no match
1864*22dc650dSSadaf Ebrahimi    ab1e
1865*22dc650dSSadaf Ebrahimi
1866*22dc650dSSadaf Ebrahimi/"([^\\"]+|\\.)*"/
1867*22dc650dSSadaf Ebrahimi    the \"quick\" brown fox
1868*22dc650dSSadaf Ebrahimi    \"the \\\"quick\\\" brown fox\"
1869*22dc650dSSadaf Ebrahimi
1870*22dc650dSSadaf Ebrahimi/.*?/g,aftertext
1871*22dc650dSSadaf Ebrahimi    abc
1872*22dc650dSSadaf Ebrahimi
1873*22dc650dSSadaf Ebrahimi/\b/g,aftertext
1874*22dc650dSSadaf Ebrahimi    abc
1875*22dc650dSSadaf Ebrahimi
1876*22dc650dSSadaf Ebrahimi/\b/g,aftertext
1877*22dc650dSSadaf Ebrahimi    abc
1878*22dc650dSSadaf Ebrahimi
1879*22dc650dSSadaf Ebrahimi//g
1880*22dc650dSSadaf Ebrahimi    abc
1881*22dc650dSSadaf Ebrahimi
1882*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
1883*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>
1884*22dc650dSSadaf Ebrahimi
1885*22dc650dSSadaf Ebrahimi/a[^a]b/
1886*22dc650dSSadaf Ebrahimi    acb
1887*22dc650dSSadaf Ebrahimi    a\nb
1888*22dc650dSSadaf Ebrahimi
1889*22dc650dSSadaf Ebrahimi/a.b/
1890*22dc650dSSadaf Ebrahimi    acb
1891*22dc650dSSadaf Ebrahimi\= Expect no match
1892*22dc650dSSadaf Ebrahimi    a\nb
1893*22dc650dSSadaf Ebrahimi
1894*22dc650dSSadaf Ebrahimi/a[^a]b/s
1895*22dc650dSSadaf Ebrahimi    acb
1896*22dc650dSSadaf Ebrahimi    a\nb
1897*22dc650dSSadaf Ebrahimi
1898*22dc650dSSadaf Ebrahimi/a.b/s
1899*22dc650dSSadaf Ebrahimi    acb
1900*22dc650dSSadaf Ebrahimi    a\nb
1901*22dc650dSSadaf Ebrahimi
1902*22dc650dSSadaf Ebrahimi/^(b+?|a){1,2}?c/
1903*22dc650dSSadaf Ebrahimi    bac
1904*22dc650dSSadaf Ebrahimi    bbac
1905*22dc650dSSadaf Ebrahimi    bbbac
1906*22dc650dSSadaf Ebrahimi    bbbbac
1907*22dc650dSSadaf Ebrahimi    bbbbbac
1908*22dc650dSSadaf Ebrahimi
1909*22dc650dSSadaf Ebrahimi/^(b+|a){1,2}?c/
1910*22dc650dSSadaf Ebrahimi    bac
1911*22dc650dSSadaf Ebrahimi    bbac
1912*22dc650dSSadaf Ebrahimi    bbbac
1913*22dc650dSSadaf Ebrahimi    bbbbac
1914*22dc650dSSadaf Ebrahimi    bbbbbac
1915*22dc650dSSadaf Ebrahimi
1916*22dc650dSSadaf Ebrahimi/(?!\A)x/m
1917*22dc650dSSadaf Ebrahimi    a\bx\n
1918*22dc650dSSadaf Ebrahimi    a\nx\n
1919*22dc650dSSadaf Ebrahimi\= Expect no match
1920*22dc650dSSadaf Ebrahimi    x\nb\n
1921*22dc650dSSadaf Ebrahimi
1922*22dc650dSSadaf Ebrahimi/(A|B)*?CD/
1923*22dc650dSSadaf Ebrahimi    CD
1924*22dc650dSSadaf Ebrahimi
1925*22dc650dSSadaf Ebrahimi/(A|B)*CD/
1926*22dc650dSSadaf Ebrahimi    CD
1927*22dc650dSSadaf Ebrahimi
1928*22dc650dSSadaf Ebrahimi/(AB)*?\1/
1929*22dc650dSSadaf Ebrahimi    ABABAB
1930*22dc650dSSadaf Ebrahimi
1931*22dc650dSSadaf Ebrahimi/(AB)*\1/
1932*22dc650dSSadaf Ebrahimi    ABABAB
1933*22dc650dSSadaf Ebrahimi
1934*22dc650dSSadaf Ebrahimi/(?<!bar)foo/
1935*22dc650dSSadaf Ebrahimi    foo
1936*22dc650dSSadaf Ebrahimi    catfood
1937*22dc650dSSadaf Ebrahimi    arfootle
1938*22dc650dSSadaf Ebrahimi    rfoosh
1939*22dc650dSSadaf Ebrahimi\= Expect no match
1940*22dc650dSSadaf Ebrahimi    barfoo
1941*22dc650dSSadaf Ebrahimi    towbarfoo
1942*22dc650dSSadaf Ebrahimi
1943*22dc650dSSadaf Ebrahimi/\w{3}(?<!bar)foo/
1944*22dc650dSSadaf Ebrahimi    catfood
1945*22dc650dSSadaf Ebrahimi\= Expect no match
1946*22dc650dSSadaf Ebrahimi    foo
1947*22dc650dSSadaf Ebrahimi    barfoo
1948*22dc650dSSadaf Ebrahimi    towbarfoo
1949*22dc650dSSadaf Ebrahimi
1950*22dc650dSSadaf Ebrahimi/(?<=(foo)a)bar/
1951*22dc650dSSadaf Ebrahimi    fooabar
1952*22dc650dSSadaf Ebrahimi\= Expect no match
1953*22dc650dSSadaf Ebrahimi    bar
1954*22dc650dSSadaf Ebrahimi    foobbar
1955*22dc650dSSadaf Ebrahimi
1956*22dc650dSSadaf Ebrahimi/\Aabc\z/m
1957*22dc650dSSadaf Ebrahimi    abc
1958*22dc650dSSadaf Ebrahimi\= Expect no match
1959*22dc650dSSadaf Ebrahimi    abc\n
1960*22dc650dSSadaf Ebrahimi    qqq\nabc
1961*22dc650dSSadaf Ebrahimi    abc\nzzz
1962*22dc650dSSadaf Ebrahimi    qqq\nabc\nzzz
1963*22dc650dSSadaf Ebrahimi
1964*22dc650dSSadaf Ebrahimi/(?>.*\/)foo/
1965*22dc650dSSadaf Ebrahimi    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/and/foo
1966*22dc650dSSadaf Ebrahimi\= Expect no match
1967*22dc650dSSadaf Ebrahimi    /this/is/a/very/long/line/in/deed/with/very/many/slashes/in/it/you/see/
1968*22dc650dSSadaf Ebrahimi
1969*22dc650dSSadaf Ebrahimi/(?>(\.\d\d[1-9]?))\d+/
1970*22dc650dSSadaf Ebrahimi    1.230003938
1971*22dc650dSSadaf Ebrahimi    1.875000282
1972*22dc650dSSadaf Ebrahimi\= Expect no match
1973*22dc650dSSadaf Ebrahimi    1.235
1974*22dc650dSSadaf Ebrahimi
1975*22dc650dSSadaf Ebrahimi/^((?>\w+)|(?>\s+))*$/
1976*22dc650dSSadaf Ebrahimi    now is the time for all good men to come to the aid of the party
1977*22dc650dSSadaf Ebrahimi\= Expect no match
1978*22dc650dSSadaf Ebrahimi    this is not a line with only words and spaces!
1979*22dc650dSSadaf Ebrahimi
1980*22dc650dSSadaf Ebrahimi/(\d+)(\w)/
1981*22dc650dSSadaf Ebrahimi    12345a
1982*22dc650dSSadaf Ebrahimi    12345+
1983*22dc650dSSadaf Ebrahimi
1984*22dc650dSSadaf Ebrahimi/((?>\d+))(\w)/
1985*22dc650dSSadaf Ebrahimi    12345a
1986*22dc650dSSadaf Ebrahimi\= Expect no match
1987*22dc650dSSadaf Ebrahimi    12345+
1988*22dc650dSSadaf Ebrahimi
1989*22dc650dSSadaf Ebrahimi/(?>a+)b/
1990*22dc650dSSadaf Ebrahimi    aaab
1991*22dc650dSSadaf Ebrahimi
1992*22dc650dSSadaf Ebrahimi/((?>a+)b)/
1993*22dc650dSSadaf Ebrahimi    aaab
1994*22dc650dSSadaf Ebrahimi
1995*22dc650dSSadaf Ebrahimi/(?>(a+))b/
1996*22dc650dSSadaf Ebrahimi    aaab
1997*22dc650dSSadaf Ebrahimi
1998*22dc650dSSadaf Ebrahimi/(?>b)+/
1999*22dc650dSSadaf Ebrahimi    aaabbbccc
2000*22dc650dSSadaf Ebrahimi
2001*22dc650dSSadaf Ebrahimi/(?>a+|b+|c+)*c/
2002*22dc650dSSadaf Ebrahimi    aaabbbbccccd
2003*22dc650dSSadaf Ebrahimi
2004*22dc650dSSadaf Ebrahimi/((?>[^()]+)|\([^()]*\))+/
2005*22dc650dSSadaf Ebrahimi    ((abc(ade)ufh()()x
2006*22dc650dSSadaf Ebrahimi
2007*22dc650dSSadaf Ebrahimi/\(((?>[^()]+)|\([^()]+\))+\)/
2008*22dc650dSSadaf Ebrahimi    (abc)
2009*22dc650dSSadaf Ebrahimi    (abc(def)xyz)
2010*22dc650dSSadaf Ebrahimi\= Expect no match
2011*22dc650dSSadaf Ebrahimi    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2012*22dc650dSSadaf Ebrahimi
2013*22dc650dSSadaf Ebrahimi/a(?-i)b/i
2014*22dc650dSSadaf Ebrahimi    ab
2015*22dc650dSSadaf Ebrahimi    Ab
2016*22dc650dSSadaf Ebrahimi\= Expect no match
2017*22dc650dSSadaf Ebrahimi    aB
2018*22dc650dSSadaf Ebrahimi    AB
2019*22dc650dSSadaf Ebrahimi
2020*22dc650dSSadaf Ebrahimi/(a (?x)b c)d e/
2021*22dc650dSSadaf Ebrahimi    a bcd e
2022*22dc650dSSadaf Ebrahimi\= Expect no match
2023*22dc650dSSadaf Ebrahimi    a b cd e
2024*22dc650dSSadaf Ebrahimi    abcd e
2025*22dc650dSSadaf Ebrahimi    a bcde
2026*22dc650dSSadaf Ebrahimi
2027*22dc650dSSadaf Ebrahimi/(a b(?x)c d (?-x)e f)/
2028*22dc650dSSadaf Ebrahimi    a bcde f
2029*22dc650dSSadaf Ebrahimi\= Expect no match
2030*22dc650dSSadaf Ebrahimi    abcdef
2031*22dc650dSSadaf Ebrahimi
2032*22dc650dSSadaf Ebrahimi/(a(?i)b)c/
2033*22dc650dSSadaf Ebrahimi    abc
2034*22dc650dSSadaf Ebrahimi    aBc
2035*22dc650dSSadaf Ebrahimi\= Expect no match
2036*22dc650dSSadaf Ebrahimi    abC
2037*22dc650dSSadaf Ebrahimi    aBC
2038*22dc650dSSadaf Ebrahimi    Abc
2039*22dc650dSSadaf Ebrahimi    ABc
2040*22dc650dSSadaf Ebrahimi    ABC
2041*22dc650dSSadaf Ebrahimi    AbC
2042*22dc650dSSadaf Ebrahimi
2043*22dc650dSSadaf Ebrahimi/a(?i:b)c/
2044*22dc650dSSadaf Ebrahimi    abc
2045*22dc650dSSadaf Ebrahimi    aBc
2046*22dc650dSSadaf Ebrahimi\= Expect no match
2047*22dc650dSSadaf Ebrahimi    ABC
2048*22dc650dSSadaf Ebrahimi    abC
2049*22dc650dSSadaf Ebrahimi    aBC
2050*22dc650dSSadaf Ebrahimi
2051*22dc650dSSadaf Ebrahimi/a(?i:b)*c/
2052*22dc650dSSadaf Ebrahimi    aBc
2053*22dc650dSSadaf Ebrahimi    aBBc
2054*22dc650dSSadaf Ebrahimi\= Expect no match
2055*22dc650dSSadaf Ebrahimi    aBC
2056*22dc650dSSadaf Ebrahimi    aBBC
2057*22dc650dSSadaf Ebrahimi
2058*22dc650dSSadaf Ebrahimi/a(?=b(?i)c)\w\wd/
2059*22dc650dSSadaf Ebrahimi    abcd
2060*22dc650dSSadaf Ebrahimi    abCd
2061*22dc650dSSadaf Ebrahimi\= Expect no match
2062*22dc650dSSadaf Ebrahimi    aBCd
2063*22dc650dSSadaf Ebrahimi    abcD
2064*22dc650dSSadaf Ebrahimi
2065*22dc650dSSadaf Ebrahimi/(?s-i:more.*than).*million/i
2066*22dc650dSSadaf Ebrahimi    more than million
2067*22dc650dSSadaf Ebrahimi    more than MILLION
2068*22dc650dSSadaf Ebrahimi    more \n than Million
2069*22dc650dSSadaf Ebrahimi\= Expect no match
2070*22dc650dSSadaf Ebrahimi    MORE THAN MILLION
2071*22dc650dSSadaf Ebrahimi    more \n than \n million
2072*22dc650dSSadaf Ebrahimi
2073*22dc650dSSadaf Ebrahimi/(?:(?s-i)more.*than).*million/i
2074*22dc650dSSadaf Ebrahimi    more than million
2075*22dc650dSSadaf Ebrahimi    more than MILLION
2076*22dc650dSSadaf Ebrahimi    more \n than Million
2077*22dc650dSSadaf Ebrahimi\= Expect no match
2078*22dc650dSSadaf Ebrahimi    MORE THAN MILLION
2079*22dc650dSSadaf Ebrahimi    more \n than \n million
2080*22dc650dSSadaf Ebrahimi
2081*22dc650dSSadaf Ebrahimi/(?>a(?i)b+)+c/
2082*22dc650dSSadaf Ebrahimi    abc
2083*22dc650dSSadaf Ebrahimi    aBbc
2084*22dc650dSSadaf Ebrahimi    aBBc
2085*22dc650dSSadaf Ebrahimi\= Expect no match
2086*22dc650dSSadaf Ebrahimi    Abc
2087*22dc650dSSadaf Ebrahimi    abAb
2088*22dc650dSSadaf Ebrahimi    abbC
2089*22dc650dSSadaf Ebrahimi
2090*22dc650dSSadaf Ebrahimi/(?=a(?i)b)\w\wc/
2091*22dc650dSSadaf Ebrahimi    abc
2092*22dc650dSSadaf Ebrahimi    aBc
2093*22dc650dSSadaf Ebrahimi\= Expect no match
2094*22dc650dSSadaf Ebrahimi    Ab
2095*22dc650dSSadaf Ebrahimi    abC
2096*22dc650dSSadaf Ebrahimi    aBC
2097*22dc650dSSadaf Ebrahimi
2098*22dc650dSSadaf Ebrahimi/(?<=a(?i)b)(\w\w)c/
2099*22dc650dSSadaf Ebrahimi    abxxc
2100*22dc650dSSadaf Ebrahimi    aBxxc
2101*22dc650dSSadaf Ebrahimi\= Expect no match
2102*22dc650dSSadaf Ebrahimi    Abxxc
2103*22dc650dSSadaf Ebrahimi    ABxxc
2104*22dc650dSSadaf Ebrahimi    abxxC
2105*22dc650dSSadaf Ebrahimi
2106*22dc650dSSadaf Ebrahimi/(?:(a)|b)(?(1)A|B)/
2107*22dc650dSSadaf Ebrahimi    aA
2108*22dc650dSSadaf Ebrahimi    bB
2109*22dc650dSSadaf Ebrahimi\= Expect no match
2110*22dc650dSSadaf Ebrahimi    aB
2111*22dc650dSSadaf Ebrahimi    bA
2112*22dc650dSSadaf Ebrahimi
2113*22dc650dSSadaf Ebrahimi/^(a)?(?(1)a|b)+$/
2114*22dc650dSSadaf Ebrahimi    aa
2115*22dc650dSSadaf Ebrahimi    b
2116*22dc650dSSadaf Ebrahimi    bb
2117*22dc650dSSadaf Ebrahimi\= Expect no match
2118*22dc650dSSadaf Ebrahimi    ab
2119*22dc650dSSadaf Ebrahimi
2120*22dc650dSSadaf Ebrahimi# Perl gets this next one wrong if the pattern ends with $; in that case it
2121*22dc650dSSadaf Ebrahimi# fails to match "12".
2122*22dc650dSSadaf Ebrahimi
2123*22dc650dSSadaf Ebrahimi/^(?(?=abc)\w{3}:|\d\d)/
2124*22dc650dSSadaf Ebrahimi    abc:
2125*22dc650dSSadaf Ebrahimi    12
2126*22dc650dSSadaf Ebrahimi    123
2127*22dc650dSSadaf Ebrahimi\= Expect no match
2128*22dc650dSSadaf Ebrahimi    xyz
2129*22dc650dSSadaf Ebrahimi
2130*22dc650dSSadaf Ebrahimi/^(?(?!abc)\d\d|\w{3}:)$/
2131*22dc650dSSadaf Ebrahimi    abc:
2132*22dc650dSSadaf Ebrahimi    12
2133*22dc650dSSadaf Ebrahimi\= Expect no match
2134*22dc650dSSadaf Ebrahimi    123
2135*22dc650dSSadaf Ebrahimi    xyz
2136*22dc650dSSadaf Ebrahimi
2137*22dc650dSSadaf Ebrahimi/(?(?<=foo)bar|cat)/
2138*22dc650dSSadaf Ebrahimi    foobar
2139*22dc650dSSadaf Ebrahimi    cat
2140*22dc650dSSadaf Ebrahimi    fcat
2141*22dc650dSSadaf Ebrahimi    focat
2142*22dc650dSSadaf Ebrahimi\= Expect no match
2143*22dc650dSSadaf Ebrahimi    foocat
2144*22dc650dSSadaf Ebrahimi
2145*22dc650dSSadaf Ebrahimi/(?(?<!foo)cat|bar)/
2146*22dc650dSSadaf Ebrahimi    foobar
2147*22dc650dSSadaf Ebrahimi    cat
2148*22dc650dSSadaf Ebrahimi    fcat
2149*22dc650dSSadaf Ebrahimi    focat
2150*22dc650dSSadaf Ebrahimi\= Expect no match
2151*22dc650dSSadaf Ebrahimi    foocat
2152*22dc650dSSadaf Ebrahimi
2153*22dc650dSSadaf Ebrahimi/( \( )? [^()]+ (?(1) \) |) /x
2154*22dc650dSSadaf Ebrahimi    abcd
2155*22dc650dSSadaf Ebrahimi    (abcd)
2156*22dc650dSSadaf Ebrahimi    the quick (abcd) fox
2157*22dc650dSSadaf Ebrahimi    (abcd
2158*22dc650dSSadaf Ebrahimi
2159*22dc650dSSadaf Ebrahimi/( \( )? [^()]+ (?(1) \) ) /x
2160*22dc650dSSadaf Ebrahimi    abcd
2161*22dc650dSSadaf Ebrahimi    (abcd)
2162*22dc650dSSadaf Ebrahimi    the quick (abcd) fox
2163*22dc650dSSadaf Ebrahimi    (abcd
2164*22dc650dSSadaf Ebrahimi
2165*22dc650dSSadaf Ebrahimi/^(?(2)a|(1)(2))+$/
2166*22dc650dSSadaf Ebrahimi    12
2167*22dc650dSSadaf Ebrahimi    12a
2168*22dc650dSSadaf Ebrahimi    12aa
2169*22dc650dSSadaf Ebrahimi\= Expect no match
2170*22dc650dSSadaf Ebrahimi    1234
2171*22dc650dSSadaf Ebrahimi
2172*22dc650dSSadaf Ebrahimi/((?i)blah)\s+\1/
2173*22dc650dSSadaf Ebrahimi    blah blah
2174*22dc650dSSadaf Ebrahimi    BLAH BLAH
2175*22dc650dSSadaf Ebrahimi    Blah Blah
2176*22dc650dSSadaf Ebrahimi    blaH blaH
2177*22dc650dSSadaf Ebrahimi\= Expect no match
2178*22dc650dSSadaf Ebrahimi    blah BLAH
2179*22dc650dSSadaf Ebrahimi    Blah blah
2180*22dc650dSSadaf Ebrahimi    blaH blah
2181*22dc650dSSadaf Ebrahimi
2182*22dc650dSSadaf Ebrahimi/((?i)blah)\s+(?i:\1)/
2183*22dc650dSSadaf Ebrahimi    blah blah
2184*22dc650dSSadaf Ebrahimi    BLAH BLAH
2185*22dc650dSSadaf Ebrahimi    Blah Blah
2186*22dc650dSSadaf Ebrahimi    blaH blaH
2187*22dc650dSSadaf Ebrahimi    blah BLAH
2188*22dc650dSSadaf Ebrahimi    Blah blah
2189*22dc650dSSadaf Ebrahimi    blaH blah
2190*22dc650dSSadaf Ebrahimi
2191*22dc650dSSadaf Ebrahimi/((?i)blah)\s+(?m)A(?i:\1)/
2192*22dc650dSSadaf Ebrahimi    blah ABLAH
2193*22dc650dSSadaf Ebrahimi\= Expect no match
2194*22dc650dSSadaf Ebrahimi    blah aBLAH
2195*22dc650dSSadaf Ebrahimi
2196*22dc650dSSadaf Ebrahimi/(?>a*)*/
2197*22dc650dSSadaf Ebrahimi    a
2198*22dc650dSSadaf Ebrahimi    aa
2199*22dc650dSSadaf Ebrahimi    aaaa
2200*22dc650dSSadaf Ebrahimi
2201*22dc650dSSadaf Ebrahimi/(abc|)+/
2202*22dc650dSSadaf Ebrahimi    abc
2203*22dc650dSSadaf Ebrahimi    abcabc
2204*22dc650dSSadaf Ebrahimi    abcabcabc
2205*22dc650dSSadaf Ebrahimi    xyz
2206*22dc650dSSadaf Ebrahimi
2207*22dc650dSSadaf Ebrahimi/([a]*)*/
2208*22dc650dSSadaf Ebrahimi    a
2209*22dc650dSSadaf Ebrahimi    aaaaa
2210*22dc650dSSadaf Ebrahimi
2211*22dc650dSSadaf Ebrahimi/([ab]*)*/
2212*22dc650dSSadaf Ebrahimi    a
2213*22dc650dSSadaf Ebrahimi    b
2214*22dc650dSSadaf Ebrahimi    ababab
2215*22dc650dSSadaf Ebrahimi    aaaabcde
2216*22dc650dSSadaf Ebrahimi    bbbb
2217*22dc650dSSadaf Ebrahimi
2218*22dc650dSSadaf Ebrahimi/([^a]*)*/
2219*22dc650dSSadaf Ebrahimi    b
2220*22dc650dSSadaf Ebrahimi    bbbb
2221*22dc650dSSadaf Ebrahimi    aaa
2222*22dc650dSSadaf Ebrahimi
2223*22dc650dSSadaf Ebrahimi/([^ab]*)*/
2224*22dc650dSSadaf Ebrahimi    cccc
2225*22dc650dSSadaf Ebrahimi    abab
2226*22dc650dSSadaf Ebrahimi
2227*22dc650dSSadaf Ebrahimi/([a]*?)*/
2228*22dc650dSSadaf Ebrahimi    a
2229*22dc650dSSadaf Ebrahimi    aaaa
2230*22dc650dSSadaf Ebrahimi
2231*22dc650dSSadaf Ebrahimi/([ab]*?)*/
2232*22dc650dSSadaf Ebrahimi    a
2233*22dc650dSSadaf Ebrahimi    b
2234*22dc650dSSadaf Ebrahimi    abab
2235*22dc650dSSadaf Ebrahimi    baba
2236*22dc650dSSadaf Ebrahimi
2237*22dc650dSSadaf Ebrahimi/([^a]*?)*/
2238*22dc650dSSadaf Ebrahimi    b
2239*22dc650dSSadaf Ebrahimi    bbbb
2240*22dc650dSSadaf Ebrahimi    aaa
2241*22dc650dSSadaf Ebrahimi
2242*22dc650dSSadaf Ebrahimi/([^ab]*?)*/
2243*22dc650dSSadaf Ebrahimi    c
2244*22dc650dSSadaf Ebrahimi    cccc
2245*22dc650dSSadaf Ebrahimi    baba
2246*22dc650dSSadaf Ebrahimi
2247*22dc650dSSadaf Ebrahimi/(?>a*)*/
2248*22dc650dSSadaf Ebrahimi    a
2249*22dc650dSSadaf Ebrahimi    aaabcde
2250*22dc650dSSadaf Ebrahimi
2251*22dc650dSSadaf Ebrahimi/((?>a*))*/
2252*22dc650dSSadaf Ebrahimi    aaaaa
2253*22dc650dSSadaf Ebrahimi    aabbaa
2254*22dc650dSSadaf Ebrahimi
2255*22dc650dSSadaf Ebrahimi/((?>a*?))*/
2256*22dc650dSSadaf Ebrahimi    aaaaa
2257*22dc650dSSadaf Ebrahimi    aabbaa
2258*22dc650dSSadaf Ebrahimi
2259*22dc650dSSadaf Ebrahimi/(?(?=[^a-z]+[a-z])  \d{2}-[a-z]{3}-\d{2}  |  \d{2}-\d{2}-\d{2} ) /x
2260*22dc650dSSadaf Ebrahimi    12-sep-98
2261*22dc650dSSadaf Ebrahimi    12-09-98
2262*22dc650dSSadaf Ebrahimi\= Expect no match
2263*22dc650dSSadaf Ebrahimi    sep-12-98
2264*22dc650dSSadaf Ebrahimi
2265*22dc650dSSadaf Ebrahimi/(?<=(foo))bar\1/
2266*22dc650dSSadaf Ebrahimi    foobarfoo
2267*22dc650dSSadaf Ebrahimi    foobarfootling
2268*22dc650dSSadaf Ebrahimi\= Expect no match
2269*22dc650dSSadaf Ebrahimi    foobar
2270*22dc650dSSadaf Ebrahimi    barfoo
2271*22dc650dSSadaf Ebrahimi
2272*22dc650dSSadaf Ebrahimi/(?i:saturday|sunday)/
2273*22dc650dSSadaf Ebrahimi    saturday
2274*22dc650dSSadaf Ebrahimi    sunday
2275*22dc650dSSadaf Ebrahimi    Saturday
2276*22dc650dSSadaf Ebrahimi    Sunday
2277*22dc650dSSadaf Ebrahimi    SATURDAY
2278*22dc650dSSadaf Ebrahimi    SUNDAY
2279*22dc650dSSadaf Ebrahimi    SunDay
2280*22dc650dSSadaf Ebrahimi
2281*22dc650dSSadaf Ebrahimi/(a(?i)bc|BB)x/
2282*22dc650dSSadaf Ebrahimi    abcx
2283*22dc650dSSadaf Ebrahimi    aBCx
2284*22dc650dSSadaf Ebrahimi    bbx
2285*22dc650dSSadaf Ebrahimi    BBx
2286*22dc650dSSadaf Ebrahimi\= Expect no match
2287*22dc650dSSadaf Ebrahimi    abcX
2288*22dc650dSSadaf Ebrahimi    aBCX
2289*22dc650dSSadaf Ebrahimi    bbX
2290*22dc650dSSadaf Ebrahimi    BBX
2291*22dc650dSSadaf Ebrahimi
2292*22dc650dSSadaf Ebrahimi/^([ab](?i)[cd]|[ef])/
2293*22dc650dSSadaf Ebrahimi    ac
2294*22dc650dSSadaf Ebrahimi    aC
2295*22dc650dSSadaf Ebrahimi    bD
2296*22dc650dSSadaf Ebrahimi    elephant
2297*22dc650dSSadaf Ebrahimi    Europe
2298*22dc650dSSadaf Ebrahimi    frog
2299*22dc650dSSadaf Ebrahimi    France
2300*22dc650dSSadaf Ebrahimi\= Expect no match
2301*22dc650dSSadaf Ebrahimi    Africa
2302*22dc650dSSadaf Ebrahimi
2303*22dc650dSSadaf Ebrahimi/^(ab|a(?i)[b-c](?m-i)d|x(?i)y|z)/
2304*22dc650dSSadaf Ebrahimi    ab
2305*22dc650dSSadaf Ebrahimi    aBd
2306*22dc650dSSadaf Ebrahimi    xy
2307*22dc650dSSadaf Ebrahimi    xY
2308*22dc650dSSadaf Ebrahimi    zebra
2309*22dc650dSSadaf Ebrahimi    Zambesi
2310*22dc650dSSadaf Ebrahimi\= Expect no match
2311*22dc650dSSadaf Ebrahimi    aCD
2312*22dc650dSSadaf Ebrahimi    XY
2313*22dc650dSSadaf Ebrahimi
2314*22dc650dSSadaf Ebrahimi/(?<=foo\n)^bar/m
2315*22dc650dSSadaf Ebrahimi    foo\nbar
2316*22dc650dSSadaf Ebrahimi\= Expect no match
2317*22dc650dSSadaf Ebrahimi    bar
2318*22dc650dSSadaf Ebrahimi    baz\nbar
2319*22dc650dSSadaf Ebrahimi
2320*22dc650dSSadaf Ebrahimi/(?<=(?<!foo)bar)baz/
2321*22dc650dSSadaf Ebrahimi    barbaz
2322*22dc650dSSadaf Ebrahimi    barbarbaz
2323*22dc650dSSadaf Ebrahimi    koobarbaz
2324*22dc650dSSadaf Ebrahimi\= Expect no match
2325*22dc650dSSadaf Ebrahimi    baz
2326*22dc650dSSadaf Ebrahimi    foobarbaz
2327*22dc650dSSadaf Ebrahimi
2328*22dc650dSSadaf Ebrahimi# The cases of aaaa and aaaaaa are missed out below because Perl does things
2329*22dc650dSSadaf Ebrahimi# differently. We know that odd, and maybe incorrect, things happen with
2330*22dc650dSSadaf Ebrahimi# recursive references in Perl, as far as 5.11.3 - see some stuff in test #2.
2331*22dc650dSSadaf Ebrahimi
2332*22dc650dSSadaf Ebrahimi/^(a\1?){4}$/
2333*22dc650dSSadaf Ebrahimi    aaaaa
2334*22dc650dSSadaf Ebrahimi    aaaaaaa
2335*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
2336*22dc650dSSadaf Ebrahimi\= Expect no match
2337*22dc650dSSadaf Ebrahimi    a
2338*22dc650dSSadaf Ebrahimi    aa
2339*22dc650dSSadaf Ebrahimi    aaa
2340*22dc650dSSadaf Ebrahimi    aaaaaaaa
2341*22dc650dSSadaf Ebrahimi    aaaaaaaaa
2342*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
2343*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaa
2344*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaa
2345*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaa
2346*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaa
2347*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaaa
2348*22dc650dSSadaf Ebrahimi
2349*22dc650dSSadaf Ebrahimi/^(a\1?)(a\1?)(a\2?)(a\3?)$/
2350*22dc650dSSadaf Ebrahimi    aaaa
2351*22dc650dSSadaf Ebrahimi    aaaaa
2352*22dc650dSSadaf Ebrahimi    aaaaaa
2353*22dc650dSSadaf Ebrahimi    aaaaaaa
2354*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
2355*22dc650dSSadaf Ebrahimi\= Expect no match
2356*22dc650dSSadaf Ebrahimi    a
2357*22dc650dSSadaf Ebrahimi    aa
2358*22dc650dSSadaf Ebrahimi    aaa
2359*22dc650dSSadaf Ebrahimi    aaaaaaaa
2360*22dc650dSSadaf Ebrahimi    aaaaaaaaa
2361*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
2362*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaa
2363*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaa
2364*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaa
2365*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaa
2366*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaaa
2367*22dc650dSSadaf Ebrahimi
2368*22dc650dSSadaf Ebrahimi# The following tests are taken from the Perl 5.005 test suite; some of them
2369*22dc650dSSadaf Ebrahimi# are compatible with 5.004, but I'd rather not have to sort them out.
2370*22dc650dSSadaf Ebrahimi
2371*22dc650dSSadaf Ebrahimi/abc/
2372*22dc650dSSadaf Ebrahimi    abc
2373*22dc650dSSadaf Ebrahimi    xabcy
2374*22dc650dSSadaf Ebrahimi    ababc
2375*22dc650dSSadaf Ebrahimi\= Expect no match
2376*22dc650dSSadaf Ebrahimi    xbc
2377*22dc650dSSadaf Ebrahimi    axc
2378*22dc650dSSadaf Ebrahimi    abx
2379*22dc650dSSadaf Ebrahimi
2380*22dc650dSSadaf Ebrahimi/ab*c/
2381*22dc650dSSadaf Ebrahimi    abc
2382*22dc650dSSadaf Ebrahimi
2383*22dc650dSSadaf Ebrahimi/ab*bc/
2384*22dc650dSSadaf Ebrahimi    abc
2385*22dc650dSSadaf Ebrahimi    abbc
2386*22dc650dSSadaf Ebrahimi    abbbbc
2387*22dc650dSSadaf Ebrahimi
2388*22dc650dSSadaf Ebrahimi/.{1}/
2389*22dc650dSSadaf Ebrahimi    abbbbc
2390*22dc650dSSadaf Ebrahimi
2391*22dc650dSSadaf Ebrahimi/.{3,4}/
2392*22dc650dSSadaf Ebrahimi    abbbbc
2393*22dc650dSSadaf Ebrahimi
2394*22dc650dSSadaf Ebrahimi/ab{0,}bc/
2395*22dc650dSSadaf Ebrahimi    abbbbc
2396*22dc650dSSadaf Ebrahimi
2397*22dc650dSSadaf Ebrahimi/ab+bc/
2398*22dc650dSSadaf Ebrahimi    abbc
2399*22dc650dSSadaf Ebrahimi\= Expect no match
2400*22dc650dSSadaf Ebrahimi    abc
2401*22dc650dSSadaf Ebrahimi    abq
2402*22dc650dSSadaf Ebrahimi
2403*22dc650dSSadaf Ebrahimi/ab{1,}bc/
2404*22dc650dSSadaf Ebrahimi
2405*22dc650dSSadaf Ebrahimi/ab+bc/
2406*22dc650dSSadaf Ebrahimi    abbbbc
2407*22dc650dSSadaf Ebrahimi
2408*22dc650dSSadaf Ebrahimi/ab{1,}bc/
2409*22dc650dSSadaf Ebrahimi    abbbbc
2410*22dc650dSSadaf Ebrahimi
2411*22dc650dSSadaf Ebrahimi/ab{1,3}bc/
2412*22dc650dSSadaf Ebrahimi    abbbbc
2413*22dc650dSSadaf Ebrahimi
2414*22dc650dSSadaf Ebrahimi/ab{3,4}bc/
2415*22dc650dSSadaf Ebrahimi    abbbbc
2416*22dc650dSSadaf Ebrahimi
2417*22dc650dSSadaf Ebrahimi/ab{4,5}bc/
2418*22dc650dSSadaf Ebrahimi\= Expect no match
2419*22dc650dSSadaf Ebrahimi    abq
2420*22dc650dSSadaf Ebrahimi    abbbbc
2421*22dc650dSSadaf Ebrahimi
2422*22dc650dSSadaf Ebrahimi/ab?bc/
2423*22dc650dSSadaf Ebrahimi    abbc
2424*22dc650dSSadaf Ebrahimi    abc
2425*22dc650dSSadaf Ebrahimi
2426*22dc650dSSadaf Ebrahimi/ab{0,1}bc/
2427*22dc650dSSadaf Ebrahimi    abc
2428*22dc650dSSadaf Ebrahimi
2429*22dc650dSSadaf Ebrahimi/ab?bc/
2430*22dc650dSSadaf Ebrahimi
2431*22dc650dSSadaf Ebrahimi/ab?c/
2432*22dc650dSSadaf Ebrahimi    abc
2433*22dc650dSSadaf Ebrahimi
2434*22dc650dSSadaf Ebrahimi/ab{0,1}c/
2435*22dc650dSSadaf Ebrahimi    abc
2436*22dc650dSSadaf Ebrahimi
2437*22dc650dSSadaf Ebrahimi/^abc$/
2438*22dc650dSSadaf Ebrahimi    abc
2439*22dc650dSSadaf Ebrahimi\= Expect no match
2440*22dc650dSSadaf Ebrahimi    abbbbc
2441*22dc650dSSadaf Ebrahimi    abcc
2442*22dc650dSSadaf Ebrahimi
2443*22dc650dSSadaf Ebrahimi/^abc/
2444*22dc650dSSadaf Ebrahimi    abcc
2445*22dc650dSSadaf Ebrahimi
2446*22dc650dSSadaf Ebrahimi/^abc$/
2447*22dc650dSSadaf Ebrahimi
2448*22dc650dSSadaf Ebrahimi/abc$/
2449*22dc650dSSadaf Ebrahimi    aabc
2450*22dc650dSSadaf Ebrahimi\= Expect no match
2451*22dc650dSSadaf Ebrahimi    aabcd
2452*22dc650dSSadaf Ebrahimi
2453*22dc650dSSadaf Ebrahimi/^/
2454*22dc650dSSadaf Ebrahimi    abc
2455*22dc650dSSadaf Ebrahimi
2456*22dc650dSSadaf Ebrahimi/$/
2457*22dc650dSSadaf Ebrahimi    abc
2458*22dc650dSSadaf Ebrahimi
2459*22dc650dSSadaf Ebrahimi/a.c/
2460*22dc650dSSadaf Ebrahimi    abc
2461*22dc650dSSadaf Ebrahimi    axc
2462*22dc650dSSadaf Ebrahimi
2463*22dc650dSSadaf Ebrahimi/a.*c/
2464*22dc650dSSadaf Ebrahimi    axyzc
2465*22dc650dSSadaf Ebrahimi
2466*22dc650dSSadaf Ebrahimi/a[bc]d/
2467*22dc650dSSadaf Ebrahimi    abd
2468*22dc650dSSadaf Ebrahimi\= Expect no match
2469*22dc650dSSadaf Ebrahimi    axyzd
2470*22dc650dSSadaf Ebrahimi    abc
2471*22dc650dSSadaf Ebrahimi
2472*22dc650dSSadaf Ebrahimi/a[b-d]e/
2473*22dc650dSSadaf Ebrahimi    ace
2474*22dc650dSSadaf Ebrahimi
2475*22dc650dSSadaf Ebrahimi/a[b-d]/
2476*22dc650dSSadaf Ebrahimi    aac
2477*22dc650dSSadaf Ebrahimi
2478*22dc650dSSadaf Ebrahimi/a[-b]/
2479*22dc650dSSadaf Ebrahimi    a-
2480*22dc650dSSadaf Ebrahimi
2481*22dc650dSSadaf Ebrahimi/a[b-]/
2482*22dc650dSSadaf Ebrahimi    a-
2483*22dc650dSSadaf Ebrahimi
2484*22dc650dSSadaf Ebrahimi/a]/
2485*22dc650dSSadaf Ebrahimi    a]
2486*22dc650dSSadaf Ebrahimi
2487*22dc650dSSadaf Ebrahimi/a[]]b/
2488*22dc650dSSadaf Ebrahimi    a]b
2489*22dc650dSSadaf Ebrahimi
2490*22dc650dSSadaf Ebrahimi/a[^bc]d/
2491*22dc650dSSadaf Ebrahimi    aed
2492*22dc650dSSadaf Ebrahimi\= Expect no match
2493*22dc650dSSadaf Ebrahimi    abd
2494*22dc650dSSadaf Ebrahimi    abd
2495*22dc650dSSadaf Ebrahimi
2496*22dc650dSSadaf Ebrahimi/a[^-b]c/
2497*22dc650dSSadaf Ebrahimi    adc
2498*22dc650dSSadaf Ebrahimi
2499*22dc650dSSadaf Ebrahimi/a[^]b]c/
2500*22dc650dSSadaf Ebrahimi    adc
2501*22dc650dSSadaf Ebrahimi    a-c
2502*22dc650dSSadaf Ebrahimi\= Expect no match
2503*22dc650dSSadaf Ebrahimi    a]c
2504*22dc650dSSadaf Ebrahimi
2505*22dc650dSSadaf Ebrahimi/\ba\b/
2506*22dc650dSSadaf Ebrahimi    a-
2507*22dc650dSSadaf Ebrahimi    -a
2508*22dc650dSSadaf Ebrahimi    -a-
2509*22dc650dSSadaf Ebrahimi
2510*22dc650dSSadaf Ebrahimi/\by\b/
2511*22dc650dSSadaf Ebrahimi\= Expect no match
2512*22dc650dSSadaf Ebrahimi    xy
2513*22dc650dSSadaf Ebrahimi    yz
2514*22dc650dSSadaf Ebrahimi    xyz
2515*22dc650dSSadaf Ebrahimi
2516*22dc650dSSadaf Ebrahimi/\Ba\B/
2517*22dc650dSSadaf Ebrahimi\= Expect no match
2518*22dc650dSSadaf Ebrahimi    a-
2519*22dc650dSSadaf Ebrahimi    -a
2520*22dc650dSSadaf Ebrahimi    -a-
2521*22dc650dSSadaf Ebrahimi
2522*22dc650dSSadaf Ebrahimi/\By\b/
2523*22dc650dSSadaf Ebrahimi    xy
2524*22dc650dSSadaf Ebrahimi
2525*22dc650dSSadaf Ebrahimi/\by\B/
2526*22dc650dSSadaf Ebrahimi    yz
2527*22dc650dSSadaf Ebrahimi
2528*22dc650dSSadaf Ebrahimi/\By\B/
2529*22dc650dSSadaf Ebrahimi    xyz
2530*22dc650dSSadaf Ebrahimi
2531*22dc650dSSadaf Ebrahimi/\w/
2532*22dc650dSSadaf Ebrahimi    a
2533*22dc650dSSadaf Ebrahimi
2534*22dc650dSSadaf Ebrahimi/\W/
2535*22dc650dSSadaf Ebrahimi    -
2536*22dc650dSSadaf Ebrahimi\= Expect no match
2537*22dc650dSSadaf Ebrahimi    a
2538*22dc650dSSadaf Ebrahimi
2539*22dc650dSSadaf Ebrahimi/a\sb/
2540*22dc650dSSadaf Ebrahimi    a b
2541*22dc650dSSadaf Ebrahimi
2542*22dc650dSSadaf Ebrahimi/a\Sb/
2543*22dc650dSSadaf Ebrahimi    a-b
2544*22dc650dSSadaf Ebrahimi\= Expect no match
2545*22dc650dSSadaf Ebrahimi    a b
2546*22dc650dSSadaf Ebrahimi
2547*22dc650dSSadaf Ebrahimi/\d/
2548*22dc650dSSadaf Ebrahimi    1
2549*22dc650dSSadaf Ebrahimi
2550*22dc650dSSadaf Ebrahimi/\D/
2551*22dc650dSSadaf Ebrahimi    -
2552*22dc650dSSadaf Ebrahimi\= Expect no match
2553*22dc650dSSadaf Ebrahimi    1
2554*22dc650dSSadaf Ebrahimi
2555*22dc650dSSadaf Ebrahimi/[\w]/
2556*22dc650dSSadaf Ebrahimi    a
2557*22dc650dSSadaf Ebrahimi
2558*22dc650dSSadaf Ebrahimi/[\W]/
2559*22dc650dSSadaf Ebrahimi    -
2560*22dc650dSSadaf Ebrahimi\= Expect no match
2561*22dc650dSSadaf Ebrahimi    a
2562*22dc650dSSadaf Ebrahimi
2563*22dc650dSSadaf Ebrahimi/a[\s]b/
2564*22dc650dSSadaf Ebrahimi    a b
2565*22dc650dSSadaf Ebrahimi
2566*22dc650dSSadaf Ebrahimi/a[\S]b/
2567*22dc650dSSadaf Ebrahimi    a-b
2568*22dc650dSSadaf Ebrahimi\= Expect no match
2569*22dc650dSSadaf Ebrahimi    a b
2570*22dc650dSSadaf Ebrahimi
2571*22dc650dSSadaf Ebrahimi/[\d]/
2572*22dc650dSSadaf Ebrahimi    1
2573*22dc650dSSadaf Ebrahimi
2574*22dc650dSSadaf Ebrahimi/[\D]/
2575*22dc650dSSadaf Ebrahimi    -
2576*22dc650dSSadaf Ebrahimi\= Expect no match
2577*22dc650dSSadaf Ebrahimi    1
2578*22dc650dSSadaf Ebrahimi
2579*22dc650dSSadaf Ebrahimi/ab|cd/
2580*22dc650dSSadaf Ebrahimi    abc
2581*22dc650dSSadaf Ebrahimi    abcd
2582*22dc650dSSadaf Ebrahimi
2583*22dc650dSSadaf Ebrahimi/()ef/
2584*22dc650dSSadaf Ebrahimi    def
2585*22dc650dSSadaf Ebrahimi
2586*22dc650dSSadaf Ebrahimi/$b/
2587*22dc650dSSadaf Ebrahimi
2588*22dc650dSSadaf Ebrahimi/a\(b/
2589*22dc650dSSadaf Ebrahimi    a(b
2590*22dc650dSSadaf Ebrahimi
2591*22dc650dSSadaf Ebrahimi/a\(*b/
2592*22dc650dSSadaf Ebrahimi    ab
2593*22dc650dSSadaf Ebrahimi    a((b
2594*22dc650dSSadaf Ebrahimi
2595*22dc650dSSadaf Ebrahimi/a\\b/
2596*22dc650dSSadaf Ebrahimi    a\\b
2597*22dc650dSSadaf Ebrahimi
2598*22dc650dSSadaf Ebrahimi/((a))/
2599*22dc650dSSadaf Ebrahimi    abc
2600*22dc650dSSadaf Ebrahimi
2601*22dc650dSSadaf Ebrahimi/(a)b(c)/
2602*22dc650dSSadaf Ebrahimi    abc
2603*22dc650dSSadaf Ebrahimi
2604*22dc650dSSadaf Ebrahimi/a+b+c/
2605*22dc650dSSadaf Ebrahimi    aabbabc
2606*22dc650dSSadaf Ebrahimi
2607*22dc650dSSadaf Ebrahimi/a{1,}b{1,}c/
2608*22dc650dSSadaf Ebrahimi    aabbabc
2609*22dc650dSSadaf Ebrahimi
2610*22dc650dSSadaf Ebrahimi/a.+?c/
2611*22dc650dSSadaf Ebrahimi    abcabc
2612*22dc650dSSadaf Ebrahimi
2613*22dc650dSSadaf Ebrahimi/(a+|b)*/
2614*22dc650dSSadaf Ebrahimi    ab
2615*22dc650dSSadaf Ebrahimi
2616*22dc650dSSadaf Ebrahimi/(a+|b){0,}/
2617*22dc650dSSadaf Ebrahimi    ab
2618*22dc650dSSadaf Ebrahimi
2619*22dc650dSSadaf Ebrahimi/(a+|b)+/
2620*22dc650dSSadaf Ebrahimi    ab
2621*22dc650dSSadaf Ebrahimi
2622*22dc650dSSadaf Ebrahimi/(a+|b){1,}/
2623*22dc650dSSadaf Ebrahimi    ab
2624*22dc650dSSadaf Ebrahimi
2625*22dc650dSSadaf Ebrahimi/(a+|b)?/
2626*22dc650dSSadaf Ebrahimi    ab
2627*22dc650dSSadaf Ebrahimi
2628*22dc650dSSadaf Ebrahimi/(a+|b){0,1}/
2629*22dc650dSSadaf Ebrahimi    ab
2630*22dc650dSSadaf Ebrahimi
2631*22dc650dSSadaf Ebrahimi/[^ab]*/
2632*22dc650dSSadaf Ebrahimi    cde
2633*22dc650dSSadaf Ebrahimi
2634*22dc650dSSadaf Ebrahimi/abc/
2635*22dc650dSSadaf Ebrahimi\= Expect no match
2636*22dc650dSSadaf Ebrahimi    b
2637*22dc650dSSadaf Ebrahimi
2638*22dc650dSSadaf Ebrahimi/a*/
2639*22dc650dSSadaf Ebrahimi    \
2640*22dc650dSSadaf Ebrahimi
2641*22dc650dSSadaf Ebrahimi/([abc])*d/
2642*22dc650dSSadaf Ebrahimi    abbbcd
2643*22dc650dSSadaf Ebrahimi
2644*22dc650dSSadaf Ebrahimi/([abc])*bcd/
2645*22dc650dSSadaf Ebrahimi    abcd
2646*22dc650dSSadaf Ebrahimi
2647*22dc650dSSadaf Ebrahimi/a|b|c|d|e/
2648*22dc650dSSadaf Ebrahimi    e
2649*22dc650dSSadaf Ebrahimi
2650*22dc650dSSadaf Ebrahimi/(a|b|c|d|e)f/
2651*22dc650dSSadaf Ebrahimi    ef
2652*22dc650dSSadaf Ebrahimi
2653*22dc650dSSadaf Ebrahimi/abcd*efg/
2654*22dc650dSSadaf Ebrahimi    abcdefg
2655*22dc650dSSadaf Ebrahimi
2656*22dc650dSSadaf Ebrahimi/ab*/
2657*22dc650dSSadaf Ebrahimi    xabyabbbz
2658*22dc650dSSadaf Ebrahimi    xayabbbz
2659*22dc650dSSadaf Ebrahimi
2660*22dc650dSSadaf Ebrahimi/(ab|cd)e/
2661*22dc650dSSadaf Ebrahimi    abcde
2662*22dc650dSSadaf Ebrahimi
2663*22dc650dSSadaf Ebrahimi/[abhgefdc]ij/
2664*22dc650dSSadaf Ebrahimi    hij
2665*22dc650dSSadaf Ebrahimi
2666*22dc650dSSadaf Ebrahimi/^(ab|cd)e/
2667*22dc650dSSadaf Ebrahimi
2668*22dc650dSSadaf Ebrahimi/(abc|)ef/
2669*22dc650dSSadaf Ebrahimi    abcdef
2670*22dc650dSSadaf Ebrahimi
2671*22dc650dSSadaf Ebrahimi/(a|b)c*d/
2672*22dc650dSSadaf Ebrahimi    abcd
2673*22dc650dSSadaf Ebrahimi
2674*22dc650dSSadaf Ebrahimi/(ab|ab*)bc/
2675*22dc650dSSadaf Ebrahimi    abc
2676*22dc650dSSadaf Ebrahimi
2677*22dc650dSSadaf Ebrahimi/a([bc]*)c*/
2678*22dc650dSSadaf Ebrahimi    abc
2679*22dc650dSSadaf Ebrahimi
2680*22dc650dSSadaf Ebrahimi/a([bc]*)(c*d)/
2681*22dc650dSSadaf Ebrahimi    abcd
2682*22dc650dSSadaf Ebrahimi
2683*22dc650dSSadaf Ebrahimi/a([bc]+)(c*d)/
2684*22dc650dSSadaf Ebrahimi    abcd
2685*22dc650dSSadaf Ebrahimi
2686*22dc650dSSadaf Ebrahimi/a([bc]*)(c+d)/
2687*22dc650dSSadaf Ebrahimi    abcd
2688*22dc650dSSadaf Ebrahimi
2689*22dc650dSSadaf Ebrahimi/a[bcd]*dcdcde/
2690*22dc650dSSadaf Ebrahimi    adcdcde
2691*22dc650dSSadaf Ebrahimi
2692*22dc650dSSadaf Ebrahimi/a[bcd]+dcdcde/
2693*22dc650dSSadaf Ebrahimi\= Expect no match
2694*22dc650dSSadaf Ebrahimi    abcde
2695*22dc650dSSadaf Ebrahimi    adcdcde
2696*22dc650dSSadaf Ebrahimi
2697*22dc650dSSadaf Ebrahimi/(ab|a)b*c/
2698*22dc650dSSadaf Ebrahimi    abc
2699*22dc650dSSadaf Ebrahimi
2700*22dc650dSSadaf Ebrahimi/((a)(b)c)(d)/
2701*22dc650dSSadaf Ebrahimi    abcd
2702*22dc650dSSadaf Ebrahimi
2703*22dc650dSSadaf Ebrahimi/[a-zA-Z_][a-zA-Z0-9_]*/
2704*22dc650dSSadaf Ebrahimi    alpha
2705*22dc650dSSadaf Ebrahimi
2706*22dc650dSSadaf Ebrahimi/^a(bc+|b[eh])g|.h$/
2707*22dc650dSSadaf Ebrahimi    abh
2708*22dc650dSSadaf Ebrahimi
2709*22dc650dSSadaf Ebrahimi/(bc+d$|ef*g.|h?i(j|k))/
2710*22dc650dSSadaf Ebrahimi    effgz
2711*22dc650dSSadaf Ebrahimi    ij
2712*22dc650dSSadaf Ebrahimi    reffgz
2713*22dc650dSSadaf Ebrahimi\= Expect no match
2714*22dc650dSSadaf Ebrahimi    effg
2715*22dc650dSSadaf Ebrahimi    bcdd
2716*22dc650dSSadaf Ebrahimi
2717*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))/
2718*22dc650dSSadaf Ebrahimi    a
2719*22dc650dSSadaf Ebrahimi
2720*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))\10/
2721*22dc650dSSadaf Ebrahimi    aa
2722*22dc650dSSadaf Ebrahimi
2723*22dc650dSSadaf Ebrahimi/(((((((((a)))))))))/
2724*22dc650dSSadaf Ebrahimi    a
2725*22dc650dSSadaf Ebrahimi
2726*22dc650dSSadaf Ebrahimi/multiple words of text/
2727*22dc650dSSadaf Ebrahimi\= Expect no match
2728*22dc650dSSadaf Ebrahimi    aa
2729*22dc650dSSadaf Ebrahimi    uh-uh
2730*22dc650dSSadaf Ebrahimi
2731*22dc650dSSadaf Ebrahimi/multiple words/
2732*22dc650dSSadaf Ebrahimi    multiple words, yeah
2733*22dc650dSSadaf Ebrahimi
2734*22dc650dSSadaf Ebrahimi/(.*)c(.*)/
2735*22dc650dSSadaf Ebrahimi    abcde
2736*22dc650dSSadaf Ebrahimi
2737*22dc650dSSadaf Ebrahimi/\((.*), (.*)\)/
2738*22dc650dSSadaf Ebrahimi    (a, b)
2739*22dc650dSSadaf Ebrahimi
2740*22dc650dSSadaf Ebrahimi/[k]/
2741*22dc650dSSadaf Ebrahimi
2742*22dc650dSSadaf Ebrahimi/abcd/
2743*22dc650dSSadaf Ebrahimi    abcd
2744*22dc650dSSadaf Ebrahimi
2745*22dc650dSSadaf Ebrahimi/a(bc)d/
2746*22dc650dSSadaf Ebrahimi    abcd
2747*22dc650dSSadaf Ebrahimi
2748*22dc650dSSadaf Ebrahimi/a[-]?c/
2749*22dc650dSSadaf Ebrahimi    ac
2750*22dc650dSSadaf Ebrahimi
2751*22dc650dSSadaf Ebrahimi/(abc)\1/
2752*22dc650dSSadaf Ebrahimi    abcabc
2753*22dc650dSSadaf Ebrahimi
2754*22dc650dSSadaf Ebrahimi/([a-c]*)\1/
2755*22dc650dSSadaf Ebrahimi    abcabc
2756*22dc650dSSadaf Ebrahimi
2757*22dc650dSSadaf Ebrahimi/(a)|\1/
2758*22dc650dSSadaf Ebrahimi    a
2759*22dc650dSSadaf Ebrahimi    ab
2760*22dc650dSSadaf Ebrahimi\= Expect no match
2761*22dc650dSSadaf Ebrahimi    x
2762*22dc650dSSadaf Ebrahimi
2763*22dc650dSSadaf Ebrahimi/(([a-c])b*?\2)*/
2764*22dc650dSSadaf Ebrahimi    ababbbcbc
2765*22dc650dSSadaf Ebrahimi
2766*22dc650dSSadaf Ebrahimi/(([a-c])b*?\2){3}/
2767*22dc650dSSadaf Ebrahimi    ababbbcbc
2768*22dc650dSSadaf Ebrahimi
2769*22dc650dSSadaf Ebrahimi/((\3|b)\2(a)x)+/
2770*22dc650dSSadaf Ebrahimi    aaaxabaxbaaxbbax
2771*22dc650dSSadaf Ebrahimi
2772*22dc650dSSadaf Ebrahimi/((\3|b)\2(a)){2,}/
2773*22dc650dSSadaf Ebrahimi    bbaababbabaaaaabbaaaabba
2774*22dc650dSSadaf Ebrahimi
2775*22dc650dSSadaf Ebrahimi/abc/i
2776*22dc650dSSadaf Ebrahimi    ABC
2777*22dc650dSSadaf Ebrahimi    XABCY
2778*22dc650dSSadaf Ebrahimi    ABABC
2779*22dc650dSSadaf Ebrahimi\= Expect no match
2780*22dc650dSSadaf Ebrahimi    aaxabxbaxbbx
2781*22dc650dSSadaf Ebrahimi    XBC
2782*22dc650dSSadaf Ebrahimi    AXC
2783*22dc650dSSadaf Ebrahimi    ABX
2784*22dc650dSSadaf Ebrahimi
2785*22dc650dSSadaf Ebrahimi/ab*c/i
2786*22dc650dSSadaf Ebrahimi    ABC
2787*22dc650dSSadaf Ebrahimi
2788*22dc650dSSadaf Ebrahimi/ab*bc/i
2789*22dc650dSSadaf Ebrahimi    ABC
2790*22dc650dSSadaf Ebrahimi    ABBC
2791*22dc650dSSadaf Ebrahimi
2792*22dc650dSSadaf Ebrahimi/ab*?bc/i
2793*22dc650dSSadaf Ebrahimi    ABBBBC
2794*22dc650dSSadaf Ebrahimi
2795*22dc650dSSadaf Ebrahimi/ab{0,}?bc/i
2796*22dc650dSSadaf Ebrahimi    ABBBBC
2797*22dc650dSSadaf Ebrahimi
2798*22dc650dSSadaf Ebrahimi/ab+?bc/i
2799*22dc650dSSadaf Ebrahimi    ABBC
2800*22dc650dSSadaf Ebrahimi
2801*22dc650dSSadaf Ebrahimi/ab+bc/i
2802*22dc650dSSadaf Ebrahimi\= Expect no match
2803*22dc650dSSadaf Ebrahimi    ABC
2804*22dc650dSSadaf Ebrahimi    ABQ
2805*22dc650dSSadaf Ebrahimi
2806*22dc650dSSadaf Ebrahimi/ab{1,}bc/i
2807*22dc650dSSadaf Ebrahimi
2808*22dc650dSSadaf Ebrahimi/ab+bc/i
2809*22dc650dSSadaf Ebrahimi    ABBBBC
2810*22dc650dSSadaf Ebrahimi
2811*22dc650dSSadaf Ebrahimi/ab{1,}?bc/i
2812*22dc650dSSadaf Ebrahimi    ABBBBC
2813*22dc650dSSadaf Ebrahimi
2814*22dc650dSSadaf Ebrahimi/ab{1,3}?bc/i
2815*22dc650dSSadaf Ebrahimi    ABBBBC
2816*22dc650dSSadaf Ebrahimi
2817*22dc650dSSadaf Ebrahimi/ab{3,4}?bc/i
2818*22dc650dSSadaf Ebrahimi    ABBBBC
2819*22dc650dSSadaf Ebrahimi
2820*22dc650dSSadaf Ebrahimi/ab{4,5}?bc/i
2821*22dc650dSSadaf Ebrahimi\= Expect no match
2822*22dc650dSSadaf Ebrahimi    ABQ
2823*22dc650dSSadaf Ebrahimi    ABBBBC
2824*22dc650dSSadaf Ebrahimi
2825*22dc650dSSadaf Ebrahimi/ab??bc/i
2826*22dc650dSSadaf Ebrahimi    ABBC
2827*22dc650dSSadaf Ebrahimi    ABC
2828*22dc650dSSadaf Ebrahimi
2829*22dc650dSSadaf Ebrahimi/ab{0,1}?bc/i
2830*22dc650dSSadaf Ebrahimi    ABC
2831*22dc650dSSadaf Ebrahimi
2832*22dc650dSSadaf Ebrahimi/ab??bc/i
2833*22dc650dSSadaf Ebrahimi
2834*22dc650dSSadaf Ebrahimi/ab??c/i
2835*22dc650dSSadaf Ebrahimi    ABC
2836*22dc650dSSadaf Ebrahimi
2837*22dc650dSSadaf Ebrahimi/ab{0,1}?c/i
2838*22dc650dSSadaf Ebrahimi    ABC
2839*22dc650dSSadaf Ebrahimi
2840*22dc650dSSadaf Ebrahimi/^abc$/i
2841*22dc650dSSadaf Ebrahimi    ABC
2842*22dc650dSSadaf Ebrahimi\= Expect no match
2843*22dc650dSSadaf Ebrahimi    ABBBBC
2844*22dc650dSSadaf Ebrahimi    ABCC
2845*22dc650dSSadaf Ebrahimi
2846*22dc650dSSadaf Ebrahimi/^abc/i
2847*22dc650dSSadaf Ebrahimi    ABCC
2848*22dc650dSSadaf Ebrahimi
2849*22dc650dSSadaf Ebrahimi/^abc$/i
2850*22dc650dSSadaf Ebrahimi
2851*22dc650dSSadaf Ebrahimi/abc$/i
2852*22dc650dSSadaf Ebrahimi    AABC
2853*22dc650dSSadaf Ebrahimi
2854*22dc650dSSadaf Ebrahimi/^/i
2855*22dc650dSSadaf Ebrahimi    ABC
2856*22dc650dSSadaf Ebrahimi
2857*22dc650dSSadaf Ebrahimi/$/i
2858*22dc650dSSadaf Ebrahimi    ABC
2859*22dc650dSSadaf Ebrahimi
2860*22dc650dSSadaf Ebrahimi/a.c/i
2861*22dc650dSSadaf Ebrahimi    ABC
2862*22dc650dSSadaf Ebrahimi    AXC
2863*22dc650dSSadaf Ebrahimi
2864*22dc650dSSadaf Ebrahimi/a.*?c/i
2865*22dc650dSSadaf Ebrahimi    AXYZC
2866*22dc650dSSadaf Ebrahimi
2867*22dc650dSSadaf Ebrahimi/a.*c/i
2868*22dc650dSSadaf Ebrahimi    AABC
2869*22dc650dSSadaf Ebrahimi\= Expect no match
2870*22dc650dSSadaf Ebrahimi    AXYZD
2871*22dc650dSSadaf Ebrahimi
2872*22dc650dSSadaf Ebrahimi/a[bc]d/i
2873*22dc650dSSadaf Ebrahimi    ABD
2874*22dc650dSSadaf Ebrahimi
2875*22dc650dSSadaf Ebrahimi/a[b-d]e/i
2876*22dc650dSSadaf Ebrahimi    ACE
2877*22dc650dSSadaf Ebrahimi\= Expect no match
2878*22dc650dSSadaf Ebrahimi    ABC
2879*22dc650dSSadaf Ebrahimi    ABD
2880*22dc650dSSadaf Ebrahimi
2881*22dc650dSSadaf Ebrahimi/a[b-d]/i
2882*22dc650dSSadaf Ebrahimi    AAC
2883*22dc650dSSadaf Ebrahimi
2884*22dc650dSSadaf Ebrahimi/a[-b]/i
2885*22dc650dSSadaf Ebrahimi    A-
2886*22dc650dSSadaf Ebrahimi
2887*22dc650dSSadaf Ebrahimi/a[b-]/i
2888*22dc650dSSadaf Ebrahimi    A-
2889*22dc650dSSadaf Ebrahimi
2890*22dc650dSSadaf Ebrahimi/a]/i
2891*22dc650dSSadaf Ebrahimi    A]
2892*22dc650dSSadaf Ebrahimi
2893*22dc650dSSadaf Ebrahimi/a[]]b/i
2894*22dc650dSSadaf Ebrahimi    A]B
2895*22dc650dSSadaf Ebrahimi
2896*22dc650dSSadaf Ebrahimi/a[^bc]d/i
2897*22dc650dSSadaf Ebrahimi    AED
2898*22dc650dSSadaf Ebrahimi
2899*22dc650dSSadaf Ebrahimi/a[^-b]c/i
2900*22dc650dSSadaf Ebrahimi    ADC
2901*22dc650dSSadaf Ebrahimi\= Expect no match
2902*22dc650dSSadaf Ebrahimi    ABD
2903*22dc650dSSadaf Ebrahimi    A-C
2904*22dc650dSSadaf Ebrahimi
2905*22dc650dSSadaf Ebrahimi/a[^]b]c/i
2906*22dc650dSSadaf Ebrahimi    ADC
2907*22dc650dSSadaf Ebrahimi
2908*22dc650dSSadaf Ebrahimi/ab|cd/i
2909*22dc650dSSadaf Ebrahimi    ABC
2910*22dc650dSSadaf Ebrahimi    ABCD
2911*22dc650dSSadaf Ebrahimi
2912*22dc650dSSadaf Ebrahimi/()ef/i
2913*22dc650dSSadaf Ebrahimi    DEF
2914*22dc650dSSadaf Ebrahimi
2915*22dc650dSSadaf Ebrahimi/$b/i
2916*22dc650dSSadaf Ebrahimi\= Expect no match
2917*22dc650dSSadaf Ebrahimi    A]C
2918*22dc650dSSadaf Ebrahimi    B
2919*22dc650dSSadaf Ebrahimi
2920*22dc650dSSadaf Ebrahimi/a\(b/i
2921*22dc650dSSadaf Ebrahimi    A(B
2922*22dc650dSSadaf Ebrahimi
2923*22dc650dSSadaf Ebrahimi/a\(*b/i
2924*22dc650dSSadaf Ebrahimi    AB
2925*22dc650dSSadaf Ebrahimi    A((B
2926*22dc650dSSadaf Ebrahimi
2927*22dc650dSSadaf Ebrahimi/a\\b/i
2928*22dc650dSSadaf Ebrahimi    A\\b
2929*22dc650dSSadaf Ebrahimi    a\\B
2930*22dc650dSSadaf Ebrahimi
2931*22dc650dSSadaf Ebrahimi/((a))/i
2932*22dc650dSSadaf Ebrahimi    ABC
2933*22dc650dSSadaf Ebrahimi
2934*22dc650dSSadaf Ebrahimi/(a)b(c)/i
2935*22dc650dSSadaf Ebrahimi    ABC
2936*22dc650dSSadaf Ebrahimi
2937*22dc650dSSadaf Ebrahimi/a+b+c/i
2938*22dc650dSSadaf Ebrahimi    AABBABC
2939*22dc650dSSadaf Ebrahimi
2940*22dc650dSSadaf Ebrahimi/a{1,}b{1,}c/i
2941*22dc650dSSadaf Ebrahimi    AABBABC
2942*22dc650dSSadaf Ebrahimi
2943*22dc650dSSadaf Ebrahimi/a.+?c/i
2944*22dc650dSSadaf Ebrahimi    ABCABC
2945*22dc650dSSadaf Ebrahimi
2946*22dc650dSSadaf Ebrahimi/a.*?c/i
2947*22dc650dSSadaf Ebrahimi    ABCABC
2948*22dc650dSSadaf Ebrahimi
2949*22dc650dSSadaf Ebrahimi/a.{0,5}?c/i
2950*22dc650dSSadaf Ebrahimi    ABCABC
2951*22dc650dSSadaf Ebrahimi
2952*22dc650dSSadaf Ebrahimi/(a+|b)*/i
2953*22dc650dSSadaf Ebrahimi    AB
2954*22dc650dSSadaf Ebrahimi
2955*22dc650dSSadaf Ebrahimi/(a+|b){0,}/i
2956*22dc650dSSadaf Ebrahimi    AB
2957*22dc650dSSadaf Ebrahimi
2958*22dc650dSSadaf Ebrahimi/(a+|b)+/i
2959*22dc650dSSadaf Ebrahimi    AB
2960*22dc650dSSadaf Ebrahimi
2961*22dc650dSSadaf Ebrahimi/(a+|b){1,}/i
2962*22dc650dSSadaf Ebrahimi    AB
2963*22dc650dSSadaf Ebrahimi
2964*22dc650dSSadaf Ebrahimi/(a+|b)?/i
2965*22dc650dSSadaf Ebrahimi    AB
2966*22dc650dSSadaf Ebrahimi
2967*22dc650dSSadaf Ebrahimi/(a+|b){0,1}/i
2968*22dc650dSSadaf Ebrahimi    AB
2969*22dc650dSSadaf Ebrahimi
2970*22dc650dSSadaf Ebrahimi/(a+|b){0,1}?/i
2971*22dc650dSSadaf Ebrahimi    AB
2972*22dc650dSSadaf Ebrahimi
2973*22dc650dSSadaf Ebrahimi/[^ab]*/i
2974*22dc650dSSadaf Ebrahimi    CDE
2975*22dc650dSSadaf Ebrahimi
2976*22dc650dSSadaf Ebrahimi/([abc])*d/i
2977*22dc650dSSadaf Ebrahimi    ABBBCD
2978*22dc650dSSadaf Ebrahimi
2979*22dc650dSSadaf Ebrahimi/([abc])*bcd/i
2980*22dc650dSSadaf Ebrahimi    ABCD
2981*22dc650dSSadaf Ebrahimi
2982*22dc650dSSadaf Ebrahimi/a|b|c|d|e/i
2983*22dc650dSSadaf Ebrahimi    E
2984*22dc650dSSadaf Ebrahimi
2985*22dc650dSSadaf Ebrahimi/(a|b|c|d|e)f/i
2986*22dc650dSSadaf Ebrahimi    EF
2987*22dc650dSSadaf Ebrahimi
2988*22dc650dSSadaf Ebrahimi/abcd*efg/i
2989*22dc650dSSadaf Ebrahimi    ABCDEFG
2990*22dc650dSSadaf Ebrahimi
2991*22dc650dSSadaf Ebrahimi/ab*/i
2992*22dc650dSSadaf Ebrahimi    XABYABBBZ
2993*22dc650dSSadaf Ebrahimi    XAYABBBZ
2994*22dc650dSSadaf Ebrahimi
2995*22dc650dSSadaf Ebrahimi/(ab|cd)e/i
2996*22dc650dSSadaf Ebrahimi    ABCDE
2997*22dc650dSSadaf Ebrahimi
2998*22dc650dSSadaf Ebrahimi/[abhgefdc]ij/i
2999*22dc650dSSadaf Ebrahimi    HIJ
3000*22dc650dSSadaf Ebrahimi
3001*22dc650dSSadaf Ebrahimi/^(ab|cd)e/i
3002*22dc650dSSadaf Ebrahimi\= Expect no match
3003*22dc650dSSadaf Ebrahimi    ABCDE
3004*22dc650dSSadaf Ebrahimi
3005*22dc650dSSadaf Ebrahimi/(abc|)ef/i
3006*22dc650dSSadaf Ebrahimi    ABCDEF
3007*22dc650dSSadaf Ebrahimi
3008*22dc650dSSadaf Ebrahimi/(a|b)c*d/i
3009*22dc650dSSadaf Ebrahimi    ABCD
3010*22dc650dSSadaf Ebrahimi
3011*22dc650dSSadaf Ebrahimi/(ab|ab*)bc/i
3012*22dc650dSSadaf Ebrahimi    ABC
3013*22dc650dSSadaf Ebrahimi
3014*22dc650dSSadaf Ebrahimi/a([bc]*)c*/i
3015*22dc650dSSadaf Ebrahimi    ABC
3016*22dc650dSSadaf Ebrahimi
3017*22dc650dSSadaf Ebrahimi/a([bc]*)(c*d)/i
3018*22dc650dSSadaf Ebrahimi    ABCD
3019*22dc650dSSadaf Ebrahimi
3020*22dc650dSSadaf Ebrahimi/a([bc]+)(c*d)/i
3021*22dc650dSSadaf Ebrahimi    ABCD
3022*22dc650dSSadaf Ebrahimi
3023*22dc650dSSadaf Ebrahimi/a([bc]*)(c+d)/i
3024*22dc650dSSadaf Ebrahimi    ABCD
3025*22dc650dSSadaf Ebrahimi
3026*22dc650dSSadaf Ebrahimi/a[bcd]*dcdcde/i
3027*22dc650dSSadaf Ebrahimi    ADCDCDE
3028*22dc650dSSadaf Ebrahimi
3029*22dc650dSSadaf Ebrahimi/a[bcd]+dcdcde/i
3030*22dc650dSSadaf Ebrahimi
3031*22dc650dSSadaf Ebrahimi/(ab|a)b*c/i
3032*22dc650dSSadaf Ebrahimi    ABC
3033*22dc650dSSadaf Ebrahimi
3034*22dc650dSSadaf Ebrahimi/((a)(b)c)(d)/i
3035*22dc650dSSadaf Ebrahimi    ABCD
3036*22dc650dSSadaf Ebrahimi
3037*22dc650dSSadaf Ebrahimi/[a-zA-Z_][a-zA-Z0-9_]*/i
3038*22dc650dSSadaf Ebrahimi    ALPHA
3039*22dc650dSSadaf Ebrahimi
3040*22dc650dSSadaf Ebrahimi/^a(bc+|b[eh])g|.h$/i
3041*22dc650dSSadaf Ebrahimi    ABH
3042*22dc650dSSadaf Ebrahimi
3043*22dc650dSSadaf Ebrahimi/(bc+d$|ef*g.|h?i(j|k))/i
3044*22dc650dSSadaf Ebrahimi    EFFGZ
3045*22dc650dSSadaf Ebrahimi    IJ
3046*22dc650dSSadaf Ebrahimi    REFFGZ
3047*22dc650dSSadaf Ebrahimi\= Expect no match
3048*22dc650dSSadaf Ebrahimi    ADCDCDE
3049*22dc650dSSadaf Ebrahimi    EFFG
3050*22dc650dSSadaf Ebrahimi    BCDD
3051*22dc650dSSadaf Ebrahimi
3052*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))/i
3053*22dc650dSSadaf Ebrahimi    A
3054*22dc650dSSadaf Ebrahimi
3055*22dc650dSSadaf Ebrahimi/((((((((((a))))))))))\10/i
3056*22dc650dSSadaf Ebrahimi    AA
3057*22dc650dSSadaf Ebrahimi
3058*22dc650dSSadaf Ebrahimi/(((((((((a)))))))))/i
3059*22dc650dSSadaf Ebrahimi    A
3060*22dc650dSSadaf Ebrahimi
3061*22dc650dSSadaf Ebrahimi/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))/i
3062*22dc650dSSadaf Ebrahimi    A
3063*22dc650dSSadaf Ebrahimi
3064*22dc650dSSadaf Ebrahimi/(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))/i
3065*22dc650dSSadaf Ebrahimi    C
3066*22dc650dSSadaf Ebrahimi
3067*22dc650dSSadaf Ebrahimi/multiple words of text/i
3068*22dc650dSSadaf Ebrahimi\= Expect no match
3069*22dc650dSSadaf Ebrahimi    AA
3070*22dc650dSSadaf Ebrahimi    UH-UH
3071*22dc650dSSadaf Ebrahimi
3072*22dc650dSSadaf Ebrahimi/multiple words/i
3073*22dc650dSSadaf Ebrahimi    MULTIPLE WORDS, YEAH
3074*22dc650dSSadaf Ebrahimi
3075*22dc650dSSadaf Ebrahimi/(.*)c(.*)/i
3076*22dc650dSSadaf Ebrahimi    ABCDE
3077*22dc650dSSadaf Ebrahimi
3078*22dc650dSSadaf Ebrahimi/\((.*), (.*)\)/i
3079*22dc650dSSadaf Ebrahimi    (A, B)
3080*22dc650dSSadaf Ebrahimi
3081*22dc650dSSadaf Ebrahimi/[k]/i
3082*22dc650dSSadaf Ebrahimi
3083*22dc650dSSadaf Ebrahimi/abcd/i
3084*22dc650dSSadaf Ebrahimi    ABCD
3085*22dc650dSSadaf Ebrahimi
3086*22dc650dSSadaf Ebrahimi/a(bc)d/i
3087*22dc650dSSadaf Ebrahimi    ABCD
3088*22dc650dSSadaf Ebrahimi
3089*22dc650dSSadaf Ebrahimi/a[-]?c/i
3090*22dc650dSSadaf Ebrahimi    AC
3091*22dc650dSSadaf Ebrahimi
3092*22dc650dSSadaf Ebrahimi/(abc)\1/i
3093*22dc650dSSadaf Ebrahimi    ABCABC
3094*22dc650dSSadaf Ebrahimi
3095*22dc650dSSadaf Ebrahimi/([a-c]*)\1/i
3096*22dc650dSSadaf Ebrahimi    ABCABC
3097*22dc650dSSadaf Ebrahimi
3098*22dc650dSSadaf Ebrahimi/a(?!b)./
3099*22dc650dSSadaf Ebrahimi    abad
3100*22dc650dSSadaf Ebrahimi
3101*22dc650dSSadaf Ebrahimi/a(?=d)./
3102*22dc650dSSadaf Ebrahimi    abad
3103*22dc650dSSadaf Ebrahimi
3104*22dc650dSSadaf Ebrahimi/a(?=c|d)./
3105*22dc650dSSadaf Ebrahimi    abad
3106*22dc650dSSadaf Ebrahimi
3107*22dc650dSSadaf Ebrahimi/a(?:b|c|d)(.)/
3108*22dc650dSSadaf Ebrahimi    ace
3109*22dc650dSSadaf Ebrahimi
3110*22dc650dSSadaf Ebrahimi/a(?:b|c|d)*(.)/
3111*22dc650dSSadaf Ebrahimi    ace
3112*22dc650dSSadaf Ebrahimi
3113*22dc650dSSadaf Ebrahimi/a(?:b|c|d)+?(.)/
3114*22dc650dSSadaf Ebrahimi    ace
3115*22dc650dSSadaf Ebrahimi    acdbcdbe
3116*22dc650dSSadaf Ebrahimi
3117*22dc650dSSadaf Ebrahimi/a(?:b|c|d)+(.)/
3118*22dc650dSSadaf Ebrahimi    acdbcdbe
3119*22dc650dSSadaf Ebrahimi
3120*22dc650dSSadaf Ebrahimi/a(?:b|c|d){2}(.)/
3121*22dc650dSSadaf Ebrahimi    acdbcdbe
3122*22dc650dSSadaf Ebrahimi
3123*22dc650dSSadaf Ebrahimi/a(?:b|c|d){4,5}(.)/
3124*22dc650dSSadaf Ebrahimi    acdbcdbe
3125*22dc650dSSadaf Ebrahimi
3126*22dc650dSSadaf Ebrahimi/a(?:b|c|d){4,5}?(.)/
3127*22dc650dSSadaf Ebrahimi    acdbcdbe
3128*22dc650dSSadaf Ebrahimi
3129*22dc650dSSadaf Ebrahimi/a(?:b|c|d){6,7}(.)/
3130*22dc650dSSadaf Ebrahimi    acdbcdbe
3131*22dc650dSSadaf Ebrahimi
3132*22dc650dSSadaf Ebrahimi/a(?:b|c|d){6,7}?(.)/
3133*22dc650dSSadaf Ebrahimi    acdbcdbe
3134*22dc650dSSadaf Ebrahimi
3135*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,6}(.)/
3136*22dc650dSSadaf Ebrahimi    acdbcdbe
3137*22dc650dSSadaf Ebrahimi
3138*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,6}?(.)/
3139*22dc650dSSadaf Ebrahimi    acdbcdbe
3140*22dc650dSSadaf Ebrahimi
3141*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,7}(.)/
3142*22dc650dSSadaf Ebrahimi    acdbcdbe
3143*22dc650dSSadaf Ebrahimi
3144*22dc650dSSadaf Ebrahimi/a(?:b|c|d){5,7}?(.)/
3145*22dc650dSSadaf Ebrahimi    acdbcdbe
3146*22dc650dSSadaf Ebrahimi
3147*22dc650dSSadaf Ebrahimi/a(?:b|(c|e){1,2}?|d)+?(.)/
3148*22dc650dSSadaf Ebrahimi    ace
3149*22dc650dSSadaf Ebrahimi
3150*22dc650dSSadaf Ebrahimi/^(.+)?B/
3151*22dc650dSSadaf Ebrahimi    AB
3152*22dc650dSSadaf Ebrahimi
3153*22dc650dSSadaf Ebrahimi/^([^a-z])|(\^)$/
3154*22dc650dSSadaf Ebrahimi    .
3155*22dc650dSSadaf Ebrahimi
3156*22dc650dSSadaf Ebrahimi/^[<>]&/
3157*22dc650dSSadaf Ebrahimi    <&OUT
3158*22dc650dSSadaf Ebrahimi
3159*22dc650dSSadaf Ebrahimi/^(a\1?){4}$/
3160*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
3161*22dc650dSSadaf Ebrahimi\= Expect no match
3162*22dc650dSSadaf Ebrahimi    AB
3163*22dc650dSSadaf Ebrahimi    aaaaaaaaa
3164*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
3165*22dc650dSSadaf Ebrahimi
3166*22dc650dSSadaf Ebrahimi/^(a(?(1)\1)){4}$/
3167*22dc650dSSadaf Ebrahimi    aaaaaaaaaa
3168*22dc650dSSadaf Ebrahimi\= Expect no match
3169*22dc650dSSadaf Ebrahimi    aaaaaaaaa
3170*22dc650dSSadaf Ebrahimi    aaaaaaaaaaa
3171*22dc650dSSadaf Ebrahimi
3172*22dc650dSSadaf Ebrahimi/(?<=a)b/
3173*22dc650dSSadaf Ebrahimi    ab
3174*22dc650dSSadaf Ebrahimi\= Expect no match
3175*22dc650dSSadaf Ebrahimi    cb
3176*22dc650dSSadaf Ebrahimi    b
3177*22dc650dSSadaf Ebrahimi
3178*22dc650dSSadaf Ebrahimi/(?<!c)b/
3179*22dc650dSSadaf Ebrahimi    ab
3180*22dc650dSSadaf Ebrahimi    b
3181*22dc650dSSadaf Ebrahimi    b
3182*22dc650dSSadaf Ebrahimi
3183*22dc650dSSadaf Ebrahimi/(?:..)*a/
3184*22dc650dSSadaf Ebrahimi    aba
3185*22dc650dSSadaf Ebrahimi
3186*22dc650dSSadaf Ebrahimi/(?:..)*?a/
3187*22dc650dSSadaf Ebrahimi    aba
3188*22dc650dSSadaf Ebrahimi
3189*22dc650dSSadaf Ebrahimi/^(?:b|a(?=(.)))*\1/
3190*22dc650dSSadaf Ebrahimi    abc
3191*22dc650dSSadaf Ebrahimi
3192*22dc650dSSadaf Ebrahimi/^(){3,5}/
3193*22dc650dSSadaf Ebrahimi    abc
3194*22dc650dSSadaf Ebrahimi
3195*22dc650dSSadaf Ebrahimi/^(a+)*ax/
3196*22dc650dSSadaf Ebrahimi    aax
3197*22dc650dSSadaf Ebrahimi
3198*22dc650dSSadaf Ebrahimi/^((a|b)+)*ax/
3199*22dc650dSSadaf Ebrahimi    aax
3200*22dc650dSSadaf Ebrahimi
3201*22dc650dSSadaf Ebrahimi/^((a|bc)+)*ax/
3202*22dc650dSSadaf Ebrahimi    aax
3203*22dc650dSSadaf Ebrahimi
3204*22dc650dSSadaf Ebrahimi/(a|x)*ab/
3205*22dc650dSSadaf Ebrahimi    cab
3206*22dc650dSSadaf Ebrahimi
3207*22dc650dSSadaf Ebrahimi/(a)*ab/
3208*22dc650dSSadaf Ebrahimi    cab
3209*22dc650dSSadaf Ebrahimi
3210*22dc650dSSadaf Ebrahimi/(?:(?i)a)b/
3211*22dc650dSSadaf Ebrahimi    ab
3212*22dc650dSSadaf Ebrahimi
3213*22dc650dSSadaf Ebrahimi/((?i)a)b/
3214*22dc650dSSadaf Ebrahimi    ab
3215*22dc650dSSadaf Ebrahimi
3216*22dc650dSSadaf Ebrahimi/(?:(?i)a)b/
3217*22dc650dSSadaf Ebrahimi    Ab
3218*22dc650dSSadaf Ebrahimi
3219*22dc650dSSadaf Ebrahimi/((?i)a)b/
3220*22dc650dSSadaf Ebrahimi    Ab
3221*22dc650dSSadaf Ebrahimi
3222*22dc650dSSadaf Ebrahimi/(?:(?i)a)b/
3223*22dc650dSSadaf Ebrahimi\= Expect no match
3224*22dc650dSSadaf Ebrahimi    cb
3225*22dc650dSSadaf Ebrahimi    aB
3226*22dc650dSSadaf Ebrahimi
3227*22dc650dSSadaf Ebrahimi/((?i)a)b/
3228*22dc650dSSadaf Ebrahimi
3229*22dc650dSSadaf Ebrahimi/(?i:a)b/
3230*22dc650dSSadaf Ebrahimi    ab
3231*22dc650dSSadaf Ebrahimi
3232*22dc650dSSadaf Ebrahimi/((?i:a))b/
3233*22dc650dSSadaf Ebrahimi    ab
3234*22dc650dSSadaf Ebrahimi
3235*22dc650dSSadaf Ebrahimi/(?i:a)b/
3236*22dc650dSSadaf Ebrahimi    Ab
3237*22dc650dSSadaf Ebrahimi
3238*22dc650dSSadaf Ebrahimi/((?i:a))b/
3239*22dc650dSSadaf Ebrahimi    Ab
3240*22dc650dSSadaf Ebrahimi
3241*22dc650dSSadaf Ebrahimi/(?i:a)b/
3242*22dc650dSSadaf Ebrahimi\= Expect no match
3243*22dc650dSSadaf Ebrahimi    aB
3244*22dc650dSSadaf Ebrahimi    aB
3245*22dc650dSSadaf Ebrahimi
3246*22dc650dSSadaf Ebrahimi/((?i:a))b/
3247*22dc650dSSadaf Ebrahimi
3248*22dc650dSSadaf Ebrahimi/(?:(?-i)a)b/i
3249*22dc650dSSadaf Ebrahimi    ab
3250*22dc650dSSadaf Ebrahimi
3251*22dc650dSSadaf Ebrahimi/((?-i)a)b/i
3252*22dc650dSSadaf Ebrahimi    ab
3253*22dc650dSSadaf Ebrahimi
3254*22dc650dSSadaf Ebrahimi/(?:(?-i)a)b/i
3255*22dc650dSSadaf Ebrahimi    aB
3256*22dc650dSSadaf Ebrahimi
3257*22dc650dSSadaf Ebrahimi/((?-i)a)b/i
3258*22dc650dSSadaf Ebrahimi    aB
3259*22dc650dSSadaf Ebrahimi
3260*22dc650dSSadaf Ebrahimi/(?:(?-i)a)b/i
3261*22dc650dSSadaf Ebrahimi    aB
3262*22dc650dSSadaf Ebrahimi\= Expect no match
3263*22dc650dSSadaf Ebrahimi    Ab
3264*22dc650dSSadaf Ebrahimi    AB
3265*22dc650dSSadaf Ebrahimi
3266*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
3267*22dc650dSSadaf Ebrahimi    ab
3268*22dc650dSSadaf Ebrahimi
3269*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
3270*22dc650dSSadaf Ebrahimi    ab
3271*22dc650dSSadaf Ebrahimi
3272*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
3273*22dc650dSSadaf Ebrahimi    aB
3274*22dc650dSSadaf Ebrahimi
3275*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
3276*22dc650dSSadaf Ebrahimi    aB
3277*22dc650dSSadaf Ebrahimi
3278*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
3279*22dc650dSSadaf Ebrahimi\= Expect no match
3280*22dc650dSSadaf Ebrahimi    AB
3281*22dc650dSSadaf Ebrahimi    Ab
3282*22dc650dSSadaf Ebrahimi
3283*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
3284*22dc650dSSadaf Ebrahimi
3285*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
3286*22dc650dSSadaf Ebrahimi    aB
3287*22dc650dSSadaf Ebrahimi
3288*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
3289*22dc650dSSadaf Ebrahimi    aB
3290*22dc650dSSadaf Ebrahimi
3291*22dc650dSSadaf Ebrahimi/(?-i:a)b/i
3292*22dc650dSSadaf Ebrahimi\= Expect no match
3293*22dc650dSSadaf Ebrahimi    Ab
3294*22dc650dSSadaf Ebrahimi    AB
3295*22dc650dSSadaf Ebrahimi
3296*22dc650dSSadaf Ebrahimi/((?-i:a))b/i
3297*22dc650dSSadaf Ebrahimi
3298*22dc650dSSadaf Ebrahimi/((?-i:a.))b/i
3299*22dc650dSSadaf Ebrahimi\= Expect no match
3300*22dc650dSSadaf Ebrahimi    AB
3301*22dc650dSSadaf Ebrahimi    a\nB
3302*22dc650dSSadaf Ebrahimi
3303*22dc650dSSadaf Ebrahimi/((?s-i:a.))b/i
3304*22dc650dSSadaf Ebrahimi    a\nB
3305*22dc650dSSadaf Ebrahimi
3306*22dc650dSSadaf Ebrahimi/(?:c|d)(?:)(?:a(?:)(?:b)(?:b(?:))(?:b(?:)(?:b)))/
3307*22dc650dSSadaf Ebrahimi    cabbbb
3308*22dc650dSSadaf Ebrahimi
3309*22dc650dSSadaf Ebrahimi/(?:c|d)(?:)(?:aaaaaaaa(?:)(?:bbbbbbbb)(?:bbbbbbbb(?:))(?:bbbbbbbb(?:)(?:bbbbbbbb)))/
3310*22dc650dSSadaf Ebrahimi    caaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
3311*22dc650dSSadaf Ebrahimi
3312*22dc650dSSadaf Ebrahimi/(ab)\d\1/i
3313*22dc650dSSadaf Ebrahimi    Ab4ab
3314*22dc650dSSadaf Ebrahimi    ab4Ab
3315*22dc650dSSadaf Ebrahimi
3316*22dc650dSSadaf Ebrahimi/foo\w*\d{4}baz/
3317*22dc650dSSadaf Ebrahimi    foobar1234baz
3318*22dc650dSSadaf Ebrahimi
3319*22dc650dSSadaf Ebrahimi/x(~~)*(?:(?:F)?)?/
3320*22dc650dSSadaf Ebrahimi    x~~
3321*22dc650dSSadaf Ebrahimi
3322*22dc650dSSadaf Ebrahimi/^a(?#xxx){3}c/
3323*22dc650dSSadaf Ebrahimi    aaac
3324*22dc650dSSadaf Ebrahimi
3325*22dc650dSSadaf Ebrahimi/^a (?#xxx) (?#yyy) {3}c/x
3326*22dc650dSSadaf Ebrahimi    aaac
3327*22dc650dSSadaf Ebrahimi
3328*22dc650dSSadaf Ebrahimi/(?<![cd])b/
3329*22dc650dSSadaf Ebrahimi\= Expect no match
3330*22dc650dSSadaf Ebrahimi    B\nB
3331*22dc650dSSadaf Ebrahimi    dbcb
3332*22dc650dSSadaf Ebrahimi
3333*22dc650dSSadaf Ebrahimi/(?<![cd])[ab]/
3334*22dc650dSSadaf Ebrahimi    dbaacb
3335*22dc650dSSadaf Ebrahimi
3336*22dc650dSSadaf Ebrahimi/(?<!(c|d))b/
3337*22dc650dSSadaf Ebrahimi
3338*22dc650dSSadaf Ebrahimi/(?<!(c|d))[ab]/
3339*22dc650dSSadaf Ebrahimi    dbaacb
3340*22dc650dSSadaf Ebrahimi
3341*22dc650dSSadaf Ebrahimi/(?<!cd)[ab]/
3342*22dc650dSSadaf Ebrahimi    cdaccb
3343*22dc650dSSadaf Ebrahimi
3344*22dc650dSSadaf Ebrahimi/^(?:a?b?)*$/
3345*22dc650dSSadaf Ebrahimi    \
3346*22dc650dSSadaf Ebrahimi    a
3347*22dc650dSSadaf Ebrahimi    ab
3348*22dc650dSSadaf Ebrahimi    aaa
3349*22dc650dSSadaf Ebrahimi\= Expect no match
3350*22dc650dSSadaf Ebrahimi    dbcb
3351*22dc650dSSadaf Ebrahimi    a--
3352*22dc650dSSadaf Ebrahimi    aa--
3353*22dc650dSSadaf Ebrahimi
3354*22dc650dSSadaf Ebrahimi/((?s)^a(.))((?m)^b$)/
3355*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3356*22dc650dSSadaf Ebrahimi
3357*22dc650dSSadaf Ebrahimi/((?m)^b$)/
3358*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3359*22dc650dSSadaf Ebrahimi
3360*22dc650dSSadaf Ebrahimi/(?m)^b/
3361*22dc650dSSadaf Ebrahimi    a\nb\n
3362*22dc650dSSadaf Ebrahimi
3363*22dc650dSSadaf Ebrahimi/(?m)^(b)/
3364*22dc650dSSadaf Ebrahimi    a\nb\n
3365*22dc650dSSadaf Ebrahimi
3366*22dc650dSSadaf Ebrahimi/((?m)^b)/
3367*22dc650dSSadaf Ebrahimi    a\nb\n
3368*22dc650dSSadaf Ebrahimi
3369*22dc650dSSadaf Ebrahimi/\n((?m)^b)/
3370*22dc650dSSadaf Ebrahimi    a\nb\n
3371*22dc650dSSadaf Ebrahimi
3372*22dc650dSSadaf Ebrahimi/((?s).)c(?!.)/
3373*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3374*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3375*22dc650dSSadaf Ebrahimi
3376*22dc650dSSadaf Ebrahimi/((?s)b.)c(?!.)/
3377*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3378*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3379*22dc650dSSadaf Ebrahimi
3380*22dc650dSSadaf Ebrahimi/^b/
3381*22dc650dSSadaf Ebrahimi
3382*22dc650dSSadaf Ebrahimi/()^b/
3383*22dc650dSSadaf Ebrahimi\= Expect no match
3384*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3385*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3386*22dc650dSSadaf Ebrahimi
3387*22dc650dSSadaf Ebrahimi/((?m)^b)/
3388*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3389*22dc650dSSadaf Ebrahimi
3390*22dc650dSSadaf Ebrahimi/(x)?(?(1)a|b)/
3391*22dc650dSSadaf Ebrahimi\= Expect no match
3392*22dc650dSSadaf Ebrahimi    a
3393*22dc650dSSadaf Ebrahimi    a
3394*22dc650dSSadaf Ebrahimi
3395*22dc650dSSadaf Ebrahimi/(x)?(?(1)b|a)/
3396*22dc650dSSadaf Ebrahimi    a
3397*22dc650dSSadaf Ebrahimi
3398*22dc650dSSadaf Ebrahimi/()?(?(1)b|a)/
3399*22dc650dSSadaf Ebrahimi    a
3400*22dc650dSSadaf Ebrahimi
3401*22dc650dSSadaf Ebrahimi/()(?(1)b|a)/
3402*22dc650dSSadaf Ebrahimi
3403*22dc650dSSadaf Ebrahimi/()?(?(1)a|b)/
3404*22dc650dSSadaf Ebrahimi    a
3405*22dc650dSSadaf Ebrahimi
3406*22dc650dSSadaf Ebrahimi/^(\()?blah(?(1)(\)))$/
3407*22dc650dSSadaf Ebrahimi    (blah)
3408*22dc650dSSadaf Ebrahimi    blah
3409*22dc650dSSadaf Ebrahimi\= Expect no match
3410*22dc650dSSadaf Ebrahimi    a
3411*22dc650dSSadaf Ebrahimi    blah)
3412*22dc650dSSadaf Ebrahimi    (blah
3413*22dc650dSSadaf Ebrahimi
3414*22dc650dSSadaf Ebrahimi/^(\(+)?blah(?(1)(\)))$/
3415*22dc650dSSadaf Ebrahimi    (blah)
3416*22dc650dSSadaf Ebrahimi    blah
3417*22dc650dSSadaf Ebrahimi\= Expect no match
3418*22dc650dSSadaf Ebrahimi    blah)
3419*22dc650dSSadaf Ebrahimi    (blah
3420*22dc650dSSadaf Ebrahimi
3421*22dc650dSSadaf Ebrahimi/(?(?!a)a|b)/
3422*22dc650dSSadaf Ebrahimi
3423*22dc650dSSadaf Ebrahimi/(?(?!a)b|a)/
3424*22dc650dSSadaf Ebrahimi    a
3425*22dc650dSSadaf Ebrahimi
3426*22dc650dSSadaf Ebrahimi/(?(?=a)b|a)/
3427*22dc650dSSadaf Ebrahimi\= Expect no match
3428*22dc650dSSadaf Ebrahimi    a
3429*22dc650dSSadaf Ebrahimi    a
3430*22dc650dSSadaf Ebrahimi
3431*22dc650dSSadaf Ebrahimi/(?(?=a)a|b)/
3432*22dc650dSSadaf Ebrahimi    a
3433*22dc650dSSadaf Ebrahimi
3434*22dc650dSSadaf Ebrahimi/(?=(a+?))(\1ab)/
3435*22dc650dSSadaf Ebrahimi    aaab
3436*22dc650dSSadaf Ebrahimi
3437*22dc650dSSadaf Ebrahimi/^(?=(a+?))\1ab/
3438*22dc650dSSadaf Ebrahimi
3439*22dc650dSSadaf Ebrahimi/(\w+:)+/
3440*22dc650dSSadaf Ebrahimi    one:
3441*22dc650dSSadaf Ebrahimi
3442*22dc650dSSadaf Ebrahimi/$(?<=^(a))/
3443*22dc650dSSadaf Ebrahimi    a
3444*22dc650dSSadaf Ebrahimi
3445*22dc650dSSadaf Ebrahimi/(?=(a+?))(\1ab)/
3446*22dc650dSSadaf Ebrahimi    aaab
3447*22dc650dSSadaf Ebrahimi
3448*22dc650dSSadaf Ebrahimi/^(?=(a+?))\1ab/
3449*22dc650dSSadaf Ebrahimi\= Expect no match
3450*22dc650dSSadaf Ebrahimi    aaab
3451*22dc650dSSadaf Ebrahimi    aaab
3452*22dc650dSSadaf Ebrahimi
3453*22dc650dSSadaf Ebrahimi/([\w:]+::)?(\w+)$/
3454*22dc650dSSadaf Ebrahimi    abcd
3455*22dc650dSSadaf Ebrahimi    xy:z:::abcd
3456*22dc650dSSadaf Ebrahimi
3457*22dc650dSSadaf Ebrahimi/^[^bcd]*(c+)/
3458*22dc650dSSadaf Ebrahimi    aexycd
3459*22dc650dSSadaf Ebrahimi
3460*22dc650dSSadaf Ebrahimi/(a*)b+/
3461*22dc650dSSadaf Ebrahimi    caab
3462*22dc650dSSadaf Ebrahimi
3463*22dc650dSSadaf Ebrahimi/([\w:]+::)?(\w+)$/
3464*22dc650dSSadaf Ebrahimi    abcd
3465*22dc650dSSadaf Ebrahimi    xy:z:::abcd
3466*22dc650dSSadaf Ebrahimi\= Expect no match
3467*22dc650dSSadaf Ebrahimi    abcd:
3468*22dc650dSSadaf Ebrahimi    abcd:
3469*22dc650dSSadaf Ebrahimi
3470*22dc650dSSadaf Ebrahimi/^[^bcd]*(c+)/
3471*22dc650dSSadaf Ebrahimi    aexycd
3472*22dc650dSSadaf Ebrahimi
3473*22dc650dSSadaf Ebrahimi/(>a+)ab/
3474*22dc650dSSadaf Ebrahimi
3475*22dc650dSSadaf Ebrahimi/(?>a+)b/
3476*22dc650dSSadaf Ebrahimi    aaab
3477*22dc650dSSadaf Ebrahimi
3478*22dc650dSSadaf Ebrahimi/([[:]+)/
3479*22dc650dSSadaf Ebrahimi    a:[b]:
3480*22dc650dSSadaf Ebrahimi
3481*22dc650dSSadaf Ebrahimi/([[=]+)/
3482*22dc650dSSadaf Ebrahimi    a=[b]=
3483*22dc650dSSadaf Ebrahimi
3484*22dc650dSSadaf Ebrahimi/([[.]+)/
3485*22dc650dSSadaf Ebrahimi    a.[b].
3486*22dc650dSSadaf Ebrahimi
3487*22dc650dSSadaf Ebrahimi/((?>a+)b)/
3488*22dc650dSSadaf Ebrahimi    aaab
3489*22dc650dSSadaf Ebrahimi
3490*22dc650dSSadaf Ebrahimi/(?>(a+))b/
3491*22dc650dSSadaf Ebrahimi    aaab
3492*22dc650dSSadaf Ebrahimi
3493*22dc650dSSadaf Ebrahimi/((?>[^()]+)|\([^()]*\))+/
3494*22dc650dSSadaf Ebrahimi    ((abc(ade)ufh()()x
3495*22dc650dSSadaf Ebrahimi
3496*22dc650dSSadaf Ebrahimi/a\Z/
3497*22dc650dSSadaf Ebrahimi\= Expect no match
3498*22dc650dSSadaf Ebrahimi    aaab
3499*22dc650dSSadaf Ebrahimi    a\nb\n
3500*22dc650dSSadaf Ebrahimi
3501*22dc650dSSadaf Ebrahimi/b\Z/
3502*22dc650dSSadaf Ebrahimi    a\nb\n
3503*22dc650dSSadaf Ebrahimi
3504*22dc650dSSadaf Ebrahimi/b\z/
3505*22dc650dSSadaf Ebrahimi
3506*22dc650dSSadaf Ebrahimi/b\Z/
3507*22dc650dSSadaf Ebrahimi    a\nb
3508*22dc650dSSadaf Ebrahimi
3509*22dc650dSSadaf Ebrahimi/b\z/
3510*22dc650dSSadaf Ebrahimi    a\nb
3511*22dc650dSSadaf Ebrahimi
3512*22dc650dSSadaf Ebrahimi/^(?>(?(1)\.|())[^\W_](?>[a-z0-9-]*[^\W_])?)+$/
3513*22dc650dSSadaf Ebrahimi    a
3514*22dc650dSSadaf Ebrahimi    abc
3515*22dc650dSSadaf Ebrahimi    a-b
3516*22dc650dSSadaf Ebrahimi    0-9
3517*22dc650dSSadaf Ebrahimi    a.b
3518*22dc650dSSadaf Ebrahimi    5.6.7
3519*22dc650dSSadaf Ebrahimi    the.quick.brown.fox
3520*22dc650dSSadaf Ebrahimi    a100.b200.300c
3521*22dc650dSSadaf Ebrahimi    12-ab.1245
3522*22dc650dSSadaf Ebrahimi\= Expect no match
3523*22dc650dSSadaf Ebrahimi    \
3524*22dc650dSSadaf Ebrahimi    .a
3525*22dc650dSSadaf Ebrahimi    -a
3526*22dc650dSSadaf Ebrahimi    a-
3527*22dc650dSSadaf Ebrahimi    a.
3528*22dc650dSSadaf Ebrahimi    a_b
3529*22dc650dSSadaf Ebrahimi    a.-
3530*22dc650dSSadaf Ebrahimi    a..
3531*22dc650dSSadaf Ebrahimi    ab..bc
3532*22dc650dSSadaf Ebrahimi    the.quick.brown.fox-
3533*22dc650dSSadaf Ebrahimi    the.quick.brown.fox.
3534*22dc650dSSadaf Ebrahimi    the.quick.brown.fox_
3535*22dc650dSSadaf Ebrahimi    the.quick.brown.fox+
3536*22dc650dSSadaf Ebrahimi
3537*22dc650dSSadaf Ebrahimi/(?>.*)(?<=(abcd|wxyz))/
3538*22dc650dSSadaf Ebrahimi    alphabetabcd
3539*22dc650dSSadaf Ebrahimi    endingwxyz
3540*22dc650dSSadaf Ebrahimi\= Expect no match
3541*22dc650dSSadaf Ebrahimi    a rather long string that doesn't end with one of them
3542*22dc650dSSadaf Ebrahimi
3543*22dc650dSSadaf Ebrahimi/word (?>(?:(?!otherword)[a-zA-Z0-9]+ ){0,30})otherword/
3544*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark otherword
3545*22dc650dSSadaf Ebrahimi\= Expect no match
3546*22dc650dSSadaf Ebrahimi    word cat dog elephant mussel cow horse canary baboon snake shark
3547*22dc650dSSadaf Ebrahimi
3548*22dc650dSSadaf Ebrahimi/word (?>[a-zA-Z0-9]+ ){0,30}otherword/
3549*22dc650dSSadaf Ebrahimi\= Expect no match
3550*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
3551*22dc650dSSadaf Ebrahimi
3552*22dc650dSSadaf Ebrahimi/(?<=\d{3}(?!999))foo/
3553*22dc650dSSadaf Ebrahimi    999foo
3554*22dc650dSSadaf Ebrahimi    123999foo
3555*22dc650dSSadaf Ebrahimi\= Expect no match
3556*22dc650dSSadaf Ebrahimi    123abcfoo
3557*22dc650dSSadaf Ebrahimi
3558*22dc650dSSadaf Ebrahimi/(?<=(?!...999)\d{3})foo/
3559*22dc650dSSadaf Ebrahimi    999foo
3560*22dc650dSSadaf Ebrahimi    123999foo
3561*22dc650dSSadaf Ebrahimi\= Expect no match
3562*22dc650dSSadaf Ebrahimi    123abcfoo
3563*22dc650dSSadaf Ebrahimi
3564*22dc650dSSadaf Ebrahimi/(?<=\d{3}(?!999)...)foo/
3565*22dc650dSSadaf Ebrahimi    123abcfoo
3566*22dc650dSSadaf Ebrahimi    123456foo
3567*22dc650dSSadaf Ebrahimi\= Expect no match
3568*22dc650dSSadaf Ebrahimi    123999foo
3569*22dc650dSSadaf Ebrahimi
3570*22dc650dSSadaf Ebrahimi/(?<=\d{3}...)(?<!999)foo/
3571*22dc650dSSadaf Ebrahimi    123abcfoo
3572*22dc650dSSadaf Ebrahimi    123456foo
3573*22dc650dSSadaf Ebrahimi\= Expect no match
3574*22dc650dSSadaf Ebrahimi    123999foo
3575*22dc650dSSadaf Ebrahimi
3576*22dc650dSSadaf Ebrahimi/<a[\s]+href[\s]*=[\s]*          # find <a href=
3577*22dc650dSSadaf Ebrahimi ([\"\'])?                       # find single or double quote
3578*22dc650dSSadaf Ebrahimi (?(1) (.*?)\1 | ([^\s]+))       # if quote found, match up to next matching
3579*22dc650dSSadaf Ebrahimi                                 # quote, otherwise match up to next space
3580*22dc650dSSadaf Ebrahimi/isx
3581*22dc650dSSadaf Ebrahimi    <a href=abcd xyz
3582*22dc650dSSadaf Ebrahimi    <a href=\"abcd xyz pqr\" cats
3583*22dc650dSSadaf Ebrahimi    <a href=\'abcd xyz pqr\' cats
3584*22dc650dSSadaf Ebrahimi
3585*22dc650dSSadaf Ebrahimi/<a\s+href\s*=\s*                # find <a href=
3586*22dc650dSSadaf Ebrahimi (["'])?                         # find single or double quote
3587*22dc650dSSadaf Ebrahimi (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
3588*22dc650dSSadaf Ebrahimi                                 # quote, otherwise match up to next space
3589*22dc650dSSadaf Ebrahimi/isx
3590*22dc650dSSadaf Ebrahimi    <a href=abcd xyz
3591*22dc650dSSadaf Ebrahimi    <a href=\"abcd xyz pqr\" cats
3592*22dc650dSSadaf Ebrahimi    <a href       =       \'abcd xyz pqr\' cats
3593*22dc650dSSadaf Ebrahimi
3594*22dc650dSSadaf Ebrahimi/<a\s+href(?>\s*)=(?>\s*)        # find <a href=
3595*22dc650dSSadaf Ebrahimi (["'])?                         # find single or double quote
3596*22dc650dSSadaf Ebrahimi (?(1) (.*?)\1 | (\S+))          # if quote found, match up to next matching
3597*22dc650dSSadaf Ebrahimi                                 # quote, otherwise match up to next space
3598*22dc650dSSadaf Ebrahimi/isx
3599*22dc650dSSadaf Ebrahimi    <a href=abcd xyz
3600*22dc650dSSadaf Ebrahimi    <a href=\"abcd xyz pqr\" cats
3601*22dc650dSSadaf Ebrahimi    <a href       =       \'abcd xyz pqr\' cats
3602*22dc650dSSadaf Ebrahimi
3603*22dc650dSSadaf Ebrahimi/(Z()|A)*/
3604*22dc650dSSadaf Ebrahimi    ZABCDEFG
3605*22dc650dSSadaf Ebrahimi
3606*22dc650dSSadaf Ebrahimi/(Z(())|A)*/
3607*22dc650dSSadaf Ebrahimi    ZABCDEFG
3608*22dc650dSSadaf Ebrahimi
3609*22dc650dSSadaf Ebrahimi/((?>Z)+|A)*/
3610*22dc650dSSadaf Ebrahimi    ZABCDEFG
3611*22dc650dSSadaf Ebrahimi
3612*22dc650dSSadaf Ebrahimi/((?>)+|A)*/
3613*22dc650dSSadaf Ebrahimi    ZABCDEFG
3614*22dc650dSSadaf Ebrahimi
3615*22dc650dSSadaf Ebrahimi/a*/g
3616*22dc650dSSadaf Ebrahimi    abbab
3617*22dc650dSSadaf Ebrahimi
3618*22dc650dSSadaf Ebrahimi/[[:space:]]+/
3619*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
3620*22dc650dSSadaf Ebrahimi
3621*22dc650dSSadaf Ebrahimi/[[:blank:]]+/
3622*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
3623*22dc650dSSadaf Ebrahimi
3624*22dc650dSSadaf Ebrahimi/[\s]+/
3625*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
3626*22dc650dSSadaf Ebrahimi
3627*22dc650dSSadaf Ebrahimi/\s+/
3628*22dc650dSSadaf Ebrahimi    > \x09\x0a\x0c\x0d\x0b<
3629*22dc650dSSadaf Ebrahimi
3630*22dc650dSSadaf Ebrahimi/ab/x
3631*22dc650dSSadaf Ebrahimi    ab
3632*22dc650dSSadaf Ebrahimi
3633*22dc650dSSadaf Ebrahimi/(?!\A)x/m
3634*22dc650dSSadaf Ebrahimi    a\nxb\n
3635*22dc650dSSadaf Ebrahimi
3636*22dc650dSSadaf Ebrahimi/(?!^)x/m
3637*22dc650dSSadaf Ebrahimi\= Expect no match
3638*22dc650dSSadaf Ebrahimi    a\nxb\n
3639*22dc650dSSadaf Ebrahimi
3640*22dc650dSSadaf Ebrahimi/abc\Qabc\Eabc/
3641*22dc650dSSadaf Ebrahimi    abcabcabc
3642*22dc650dSSadaf Ebrahimi
3643*22dc650dSSadaf Ebrahimi/abc\Q(*+|\Eabc/
3644*22dc650dSSadaf Ebrahimi    abc(*+|abc
3645*22dc650dSSadaf Ebrahimi
3646*22dc650dSSadaf Ebrahimi/   abc\Q abc\Eabc/x
3647*22dc650dSSadaf Ebrahimi    abc abcabc
3648*22dc650dSSadaf Ebrahimi\= Expect no match
3649*22dc650dSSadaf Ebrahimi    abcabcabc
3650*22dc650dSSadaf Ebrahimi
3651*22dc650dSSadaf Ebrahimi/abc#comment
3652*22dc650dSSadaf Ebrahimi    \Q#not comment
3653*22dc650dSSadaf Ebrahimi    literal\E/x
3654*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
3655*22dc650dSSadaf Ebrahimi
3656*22dc650dSSadaf Ebrahimi/abc#comment
3657*22dc650dSSadaf Ebrahimi    \Q#not comment
3658*22dc650dSSadaf Ebrahimi    literal/x
3659*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
3660*22dc650dSSadaf Ebrahimi
3661*22dc650dSSadaf Ebrahimi/abc#comment
3662*22dc650dSSadaf Ebrahimi    \Q#not comment
3663*22dc650dSSadaf Ebrahimi    literal\E #more comment
3664*22dc650dSSadaf Ebrahimi    /x
3665*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
3666*22dc650dSSadaf Ebrahimi
3667*22dc650dSSadaf Ebrahimi/abc#comment
3668*22dc650dSSadaf Ebrahimi    \Q#not comment
3669*22dc650dSSadaf Ebrahimi    literal\E #more comment/x
3670*22dc650dSSadaf Ebrahimi    abc#not comment\n    literal
3671*22dc650dSSadaf Ebrahimi
3672*22dc650dSSadaf Ebrahimi/\Qabc\$xyz\E/
3673*22dc650dSSadaf Ebrahimi    abc\\\$xyz
3674*22dc650dSSadaf Ebrahimi
3675*22dc650dSSadaf Ebrahimi/\Qabc\E\$\Qxyz\E/
3676*22dc650dSSadaf Ebrahimi    abc\$xyz
3677*22dc650dSSadaf Ebrahimi
3678*22dc650dSSadaf Ebrahimi/\Gabc/
3679*22dc650dSSadaf Ebrahimi    abc
3680*22dc650dSSadaf Ebrahimi\= Expect no match
3681*22dc650dSSadaf Ebrahimi    xyzabc
3682*22dc650dSSadaf Ebrahimi
3683*22dc650dSSadaf Ebrahimi/\Gabc./g
3684*22dc650dSSadaf Ebrahimi    abc1abc2xyzabc3
3685*22dc650dSSadaf Ebrahimi
3686*22dc650dSSadaf Ebrahimi/abc./g
3687*22dc650dSSadaf Ebrahimi    abc1abc2xyzabc3
3688*22dc650dSSadaf Ebrahimi
3689*22dc650dSSadaf Ebrahimi/a(?x: b c )d/
3690*22dc650dSSadaf Ebrahimi    XabcdY
3691*22dc650dSSadaf Ebrahimi\= Expect no match
3692*22dc650dSSadaf Ebrahimi    Xa b c d Y
3693*22dc650dSSadaf Ebrahimi
3694*22dc650dSSadaf Ebrahimi/((?x)x y z | a b c)/
3695*22dc650dSSadaf Ebrahimi    XabcY
3696*22dc650dSSadaf Ebrahimi    AxyzB
3697*22dc650dSSadaf Ebrahimi
3698*22dc650dSSadaf Ebrahimi/(?i)AB(?-i)C/
3699*22dc650dSSadaf Ebrahimi    XabCY
3700*22dc650dSSadaf Ebrahimi\= Expect no match
3701*22dc650dSSadaf Ebrahimi    XabcY
3702*22dc650dSSadaf Ebrahimi
3703*22dc650dSSadaf Ebrahimi/((?i)AB(?-i)C|D)E/
3704*22dc650dSSadaf Ebrahimi    abCE
3705*22dc650dSSadaf Ebrahimi    DE
3706*22dc650dSSadaf Ebrahimi\= Expect no match
3707*22dc650dSSadaf Ebrahimi    abcE
3708*22dc650dSSadaf Ebrahimi    abCe
3709*22dc650dSSadaf Ebrahimi    dE
3710*22dc650dSSadaf Ebrahimi    De
3711*22dc650dSSadaf Ebrahimi
3712*22dc650dSSadaf Ebrahimi/(.*)\d+\1/
3713*22dc650dSSadaf Ebrahimi    abc123abc
3714*22dc650dSSadaf Ebrahimi    abc123bc
3715*22dc650dSSadaf Ebrahimi
3716*22dc650dSSadaf Ebrahimi/(.*)\d+\1/s
3717*22dc650dSSadaf Ebrahimi    abc123abc
3718*22dc650dSSadaf Ebrahimi    abc123bc
3719*22dc650dSSadaf Ebrahimi
3720*22dc650dSSadaf Ebrahimi/((.*))\d+\1/
3721*22dc650dSSadaf Ebrahimi    abc123abc
3722*22dc650dSSadaf Ebrahimi    abc123bc
3723*22dc650dSSadaf Ebrahimi
3724*22dc650dSSadaf Ebrahimi# This tests for an IPv6 address in the form where it can have up to
3725*22dc650dSSadaf Ebrahimi# eight components, one and only one of which is empty. This must be
3726*22dc650dSSadaf Ebrahimi# an internal component.
3727*22dc650dSSadaf Ebrahimi
3728*22dc650dSSadaf Ebrahimi/^(?!:)                       # colon disallowed at start
3729*22dc650dSSadaf Ebrahimi  (?:                         # start of item
3730*22dc650dSSadaf Ebrahimi    (?: [0-9a-f]{1,4} |       # 1-4 hex digits or
3731*22dc650dSSadaf Ebrahimi    (?(1)0 | () ) )           # if null previously matched, fail; else null
3732*22dc650dSSadaf Ebrahimi    :                         # followed by colon
3733*22dc650dSSadaf Ebrahimi  ){1,7}                      # end item; 1-7 of them required
3734*22dc650dSSadaf Ebrahimi  [0-9a-f]{1,4} $             # final hex number at end of string
3735*22dc650dSSadaf Ebrahimi  (?(1)|.)                    # check that there was an empty component
3736*22dc650dSSadaf Ebrahimi  /ix
3737*22dc650dSSadaf Ebrahimi    a123::a123
3738*22dc650dSSadaf Ebrahimi    a123:b342::abcd
3739*22dc650dSSadaf Ebrahimi    a123:b342::324e:abcd
3740*22dc650dSSadaf Ebrahimi    a123:ddde:b342::324e:abcd
3741*22dc650dSSadaf Ebrahimi    a123:ddde:b342::324e:dcba:abcd
3742*22dc650dSSadaf Ebrahimi    a123:ddde:9999:b342::324e:dcba:abcd
3743*22dc650dSSadaf Ebrahimi\= Expect no match
3744*22dc650dSSadaf Ebrahimi    1:2:3:4:5:6:7:8
3745*22dc650dSSadaf Ebrahimi    a123:bce:ddde:9999:b342::324e:dcba:abcd
3746*22dc650dSSadaf Ebrahimi    a123::9999:b342::324e:dcba:abcd
3747*22dc650dSSadaf Ebrahimi    abcde:2:3:4:5:6:7:8
3748*22dc650dSSadaf Ebrahimi    ::1
3749*22dc650dSSadaf Ebrahimi    abcd:fee0:123::
3750*22dc650dSSadaf Ebrahimi    :1
3751*22dc650dSSadaf Ebrahimi    1:
3752*22dc650dSSadaf Ebrahimi
3753*22dc650dSSadaf Ebrahimi/[z\Qa-d]\E]/
3754*22dc650dSSadaf Ebrahimi    z
3755*22dc650dSSadaf Ebrahimi    a
3756*22dc650dSSadaf Ebrahimi    -
3757*22dc650dSSadaf Ebrahimi    d
3758*22dc650dSSadaf Ebrahimi    ]
3759*22dc650dSSadaf Ebrahimi\= Expect no match
3760*22dc650dSSadaf Ebrahimi    b
3761*22dc650dSSadaf Ebrahimi
3762*22dc650dSSadaf Ebrahimi/(a+)*b/
3763*22dc650dSSadaf Ebrahimi\= Expect no match
3764*22dc650dSSadaf Ebrahimi    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3765*22dc650dSSadaf Ebrahimi
3766*22dc650dSSadaf Ebrahimi/(?i)reg(?:ul(?:[a�]|ae)r|ex)/
3767*22dc650dSSadaf Ebrahimi    REGular
3768*22dc650dSSadaf Ebrahimi    regulaer
3769*22dc650dSSadaf Ebrahimi    Regex
3770*22dc650dSSadaf Ebrahimi    regul�r
3771*22dc650dSSadaf Ebrahimi
3772*22dc650dSSadaf Ebrahimi/����[�-��-�]+/
3773*22dc650dSSadaf Ebrahimi    �����
3774*22dc650dSSadaf Ebrahimi    �����
3775*22dc650dSSadaf Ebrahimi    �����
3776*22dc650dSSadaf Ebrahimi    �����
3777*22dc650dSSadaf Ebrahimi
3778*22dc650dSSadaf Ebrahimi/(?<=Z)X./
3779*22dc650dSSadaf Ebrahimi  \x84XAZXB
3780*22dc650dSSadaf Ebrahimi
3781*22dc650dSSadaf Ebrahimi/ab cd (?x) de fg/
3782*22dc650dSSadaf Ebrahimi    ab cd defg
3783*22dc650dSSadaf Ebrahimi
3784*22dc650dSSadaf Ebrahimi/ab cd(?x) de fg/
3785*22dc650dSSadaf Ebrahimi    ab cddefg
3786*22dc650dSSadaf Ebrahimi\= Expect no match
3787*22dc650dSSadaf Ebrahimi    abcddefg
3788*22dc650dSSadaf Ebrahimi
3789*22dc650dSSadaf Ebrahimi/(?<![^f]oo)(bar)/
3790*22dc650dSSadaf Ebrahimi    foobarX
3791*22dc650dSSadaf Ebrahimi\= Expect no match
3792*22dc650dSSadaf Ebrahimi    boobarX
3793*22dc650dSSadaf Ebrahimi
3794*22dc650dSSadaf Ebrahimi/(?<![^f])X/
3795*22dc650dSSadaf Ebrahimi    offX
3796*22dc650dSSadaf Ebrahimi\= Expect no match
3797*22dc650dSSadaf Ebrahimi    onyX
3798*22dc650dSSadaf Ebrahimi
3799*22dc650dSSadaf Ebrahimi/(?<=[^f])X/
3800*22dc650dSSadaf Ebrahimi    onyX
3801*22dc650dSSadaf Ebrahimi\= Expect no match
3802*22dc650dSSadaf Ebrahimi    offX
3803*22dc650dSSadaf Ebrahimi
3804*22dc650dSSadaf Ebrahimi/^/gm
3805*22dc650dSSadaf Ebrahimi    a\nb\nc\n
3806*22dc650dSSadaf Ebrahimi    \
3807*22dc650dSSadaf Ebrahimi
3808*22dc650dSSadaf Ebrahimi/(?<=C\n)^/gm
3809*22dc650dSSadaf Ebrahimi    A\nC\nC\n
3810*22dc650dSSadaf Ebrahimi
3811*22dc650dSSadaf Ebrahimi/(?:(?(1)a|b)(X))+/
3812*22dc650dSSadaf Ebrahimi    bXaX
3813*22dc650dSSadaf Ebrahimi
3814*22dc650dSSadaf Ebrahimi/(?:(?(1)\1a|b)(X|Y))+/
3815*22dc650dSSadaf Ebrahimi    bXXaYYaY
3816*22dc650dSSadaf Ebrahimi    bXYaXXaX
3817*22dc650dSSadaf Ebrahimi
3818*22dc650dSSadaf Ebrahimi/()()()()()()()()()(?:(?(10)\10a|b)(X|Y))+/
3819*22dc650dSSadaf Ebrahimi    bXXaYYaY
3820*22dc650dSSadaf Ebrahimi
3821*22dc650dSSadaf Ebrahimi/[[,abc,]+]/
3822*22dc650dSSadaf Ebrahimi    abc]
3823*22dc650dSSadaf Ebrahimi    a,b]
3824*22dc650dSSadaf Ebrahimi    [a,b,c]
3825*22dc650dSSadaf Ebrahimi
3826*22dc650dSSadaf Ebrahimi/(?-x: )/x
3827*22dc650dSSadaf Ebrahimi    A\x20B
3828*22dc650dSSadaf Ebrahimi
3829*22dc650dSSadaf Ebrahimi/(?x)(?-x: \s*#\s*)/
3830*22dc650dSSadaf Ebrahimi    A # B
3831*22dc650dSSadaf Ebrahimi\= Expect no match
3832*22dc650dSSadaf Ebrahimi    #
3833*22dc650dSSadaf Ebrahimi    A s#s B
3834*22dc650dSSadaf Ebrahimi
3835*22dc650dSSadaf Ebrahimi/(?x-is)(?:(?-ixs) \s*#\s*) include/
3836*22dc650dSSadaf Ebrahimi    A #include
3837*22dc650dSSadaf Ebrahimi\= Expect no match
3838*22dc650dSSadaf Ebrahimi    A#include
3839*22dc650dSSadaf Ebrahimi    A #Include
3840*22dc650dSSadaf Ebrahimi
3841*22dc650dSSadaf Ebrahimi/a*b*\w/
3842*22dc650dSSadaf Ebrahimi    aaabbbb
3843*22dc650dSSadaf Ebrahimi    aaaa
3844*22dc650dSSadaf Ebrahimi    a
3845*22dc650dSSadaf Ebrahimi
3846*22dc650dSSadaf Ebrahimi/a*b?\w/
3847*22dc650dSSadaf Ebrahimi    aaabbbb
3848*22dc650dSSadaf Ebrahimi    aaaa
3849*22dc650dSSadaf Ebrahimi    a
3850*22dc650dSSadaf Ebrahimi
3851*22dc650dSSadaf Ebrahimi/a*b{0,4}\w/
3852*22dc650dSSadaf Ebrahimi    aaabbbb
3853*22dc650dSSadaf Ebrahimi    aaaa
3854*22dc650dSSadaf Ebrahimi    a
3855*22dc650dSSadaf Ebrahimi
3856*22dc650dSSadaf Ebrahimi/a*b{0,}\w/
3857*22dc650dSSadaf Ebrahimi    aaabbbb
3858*22dc650dSSadaf Ebrahimi    aaaa
3859*22dc650dSSadaf Ebrahimi    a
3860*22dc650dSSadaf Ebrahimi
3861*22dc650dSSadaf Ebrahimi/a*\d*\w/
3862*22dc650dSSadaf Ebrahimi    0a
3863*22dc650dSSadaf Ebrahimi    a
3864*22dc650dSSadaf Ebrahimi
3865*22dc650dSSadaf Ebrahimi/a*b *\w/x
3866*22dc650dSSadaf Ebrahimi    a
3867*22dc650dSSadaf Ebrahimi
3868*22dc650dSSadaf Ebrahimi/a*b#comment
3869*22dc650dSSadaf Ebrahimi  *\w/x
3870*22dc650dSSadaf Ebrahimi    a
3871*22dc650dSSadaf Ebrahimi
3872*22dc650dSSadaf Ebrahimi/a* b *\w/x
3873*22dc650dSSadaf Ebrahimi    a
3874*22dc650dSSadaf Ebrahimi
3875*22dc650dSSadaf Ebrahimi/^\w+=.*(\\\n.*)*/
3876*22dc650dSSadaf Ebrahimi    abc=xyz\\\npqr
3877*22dc650dSSadaf Ebrahimi
3878*22dc650dSSadaf Ebrahimi/(?=(\w+))\1:/
3879*22dc650dSSadaf Ebrahimi    abcd:
3880*22dc650dSSadaf Ebrahimi
3881*22dc650dSSadaf Ebrahimi/^(?=(\w+))\1:/
3882*22dc650dSSadaf Ebrahimi    abcd:
3883*22dc650dSSadaf Ebrahimi
3884*22dc650dSSadaf Ebrahimi/^\Eabc/
3885*22dc650dSSadaf Ebrahimi    abc
3886*22dc650dSSadaf Ebrahimi
3887*22dc650dSSadaf Ebrahimi/^[\Eabc]/
3888*22dc650dSSadaf Ebrahimi    a
3889*22dc650dSSadaf Ebrahimi\= Expect no match
3890*22dc650dSSadaf Ebrahimi    E
3891*22dc650dSSadaf Ebrahimi
3892*22dc650dSSadaf Ebrahimi/^[a-\Ec]/
3893*22dc650dSSadaf Ebrahimi    b
3894*22dc650dSSadaf Ebrahimi\= Expect no match
3895*22dc650dSSadaf Ebrahimi    -
3896*22dc650dSSadaf Ebrahimi    E
3897*22dc650dSSadaf Ebrahimi
3898*22dc650dSSadaf Ebrahimi/^[a\E\E-\Ec]/
3899*22dc650dSSadaf Ebrahimi    b
3900*22dc650dSSadaf Ebrahimi\= Expect no match
3901*22dc650dSSadaf Ebrahimi    -
3902*22dc650dSSadaf Ebrahimi    E
3903*22dc650dSSadaf Ebrahimi
3904*22dc650dSSadaf Ebrahimi/^[\E\Qa\E-\Qz\E]+/
3905*22dc650dSSadaf Ebrahimi    b
3906*22dc650dSSadaf Ebrahimi\= Expect no match
3907*22dc650dSSadaf Ebrahimi    -
3908*22dc650dSSadaf Ebrahimi
3909*22dc650dSSadaf Ebrahimi/^[a\Q]bc\E]/
3910*22dc650dSSadaf Ebrahimi    a
3911*22dc650dSSadaf Ebrahimi    ]
3912*22dc650dSSadaf Ebrahimi    c
3913*22dc650dSSadaf Ebrahimi
3914*22dc650dSSadaf Ebrahimi/^[a-\Q\E]/
3915*22dc650dSSadaf Ebrahimi    a
3916*22dc650dSSadaf Ebrahimi    -
3917*22dc650dSSadaf Ebrahimi
3918*22dc650dSSadaf Ebrahimi/^(a()*)*/
3919*22dc650dSSadaf Ebrahimi    aaaa
3920*22dc650dSSadaf Ebrahimi
3921*22dc650dSSadaf Ebrahimi/^(?:a(?:(?:))*)*/
3922*22dc650dSSadaf Ebrahimi    aaaa
3923*22dc650dSSadaf Ebrahimi
3924*22dc650dSSadaf Ebrahimi/^(a()+)+/
3925*22dc650dSSadaf Ebrahimi    aaaa
3926*22dc650dSSadaf Ebrahimi
3927*22dc650dSSadaf Ebrahimi/^(?:a(?:(?:))+)+/
3928*22dc650dSSadaf Ebrahimi    aaaa
3929*22dc650dSSadaf Ebrahimi
3930*22dc650dSSadaf Ebrahimi/(a){0,3}(?(1)b|(c|))*D/
3931*22dc650dSSadaf Ebrahimi    abbD
3932*22dc650dSSadaf Ebrahimi    ccccD
3933*22dc650dSSadaf Ebrahimi    D
3934*22dc650dSSadaf Ebrahimi
3935*22dc650dSSadaf Ebrahimi/(a|)*\d/
3936*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3937*22dc650dSSadaf Ebrahimi\= Expect no match
3938*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3939*22dc650dSSadaf Ebrahimi
3940*22dc650dSSadaf Ebrahimi/(?>a|)*\d/
3941*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3942*22dc650dSSadaf Ebrahimi\= Expect no match
3943*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3944*22dc650dSSadaf Ebrahimi
3945*22dc650dSSadaf Ebrahimi/(?:a|)*\d/
3946*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa4
3947*22dc650dSSadaf Ebrahimi\= Expect no match
3948*22dc650dSSadaf Ebrahimi  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
3949*22dc650dSSadaf Ebrahimi
3950*22dc650dSSadaf Ebrahimi/\Z/g
3951*22dc650dSSadaf Ebrahimi  abc\n
3952*22dc650dSSadaf Ebrahimi
3953*22dc650dSSadaf Ebrahimi/^(?s)(?>.*)(?<!\n)/
3954*22dc650dSSadaf Ebrahimi  abc
3955*22dc650dSSadaf Ebrahimi\= Expect no match
3956*22dc650dSSadaf Ebrahimi  abc\n
3957*22dc650dSSadaf Ebrahimi
3958*22dc650dSSadaf Ebrahimi/^(?![^\n]*\n\z)/
3959*22dc650dSSadaf Ebrahimi  abc
3960*22dc650dSSadaf Ebrahimi\= Expect no match
3961*22dc650dSSadaf Ebrahimi  abc\n
3962*22dc650dSSadaf Ebrahimi
3963*22dc650dSSadaf Ebrahimi/\z(?<!\n)/
3964*22dc650dSSadaf Ebrahimi  abc
3965*22dc650dSSadaf Ebrahimi\= Expect no match
3966*22dc650dSSadaf Ebrahimi  abc\n
3967*22dc650dSSadaf Ebrahimi
3968*22dc650dSSadaf Ebrahimi/(.*(.)?)*/
3969*22dc650dSSadaf Ebrahimi    abcd
3970*22dc650dSSadaf Ebrahimi
3971*22dc650dSSadaf Ebrahimi/( (A | (?(1)0|) )*   )/x
3972*22dc650dSSadaf Ebrahimi    abcd
3973*22dc650dSSadaf Ebrahimi
3974*22dc650dSSadaf Ebrahimi/( ( (?(1)0|) )*   )/x
3975*22dc650dSSadaf Ebrahimi    abcd
3976*22dc650dSSadaf Ebrahimi
3977*22dc650dSSadaf Ebrahimi/(  (?(1)0|)*   )/x
3978*22dc650dSSadaf Ebrahimi    abcd
3979*22dc650dSSadaf Ebrahimi
3980*22dc650dSSadaf Ebrahimi/[[:abcd:xyz]]/
3981*22dc650dSSadaf Ebrahimi    a]
3982*22dc650dSSadaf Ebrahimi    :]
3983*22dc650dSSadaf Ebrahimi
3984*22dc650dSSadaf Ebrahimi/[abc[:x\]pqr]/
3985*22dc650dSSadaf Ebrahimi    a
3986*22dc650dSSadaf Ebrahimi    [
3987*22dc650dSSadaf Ebrahimi    :
3988*22dc650dSSadaf Ebrahimi    ]
3989*22dc650dSSadaf Ebrahimi    p
3990*22dc650dSSadaf Ebrahimi
3991*22dc650dSSadaf Ebrahimi/.*[op][xyz]/
3992*22dc650dSSadaf Ebrahimi\= Expect no match
3993*22dc650dSSadaf Ebrahimi    fooabcfoo
3994*22dc650dSSadaf Ebrahimi
3995*22dc650dSSadaf Ebrahimi/(?(?=.*b)b|^)/
3996*22dc650dSSadaf Ebrahimi   adc
3997*22dc650dSSadaf Ebrahimi   abc
3998*22dc650dSSadaf Ebrahimi
3999*22dc650dSSadaf Ebrahimi/(?(?=^.*b)b|^)/
4000*22dc650dSSadaf Ebrahimi   adc
4001*22dc650dSSadaf Ebrahimi\= Expect no match
4002*22dc650dSSadaf Ebrahimi   abc
4003*22dc650dSSadaf Ebrahimi
4004*22dc650dSSadaf Ebrahimi/(?(?=.*b)b|^)*/
4005*22dc650dSSadaf Ebrahimi   adc
4006*22dc650dSSadaf Ebrahimi   abc
4007*22dc650dSSadaf Ebrahimi
4008*22dc650dSSadaf Ebrahimi/(?(?=.*b)b|^)+/
4009*22dc650dSSadaf Ebrahimi   adc
4010*22dc650dSSadaf Ebrahimi   abc
4011*22dc650dSSadaf Ebrahimi
4012*22dc650dSSadaf Ebrahimi/(?(?=b).*b|^d)/
4013*22dc650dSSadaf Ebrahimi    abc
4014*22dc650dSSadaf Ebrahimi
4015*22dc650dSSadaf Ebrahimi/(?(?=.*b).*b|^d)/
4016*22dc650dSSadaf Ebrahimi    abc
4017*22dc650dSSadaf Ebrahimi
4018*22dc650dSSadaf Ebrahimi/^%((?(?=[a])[^%])|b)*%$/
4019*22dc650dSSadaf Ebrahimi    %ab%
4020*22dc650dSSadaf Ebrahimi
4021*22dc650dSSadaf Ebrahimi/(?i)a(?-i)b|c/
4022*22dc650dSSadaf Ebrahimi    XabX
4023*22dc650dSSadaf Ebrahimi    XAbX
4024*22dc650dSSadaf Ebrahimi    CcC
4025*22dc650dSSadaf Ebrahimi\= Expect no match
4026*22dc650dSSadaf Ebrahimi    XABX
4027*22dc650dSSadaf Ebrahimi
4028*22dc650dSSadaf Ebrahimi/[\x00-\xff\s]+/
4029*22dc650dSSadaf Ebrahimi    \x0a\x0b\x0c\x0d
4030*22dc650dSSadaf Ebrahimi
4031*22dc650dSSadaf Ebrahimi/(abc)\1/i
4032*22dc650dSSadaf Ebrahimi\= Expect no match
4033*22dc650dSSadaf Ebrahimi   abc
4034*22dc650dSSadaf Ebrahimi
4035*22dc650dSSadaf Ebrahimi/(abc)\1/
4036*22dc650dSSadaf Ebrahimi\= Expect no match
4037*22dc650dSSadaf Ebrahimi   abc
4038*22dc650dSSadaf Ebrahimi
4039*22dc650dSSadaf Ebrahimi/[^a]*/i
4040*22dc650dSSadaf Ebrahimi    12abc
4041*22dc650dSSadaf Ebrahimi    12ABC
4042*22dc650dSSadaf Ebrahimi
4043*22dc650dSSadaf Ebrahimi/[^a]*+/i
4044*22dc650dSSadaf Ebrahimi    12abc
4045*22dc650dSSadaf Ebrahimi    12ABC
4046*22dc650dSSadaf Ebrahimi
4047*22dc650dSSadaf Ebrahimi/[^a]*?X/i
4048*22dc650dSSadaf Ebrahimi\= Expect no match
4049*22dc650dSSadaf Ebrahimi    12abc
4050*22dc650dSSadaf Ebrahimi    12ABC
4051*22dc650dSSadaf Ebrahimi
4052*22dc650dSSadaf Ebrahimi/[^a]+?X/i
4053*22dc650dSSadaf Ebrahimi\= Expect no match
4054*22dc650dSSadaf Ebrahimi    12abc
4055*22dc650dSSadaf Ebrahimi    12ABC
4056*22dc650dSSadaf Ebrahimi
4057*22dc650dSSadaf Ebrahimi/[^a]?X/i
4058*22dc650dSSadaf Ebrahimi    12aXbcX
4059*22dc650dSSadaf Ebrahimi    12AXBCX
4060*22dc650dSSadaf Ebrahimi    BCX
4061*22dc650dSSadaf Ebrahimi
4062*22dc650dSSadaf Ebrahimi/[^a]??X/i
4063*22dc650dSSadaf Ebrahimi    12aXbcX
4064*22dc650dSSadaf Ebrahimi    12AXBCX
4065*22dc650dSSadaf Ebrahimi    BCX
4066*22dc650dSSadaf Ebrahimi
4067*22dc650dSSadaf Ebrahimi/[^a]?+X/i
4068*22dc650dSSadaf Ebrahimi    12aXbcX
4069*22dc650dSSadaf Ebrahimi    12AXBCX
4070*22dc650dSSadaf Ebrahimi    BCX
4071*22dc650dSSadaf Ebrahimi
4072*22dc650dSSadaf Ebrahimi/[^a]{2,3}/i
4073*22dc650dSSadaf Ebrahimi    abcdef
4074*22dc650dSSadaf Ebrahimi    ABCDEF
4075*22dc650dSSadaf Ebrahimi
4076*22dc650dSSadaf Ebrahimi/[^a]{2,3}?/i
4077*22dc650dSSadaf Ebrahimi    abcdef
4078*22dc650dSSadaf Ebrahimi    ABCDEF
4079*22dc650dSSadaf Ebrahimi
4080*22dc650dSSadaf Ebrahimi/[^a]{2,3}+/i
4081*22dc650dSSadaf Ebrahimi    abcdef
4082*22dc650dSSadaf Ebrahimi    ABCDEF
4083*22dc650dSSadaf Ebrahimi
4084*22dc650dSSadaf Ebrahimi/((a|)+)+Z/
4085*22dc650dSSadaf Ebrahimi    Z
4086*22dc650dSSadaf Ebrahimi
4087*22dc650dSSadaf Ebrahimi/(a)b|(a)c/
4088*22dc650dSSadaf Ebrahimi    ac
4089*22dc650dSSadaf Ebrahimi
4090*22dc650dSSadaf Ebrahimi/(?>(a))b|(a)c/
4091*22dc650dSSadaf Ebrahimi    ac
4092*22dc650dSSadaf Ebrahimi
4093*22dc650dSSadaf Ebrahimi/(?=(a))ab|(a)c/
4094*22dc650dSSadaf Ebrahimi    ac
4095*22dc650dSSadaf Ebrahimi
4096*22dc650dSSadaf Ebrahimi/((?>(a))b|(a)c)/
4097*22dc650dSSadaf Ebrahimi    ac
4098*22dc650dSSadaf Ebrahimi
4099*22dc650dSSadaf Ebrahimi/((?>(a))b|(a)c)++/
4100*22dc650dSSadaf Ebrahimi    ac
4101*22dc650dSSadaf Ebrahimi
4102*22dc650dSSadaf Ebrahimi/(?:(?>(a))b|(a)c)++/
4103*22dc650dSSadaf Ebrahimi    ac
4104*22dc650dSSadaf Ebrahimi
4105*22dc650dSSadaf Ebrahimi/(?=(?>(a))b|(a)c)(..)/
4106*22dc650dSSadaf Ebrahimi    ac
4107*22dc650dSSadaf Ebrahimi
4108*22dc650dSSadaf Ebrahimi/(?>(?>(a))b|(a)c)/
4109*22dc650dSSadaf Ebrahimi    ac
4110*22dc650dSSadaf Ebrahimi
4111*22dc650dSSadaf Ebrahimi/(?:(?>([ab])))+a=/aftertext
4112*22dc650dSSadaf Ebrahimi    =ba=
4113*22dc650dSSadaf Ebrahimi
4114*22dc650dSSadaf Ebrahimi/(?>([ab]))+a=/aftertext
4115*22dc650dSSadaf Ebrahimi    =ba=
4116*22dc650dSSadaf Ebrahimi
4117*22dc650dSSadaf Ebrahimi/((?>(a+)b)+(aabab))/
4118*22dc650dSSadaf Ebrahimi    aaaabaaabaabab
4119*22dc650dSSadaf Ebrahimi
4120*22dc650dSSadaf Ebrahimi/(?>a+|ab)+?c/
4121*22dc650dSSadaf Ebrahimi\= Expect no match
4122*22dc650dSSadaf Ebrahimi    aabc
4123*22dc650dSSadaf Ebrahimi
4124*22dc650dSSadaf Ebrahimi/(?>a+|ab)+c/
4125*22dc650dSSadaf Ebrahimi\= Expect no match
4126*22dc650dSSadaf Ebrahimi    aabc
4127*22dc650dSSadaf Ebrahimi
4128*22dc650dSSadaf Ebrahimi/(?:a+|ab)+c/
4129*22dc650dSSadaf Ebrahimi    aabc
4130*22dc650dSSadaf Ebrahimi
4131*22dc650dSSadaf Ebrahimi/(?(?=(a))a)/
4132*22dc650dSSadaf Ebrahimi    a
4133*22dc650dSSadaf Ebrahimi
4134*22dc650dSSadaf Ebrahimi/(?(?=(a))a)(b)/
4135*22dc650dSSadaf Ebrahimi    ab
4136*22dc650dSSadaf Ebrahimi
4137*22dc650dSSadaf Ebrahimi/^(?:a|ab)++c/
4138*22dc650dSSadaf Ebrahimi\= Expect no match
4139*22dc650dSSadaf Ebrahimi    aaaabc
4140*22dc650dSSadaf Ebrahimi
4141*22dc650dSSadaf Ebrahimi/^(?>a|ab)++c/
4142*22dc650dSSadaf Ebrahimi\= Expect no match
4143*22dc650dSSadaf Ebrahimi    aaaabc
4144*22dc650dSSadaf Ebrahimi
4145*22dc650dSSadaf Ebrahimi/^(?:a|ab)+c/
4146*22dc650dSSadaf Ebrahimi    aaaabc
4147*22dc650dSSadaf Ebrahimi
4148*22dc650dSSadaf Ebrahimi/(?=abc){3}abc/aftertext
4149*22dc650dSSadaf Ebrahimi    abcabcabc
4150*22dc650dSSadaf Ebrahimi\= Expect no match
4151*22dc650dSSadaf Ebrahimi    xyz
4152*22dc650dSSadaf Ebrahimi
4153*22dc650dSSadaf Ebrahimi/(?=abc)+abc/aftertext
4154*22dc650dSSadaf Ebrahimi    abcabcabc
4155*22dc650dSSadaf Ebrahimi\= Expect no match
4156*22dc650dSSadaf Ebrahimi    xyz
4157*22dc650dSSadaf Ebrahimi
4158*22dc650dSSadaf Ebrahimi/(?=abc)++abc/aftertext
4159*22dc650dSSadaf Ebrahimi    abcabcabc
4160*22dc650dSSadaf Ebrahimi\= Expect no match
4161*22dc650dSSadaf Ebrahimi    xyz
4162*22dc650dSSadaf Ebrahimi
4163*22dc650dSSadaf Ebrahimi/(?=abc){0}xyz/
4164*22dc650dSSadaf Ebrahimi    xyz
4165*22dc650dSSadaf Ebrahimi
4166*22dc650dSSadaf Ebrahimi/(?=abc){1}xyz/
4167*22dc650dSSadaf Ebrahimi\= Expect no match
4168*22dc650dSSadaf Ebrahimi    xyz
4169*22dc650dSSadaf Ebrahimi
4170*22dc650dSSadaf Ebrahimi/(?=(a))?./
4171*22dc650dSSadaf Ebrahimi    ab
4172*22dc650dSSadaf Ebrahimi    bc
4173*22dc650dSSadaf Ebrahimi
4174*22dc650dSSadaf Ebrahimi/(?=(a))??./
4175*22dc650dSSadaf Ebrahimi    ab
4176*22dc650dSSadaf Ebrahimi    bc
4177*22dc650dSSadaf Ebrahimi
4178*22dc650dSSadaf Ebrahimi/^(?=(?1))?[az]([abc])d/
4179*22dc650dSSadaf Ebrahimi    abd
4180*22dc650dSSadaf Ebrahimi    zcdxx
4181*22dc650dSSadaf Ebrahimi
4182*22dc650dSSadaf Ebrahimi/^(?!a){0}\w+/
4183*22dc650dSSadaf Ebrahimi    aaaaa
4184*22dc650dSSadaf Ebrahimi
4185*22dc650dSSadaf Ebrahimi/(?<=(abc))?xyz/
4186*22dc650dSSadaf Ebrahimi    abcxyz
4187*22dc650dSSadaf Ebrahimi    pqrxyz
4188*22dc650dSSadaf Ebrahimi
4189*22dc650dSSadaf Ebrahimi/^[\g<a>]+/
4190*22dc650dSSadaf Ebrahimi    ggg<<<aaa>>>
4191*22dc650dSSadaf Ebrahimi\= Expect no match
4192*22dc650dSSadaf Ebrahimi    \\ga
4193*22dc650dSSadaf Ebrahimi
4194*22dc650dSSadaf Ebrahimi/^[\ga]+/
4195*22dc650dSSadaf Ebrahimi    gggagagaxyz
4196*22dc650dSSadaf Ebrahimi
4197*22dc650dSSadaf Ebrahimi/^[:a[:digit:]]+/
4198*22dc650dSSadaf Ebrahimi    aaaa444:::Z
4199*22dc650dSSadaf Ebrahimi
4200*22dc650dSSadaf Ebrahimi/^[:a[:digit:]:b]+/
4201*22dc650dSSadaf Ebrahimi    aaaa444:::bbbZ
4202*22dc650dSSadaf Ebrahimi
4203*22dc650dSSadaf Ebrahimi/[:a]xxx[b:]/
4204*22dc650dSSadaf Ebrahimi     :xxx:
4205*22dc650dSSadaf Ebrahimi
4206*22dc650dSSadaf Ebrahimi/(?<=a{2})b/i
4207*22dc650dSSadaf Ebrahimi    xaabc
4208*22dc650dSSadaf Ebrahimi\= Expect no match
4209*22dc650dSSadaf Ebrahimi    xabc
4210*22dc650dSSadaf Ebrahimi
4211*22dc650dSSadaf Ebrahimi/(?<!a{2})b/i
4212*22dc650dSSadaf Ebrahimi    xabc
4213*22dc650dSSadaf Ebrahimi\= Expect no match
4214*22dc650dSSadaf Ebrahimi    xaabc
4215*22dc650dSSadaf Ebrahimi
4216*22dc650dSSadaf Ebrahimi/(?<=a\h)c/
4217*22dc650dSSadaf Ebrahimi    xa c
4218*22dc650dSSadaf Ebrahimi
4219*22dc650dSSadaf Ebrahimi/(?<=[^a]{2})b/
4220*22dc650dSSadaf Ebrahimi    axxbc
4221*22dc650dSSadaf Ebrahimi    aAAbc
4222*22dc650dSSadaf Ebrahimi\= Expect no match
4223*22dc650dSSadaf Ebrahimi    xaabc
4224*22dc650dSSadaf Ebrahimi
4225*22dc650dSSadaf Ebrahimi/(?<=[^a]{2})b/i
4226*22dc650dSSadaf Ebrahimi    axxbc
4227*22dc650dSSadaf Ebrahimi\= Expect no match
4228*22dc650dSSadaf Ebrahimi    aAAbc
4229*22dc650dSSadaf Ebrahimi    xaabc
4230*22dc650dSSadaf Ebrahimi
4231*22dc650dSSadaf Ebrahimi/(?<=a\H)c/
4232*22dc650dSSadaf Ebrahimi    abc
4233*22dc650dSSadaf Ebrahimi
4234*22dc650dSSadaf Ebrahimi/(?<=a\V)c/
4235*22dc650dSSadaf Ebrahimi    abc
4236*22dc650dSSadaf Ebrahimi
4237*22dc650dSSadaf Ebrahimi/(?<=a\v)c/
4238*22dc650dSSadaf Ebrahimi    a\nc
4239*22dc650dSSadaf Ebrahimi
4240*22dc650dSSadaf Ebrahimi/(?(?=c)c|d)++Y/
4241*22dc650dSSadaf Ebrahimi    XcccddYX
4242*22dc650dSSadaf Ebrahimi
4243*22dc650dSSadaf Ebrahimi/(?(?=c)c|d)*+Y/
4244*22dc650dSSadaf Ebrahimi    XcccddYX
4245*22dc650dSSadaf Ebrahimi
4246*22dc650dSSadaf Ebrahimi/^(a{2,3}){2,}+a/
4247*22dc650dSSadaf Ebrahimi    aaaaaaa
4248*22dc650dSSadaf Ebrahimi\= Expect no match
4249*22dc650dSSadaf Ebrahimi    aaaaaa
4250*22dc650dSSadaf Ebrahimi    aaaaaaaaa
4251*22dc650dSSadaf Ebrahimi
4252*22dc650dSSadaf Ebrahimi/^(a{2,3})++a/
4253*22dc650dSSadaf Ebrahimi\= Expect no match
4254*22dc650dSSadaf Ebrahimi    aaaaaa
4255*22dc650dSSadaf Ebrahimi
4256*22dc650dSSadaf Ebrahimi/^(a{2,3})*+a/
4257*22dc650dSSadaf Ebrahimi\= Expect no match
4258*22dc650dSSadaf Ebrahimi    aaaaaa
4259*22dc650dSSadaf Ebrahimi
4260*22dc650dSSadaf Ebrahimi/\H\h\V\v/
4261*22dc650dSSadaf Ebrahimi    X X\x0a
4262*22dc650dSSadaf Ebrahimi    X\x09X\x0b
4263*22dc650dSSadaf Ebrahimi\= Expect no match
4264*22dc650dSSadaf Ebrahimi    \xa0 X\x0a
4265*22dc650dSSadaf Ebrahimi
4266*22dc650dSSadaf Ebrahimi/\H*\h+\V?\v{3,4}/
4267*22dc650dSSadaf Ebrahimi    \x09\x20\xa0X\x0a\x0b\x0c\x0d\x0a
4268*22dc650dSSadaf Ebrahimi    \x09\x20\xa0\x0a\x0b\x0c\x0d\x0a
4269*22dc650dSSadaf Ebrahimi    \x09\x20\xa0\x0a\x0b\x0c
4270*22dc650dSSadaf Ebrahimi\= Expect no match
4271*22dc650dSSadaf Ebrahimi    \x09\x20\xa0\x0a\x0b
4272*22dc650dSSadaf Ebrahimi
4273*22dc650dSSadaf Ebrahimi/\H{3,4}/
4274*22dc650dSSadaf Ebrahimi    XY  ABCDE
4275*22dc650dSSadaf Ebrahimi    XY  PQR ST
4276*22dc650dSSadaf Ebrahimi
4277*22dc650dSSadaf Ebrahimi/.\h{3,4}./
4278*22dc650dSSadaf Ebrahimi    XY  AB    PQRS
4279*22dc650dSSadaf Ebrahimi
4280*22dc650dSSadaf Ebrahimi/\h*X\h?\H+Y\H?Z/
4281*22dc650dSSadaf Ebrahimi    >XNNNYZ
4282*22dc650dSSadaf Ebrahimi    >  X NYQZ
4283*22dc650dSSadaf Ebrahimi\= Expect no match
4284*22dc650dSSadaf Ebrahimi    >XYZ
4285*22dc650dSSadaf Ebrahimi    >  X NY Z
4286*22dc650dSSadaf Ebrahimi
4287*22dc650dSSadaf Ebrahimi/\v*X\v?Y\v+Z\V*\x0a\V+\x0b\V{2,3}\x0c/
4288*22dc650dSSadaf Ebrahimi    >XY\x0aZ\x0aA\x0bNN\x0c
4289*22dc650dSSadaf Ebrahimi    >\x0a\x0dX\x0aY\x0a\x0bZZZ\x0aAAA\x0bNNN\x0c
4290*22dc650dSSadaf Ebrahimi
4291*22dc650dSSadaf Ebrahimi/(foo)\Kbar/
4292*22dc650dSSadaf Ebrahimi    foobar
4293*22dc650dSSadaf Ebrahimi
4294*22dc650dSSadaf Ebrahimi/(foo)(\Kbar|baz)/
4295*22dc650dSSadaf Ebrahimi    foobar
4296*22dc650dSSadaf Ebrahimi    foobaz
4297*22dc650dSSadaf Ebrahimi
4298*22dc650dSSadaf Ebrahimi/(foo\Kbar)baz/
4299*22dc650dSSadaf Ebrahimi    foobarbaz
4300*22dc650dSSadaf Ebrahimi
4301*22dc650dSSadaf Ebrahimi/abc\K|def\K/g,aftertext
4302*22dc650dSSadaf Ebrahimi    Xabcdefghi
4303*22dc650dSSadaf Ebrahimi
4304*22dc650dSSadaf Ebrahimi/ab\Kc|de\Kf/g,aftertext
4305*22dc650dSSadaf Ebrahimi    Xabcdefghi
4306*22dc650dSSadaf Ebrahimi
4307*22dc650dSSadaf Ebrahimi/(?=C)/g,aftertext
4308*22dc650dSSadaf Ebrahimi    ABCDECBA
4309*22dc650dSSadaf Ebrahimi
4310*22dc650dSSadaf Ebrahimi/^abc\K/aftertext
4311*22dc650dSSadaf Ebrahimi    abcdef
4312*22dc650dSSadaf Ebrahimi\= Expect no match
4313*22dc650dSSadaf Ebrahimi    defabcxyz
4314*22dc650dSSadaf Ebrahimi
4315*22dc650dSSadaf Ebrahimi/^(a(b))\1\g1\g{1}\g-1\g{-1}\g{-2}Z/
4316*22dc650dSSadaf Ebrahimi    ababababbbabZXXXX
4317*22dc650dSSadaf Ebrahimi
4318*22dc650dSSadaf Ebrahimi/(?<A>tom|bon)-\g{A}/
4319*22dc650dSSadaf Ebrahimi    tom-tom
4320*22dc650dSSadaf Ebrahimi    bon-bon
4321*22dc650dSSadaf Ebrahimi
4322*22dc650dSSadaf Ebrahimi/(^(a|b\g{-1}))/
4323*22dc650dSSadaf Ebrahimi\= Expect no match
4324*22dc650dSSadaf Ebrahimi    bacxxx
4325*22dc650dSSadaf Ebrahimi
4326*22dc650dSSadaf Ebrahimi/(?|(abc)|(xyz))\1/
4327*22dc650dSSadaf Ebrahimi    abcabc
4328*22dc650dSSadaf Ebrahimi    xyzxyz
4329*22dc650dSSadaf Ebrahimi\= Expect no match
4330*22dc650dSSadaf Ebrahimi    abcxyz
4331*22dc650dSSadaf Ebrahimi    xyzabc
4332*22dc650dSSadaf Ebrahimi
4333*22dc650dSSadaf Ebrahimi/(?|(abc)|(xyz))(?1)/
4334*22dc650dSSadaf Ebrahimi    abcabc
4335*22dc650dSSadaf Ebrahimi    xyzabc
4336*22dc650dSSadaf Ebrahimi\= Expect no match
4337*22dc650dSSadaf Ebrahimi    xyzxyz
4338*22dc650dSSadaf Ebrahimi
4339*22dc650dSSadaf Ebrahimi/^X(?5)(a)(?|(b)|(q))(c)(d)(Y)/
4340*22dc650dSSadaf Ebrahimi    XYabcdY
4341*22dc650dSSadaf Ebrahimi
4342*22dc650dSSadaf Ebrahimi/^X(?7)(a)(?|(b|(r)(s))|(q))(c)(d)(Y)/
4343*22dc650dSSadaf Ebrahimi    XYabcdY
4344*22dc650dSSadaf Ebrahimi
4345*22dc650dSSadaf Ebrahimi/^X(?7)(a)(?|(b|(?|(r)|(t))(s))|(q))(c)(d)(Y)/
4346*22dc650dSSadaf Ebrahimi    XYabcdY
4347*22dc650dSSadaf Ebrahimi
4348*22dc650dSSadaf Ebrahimi/(?'abc'\w+):\k<abc>{2}/
4349*22dc650dSSadaf Ebrahimi    a:aaxyz
4350*22dc650dSSadaf Ebrahimi    ab:ababxyz
4351*22dc650dSSadaf Ebrahimi\= Expect no match
4352*22dc650dSSadaf Ebrahimi    a:axyz
4353*22dc650dSSadaf Ebrahimi    ab:abxyz
4354*22dc650dSSadaf Ebrahimi
4355*22dc650dSSadaf Ebrahimi/(?'abc'\w+):\g{abc}{2}/
4356*22dc650dSSadaf Ebrahimi    a:aaxyz
4357*22dc650dSSadaf Ebrahimi    ab:ababxyz
4358*22dc650dSSadaf Ebrahimi\= Expect no match
4359*22dc650dSSadaf Ebrahimi    a:axyz
4360*22dc650dSSadaf Ebrahimi    ab:abxyz
4361*22dc650dSSadaf Ebrahimi
4362*22dc650dSSadaf Ebrahimi/^(?<ab>a)? (?(<ab>)b|c) (?('ab')d|e)/x
4363*22dc650dSSadaf Ebrahimi    abd
4364*22dc650dSSadaf Ebrahimi    ce
4365*22dc650dSSadaf Ebrahimi
4366*22dc650dSSadaf Ebrahimi/^(a.)\g-1Z/
4367*22dc650dSSadaf Ebrahimi    aXaXZ
4368*22dc650dSSadaf Ebrahimi
4369*22dc650dSSadaf Ebrahimi/^(a.)\g{-1}Z/
4370*22dc650dSSadaf Ebrahimi    aXaXZ
4371*22dc650dSSadaf Ebrahimi
4372*22dc650dSSadaf Ebrahimi/^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /x
4373*22dc650dSSadaf Ebrahimi    abcd
4374*22dc650dSSadaf Ebrahimi
4375*22dc650dSSadaf Ebrahimi/(?<all>(?:(?:a(?&all))|(b))(c?))/
4376*22dc650dSSadaf Ebrahimi    aabc
4377*22dc650dSSadaf Ebrahimi
4378*22dc650dSSadaf Ebrahimi/(a(b)|(c))(?1)/
4379*22dc650dSSadaf Ebrahimi    abc
4380*22dc650dSSadaf Ebrahimi    cab
4381*22dc650dSSadaf Ebrahimi
4382*22dc650dSSadaf Ebrahimi/(?1)(a(b)|(c))/
4383*22dc650dSSadaf Ebrahimi    abc
4384*22dc650dSSadaf Ebrahimi    cab
4385*22dc650dSSadaf Ebrahimi
4386*22dc650dSSadaf Ebrahimi/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
4387*22dc650dSSadaf Ebrahimi  (?(DEFINE)
4388*22dc650dSSadaf Ebrahimi  (?<NAME_PAT>[a-z]+)
4389*22dc650dSSadaf Ebrahimi  (?<ADDRESS_PAT>\d+)
4390*22dc650dSSadaf Ebrahimi  )/x
4391*22dc650dSSadaf Ebrahimi    metcalfe 33
4392*22dc650dSSadaf Ebrahimi
4393*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
4394*22dc650dSSadaf Ebrahimi    1.2.3.4
4395*22dc650dSSadaf Ebrahimi    131.111.10.206
4396*22dc650dSSadaf Ebrahimi    10.0.0.0
4397*22dc650dSSadaf Ebrahimi\= Expect no match
4398*22dc650dSSadaf Ebrahimi    10.6
4399*22dc650dSSadaf Ebrahimi    455.3.4.5
4400*22dc650dSSadaf Ebrahimi
4401*22dc650dSSadaf Ebrahimi/\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
4402*22dc650dSSadaf Ebrahimi    1.2.3.4
4403*22dc650dSSadaf Ebrahimi    131.111.10.206
4404*22dc650dSSadaf Ebrahimi    10.0.0.0
4405*22dc650dSSadaf Ebrahimi\= Expect no match
4406*22dc650dSSadaf Ebrahimi    10.6
4407*22dc650dSSadaf Ebrahimi    455.3.4.5
4408*22dc650dSSadaf Ebrahimi
4409*22dc650dSSadaf Ebrahimi/^(\w++|\s++)*$/
4410*22dc650dSSadaf Ebrahimi    now is the time for all good men to come to the aid of the party
4411*22dc650dSSadaf Ebrahimi\= Expect no match
4412*22dc650dSSadaf Ebrahimi    this is not a line with only words and spaces!
4413*22dc650dSSadaf Ebrahimi
4414*22dc650dSSadaf Ebrahimi/(\d++)(\w)/
4415*22dc650dSSadaf Ebrahimi    12345a
4416*22dc650dSSadaf Ebrahimi\= Expect no match
4417*22dc650dSSadaf Ebrahimi    12345+
4418*22dc650dSSadaf Ebrahimi
4419*22dc650dSSadaf Ebrahimi/a++b/
4420*22dc650dSSadaf Ebrahimi    aaab
4421*22dc650dSSadaf Ebrahimi
4422*22dc650dSSadaf Ebrahimi/(a++b)/
4423*22dc650dSSadaf Ebrahimi    aaab
4424*22dc650dSSadaf Ebrahimi
4425*22dc650dSSadaf Ebrahimi/(a++)b/
4426*22dc650dSSadaf Ebrahimi    aaab
4427*22dc650dSSadaf Ebrahimi
4428*22dc650dSSadaf Ebrahimi/([^()]++|\([^()]*\))+/
4429*22dc650dSSadaf Ebrahimi    ((abc(ade)ufh()()x
4430*22dc650dSSadaf Ebrahimi
4431*22dc650dSSadaf Ebrahimi/\(([^()]++|\([^()]+\))+\)/
4432*22dc650dSSadaf Ebrahimi    (abc)
4433*22dc650dSSadaf Ebrahimi    (abc(def)xyz)
4434*22dc650dSSadaf Ebrahimi\= Expect no match
4435*22dc650dSSadaf Ebrahimi    ((()aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
4436*22dc650dSSadaf Ebrahimi
4437*22dc650dSSadaf Ebrahimi/^([^()]|\((?1)*\))*$/
4438*22dc650dSSadaf Ebrahimi    abc
4439*22dc650dSSadaf Ebrahimi    a(b)c
4440*22dc650dSSadaf Ebrahimi    a(b(c))d
4441*22dc650dSSadaf Ebrahimi\= Expect no match)
4442*22dc650dSSadaf Ebrahimi    a(b(c)d
4443*22dc650dSSadaf Ebrahimi
4444*22dc650dSSadaf Ebrahimi/^>abc>([^()]|\((?1)*\))*<xyz<$/
4445*22dc650dSSadaf Ebrahimi   >abc>123<xyz<
4446*22dc650dSSadaf Ebrahimi   >abc>1(2)3<xyz<
4447*22dc650dSSadaf Ebrahimi   >abc>(1(2)3)<xyz<
4448*22dc650dSSadaf Ebrahimi
4449*22dc650dSSadaf Ebrahimi/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
4450*22dc650dSSadaf Ebrahimi    1221
4451*22dc650dSSadaf Ebrahimi    Satanoscillatemymetallicsonatas
4452*22dc650dSSadaf Ebrahimi    AmanaplanacanalPanama
4453*22dc650dSSadaf Ebrahimi    AblewasIereIsawElba
4454*22dc650dSSadaf Ebrahimi\= Expect no match
4455*22dc650dSSadaf Ebrahimi    Thequickbrownfox
4456*22dc650dSSadaf Ebrahimi
4457*22dc650dSSadaf Ebrahimi/^(\d+|\((?1)([+*-])(?1)\)|-(?1))$/
4458*22dc650dSSadaf Ebrahimi    12
4459*22dc650dSSadaf Ebrahimi    (((2+2)*-3)-7)
4460*22dc650dSSadaf Ebrahimi    -12
4461*22dc650dSSadaf Ebrahimi\= Expect no match
4462*22dc650dSSadaf Ebrahimi    ((2+2)*-3)-7)
4463*22dc650dSSadaf Ebrahimi
4464*22dc650dSSadaf Ebrahimi/^(x(y|(?1){2})z)/
4465*22dc650dSSadaf Ebrahimi    xyz
4466*22dc650dSSadaf Ebrahimi    xxyzxyzz
4467*22dc650dSSadaf Ebrahimi\= Expect no match
4468*22dc650dSSadaf Ebrahimi    xxyzz
4469*22dc650dSSadaf Ebrahimi    xxyzxyzxyzz
4470*22dc650dSSadaf Ebrahimi
4471*22dc650dSSadaf Ebrahimi/((< (?: (?(R) \d++  | [^<>]*+) | (?2)) * >))/x
4472*22dc650dSSadaf Ebrahimi    <>
4473*22dc650dSSadaf Ebrahimi    <abcd>
4474*22dc650dSSadaf Ebrahimi    <abc <123> hij>
4475*22dc650dSSadaf Ebrahimi    <abc <def> hij>
4476*22dc650dSSadaf Ebrahimi    <abc<>def>
4477*22dc650dSSadaf Ebrahimi    <abc<>
4478*22dc650dSSadaf Ebrahimi\= Expect no match
4479*22dc650dSSadaf Ebrahimi    <abc
4480*22dc650dSSadaf Ebrahimi
4481*22dc650dSSadaf Ebrahimi/^a+(*FAIL)/
4482*22dc650dSSadaf Ebrahimi\= Expect no match
4483*22dc650dSSadaf Ebrahimi    aaaaaa
4484*22dc650dSSadaf Ebrahimi
4485*22dc650dSSadaf Ebrahimi/a+b?c+(*FAIL)/
4486*22dc650dSSadaf Ebrahimi\= Expect no match
4487*22dc650dSSadaf Ebrahimi    aaabccc
4488*22dc650dSSadaf Ebrahimi
4489*22dc650dSSadaf Ebrahimi/a+b?(*PRUNE)c+(*FAIL)/
4490*22dc650dSSadaf Ebrahimi\= Expect no match
4491*22dc650dSSadaf Ebrahimi    aaabccc
4492*22dc650dSSadaf Ebrahimi
4493*22dc650dSSadaf Ebrahimi/a+b?(*COMMIT)c+(*FAIL)/
4494*22dc650dSSadaf Ebrahimi\= Expect no match
4495*22dc650dSSadaf Ebrahimi    aaabccc
4496*22dc650dSSadaf Ebrahimi
4497*22dc650dSSadaf Ebrahimi/a+b?(*SKIP)c+(*FAIL)/
4498*22dc650dSSadaf Ebrahimi\= Expect no match
4499*22dc650dSSadaf Ebrahimi    aaabcccaaabccc
4500*22dc650dSSadaf Ebrahimi
4501*22dc650dSSadaf Ebrahimi/^(?:aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4502*22dc650dSSadaf Ebrahimi    aaaxxxxxx
4503*22dc650dSSadaf Ebrahimi    aaa++++++
4504*22dc650dSSadaf Ebrahimi    bbbxxxxx
4505*22dc650dSSadaf Ebrahimi    bbb+++++
4506*22dc650dSSadaf Ebrahimi    cccxxxx
4507*22dc650dSSadaf Ebrahimi    ccc++++
4508*22dc650dSSadaf Ebrahimi    dddddddd
4509*22dc650dSSadaf Ebrahimi
4510*22dc650dSSadaf Ebrahimi/^(aaa(*THEN)\w{6}|bbb(*THEN)\w{5}|ccc(*THEN)\w{4}|\w{3})/
4511*22dc650dSSadaf Ebrahimi    aaaxxxxxx
4512*22dc650dSSadaf Ebrahimi    aaa++++++
4513*22dc650dSSadaf Ebrahimi    bbbxxxxx
4514*22dc650dSSadaf Ebrahimi    bbb+++++
4515*22dc650dSSadaf Ebrahimi    cccxxxx
4516*22dc650dSSadaf Ebrahimi    ccc++++
4517*22dc650dSSadaf Ebrahimi    dddddddd
4518*22dc650dSSadaf Ebrahimi
4519*22dc650dSSadaf Ebrahimi/a+b?(*THEN)c+(*FAIL)/
4520*22dc650dSSadaf Ebrahimi\= Expect no match
4521*22dc650dSSadaf Ebrahimi    aaabccc
4522*22dc650dSSadaf Ebrahimi
4523*22dc650dSSadaf Ebrahimi/(A (A|B(*ACCEPT)|C) D)(E)/x
4524*22dc650dSSadaf Ebrahimi    AB
4525*22dc650dSSadaf Ebrahimi    ABX
4526*22dc650dSSadaf Ebrahimi    AADE
4527*22dc650dSSadaf Ebrahimi    ACDE
4528*22dc650dSSadaf Ebrahimi\= Expect no match
4529*22dc650dSSadaf Ebrahimi    AD
4530*22dc650dSSadaf Ebrahimi
4531*22dc650dSSadaf Ebrahimi/^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
4532*22dc650dSSadaf Ebrahimi    1221
4533*22dc650dSSadaf Ebrahimi    Satan, oscillate my metallic sonatas!
4534*22dc650dSSadaf Ebrahimi    A man, a plan, a canal: Panama!
4535*22dc650dSSadaf Ebrahimi    Able was I ere I saw Elba.
4536*22dc650dSSadaf Ebrahimi\= Expect no match
4537*22dc650dSSadaf Ebrahimi    The quick brown fox
4538*22dc650dSSadaf Ebrahimi
4539*22dc650dSSadaf Ebrahimi/^((.)(?1)\2|.)$/
4540*22dc650dSSadaf Ebrahimi    a
4541*22dc650dSSadaf Ebrahimi    aba
4542*22dc650dSSadaf Ebrahimi    aabaa
4543*22dc650dSSadaf Ebrahimi    abcdcba
4544*22dc650dSSadaf Ebrahimi    pqaabaaqp
4545*22dc650dSSadaf Ebrahimi    ablewasiereisawelba
4546*22dc650dSSadaf Ebrahimi\= Expect no match
4547*22dc650dSSadaf Ebrahimi    rhubarb
4548*22dc650dSSadaf Ebrahimi    the quick brown fox
4549*22dc650dSSadaf Ebrahimi
4550*22dc650dSSadaf Ebrahimi/(a)(?<=b(?1))/
4551*22dc650dSSadaf Ebrahimi    baz
4552*22dc650dSSadaf Ebrahimi\= Expect no match
4553*22dc650dSSadaf Ebrahimi    caz
4554*22dc650dSSadaf Ebrahimi
4555*22dc650dSSadaf Ebrahimi/(?<=b(?1))(a)/
4556*22dc650dSSadaf Ebrahimi    zbaaz
4557*22dc650dSSadaf Ebrahimi\= Expect no match
4558*22dc650dSSadaf Ebrahimi    aaa
4559*22dc650dSSadaf Ebrahimi
4560*22dc650dSSadaf Ebrahimi/(?<X>a)(?<=b(?&X))/
4561*22dc650dSSadaf Ebrahimi    baz
4562*22dc650dSSadaf Ebrahimi
4563*22dc650dSSadaf Ebrahimi/^(?|(abc)|(def))\1/
4564*22dc650dSSadaf Ebrahimi    abcabc
4565*22dc650dSSadaf Ebrahimi    defdef
4566*22dc650dSSadaf Ebrahimi\= Expect no match
4567*22dc650dSSadaf Ebrahimi    abcdef
4568*22dc650dSSadaf Ebrahimi    defabc
4569*22dc650dSSadaf Ebrahimi
4570*22dc650dSSadaf Ebrahimi/^(?|(abc)|(def))(?1)/
4571*22dc650dSSadaf Ebrahimi    abcabc
4572*22dc650dSSadaf Ebrahimi    defabc
4573*22dc650dSSadaf Ebrahimi\= Expect no match
4574*22dc650dSSadaf Ebrahimi    defdef
4575*22dc650dSSadaf Ebrahimi    abcdef
4576*22dc650dSSadaf Ebrahimi
4577*22dc650dSSadaf Ebrahimi/(?:a(?<quote> (?<apostrophe>')|(?<realquote>")) |b(?<quote> (?<apostrophe>')|(?<realquote>")) ) (?('quote')[a-z]+|[0-9]+)/x,dupnames
4578*22dc650dSSadaf Ebrahimi    a\"aaaaa
4579*22dc650dSSadaf Ebrahimi    b\"aaaaa
4580*22dc650dSSadaf Ebrahimi\= Expect no match
4581*22dc650dSSadaf Ebrahimi    b\"11111
4582*22dc650dSSadaf Ebrahimi
4583*22dc650dSSadaf Ebrahimi/(?:(?1)|B)(A(*F)|C)/
4584*22dc650dSSadaf Ebrahimi    ABCD
4585*22dc650dSSadaf Ebrahimi    CCD
4586*22dc650dSSadaf Ebrahimi\= Expect no match
4587*22dc650dSSadaf Ebrahimi    CAD
4588*22dc650dSSadaf Ebrahimi
4589*22dc650dSSadaf Ebrahimi/^(?:(?1)|B)(A(*F)|C)/
4590*22dc650dSSadaf Ebrahimi    CCD
4591*22dc650dSSadaf Ebrahimi    BCD
4592*22dc650dSSadaf Ebrahimi\= Expect no match
4593*22dc650dSSadaf Ebrahimi    ABCD
4594*22dc650dSSadaf Ebrahimi    CAD
4595*22dc650dSSadaf Ebrahimi    BAD
4596*22dc650dSSadaf Ebrahimi
4597*22dc650dSSadaf Ebrahimi/(?:(?1)|B)(A(*ACCEPT)XX|C)D/
4598*22dc650dSSadaf Ebrahimi    AAD
4599*22dc650dSSadaf Ebrahimi    ACD
4600*22dc650dSSadaf Ebrahimi    BAD
4601*22dc650dSSadaf Ebrahimi    BCD
4602*22dc650dSSadaf Ebrahimi    BAX
4603*22dc650dSSadaf Ebrahimi\= Expect no match
4604*22dc650dSSadaf Ebrahimi    ACX
4605*22dc650dSSadaf Ebrahimi    ABC
4606*22dc650dSSadaf Ebrahimi
4607*22dc650dSSadaf Ebrahimi/(?(DEFINE)(A))B(?1)C/
4608*22dc650dSSadaf Ebrahimi    BAC
4609*22dc650dSSadaf Ebrahimi
4610*22dc650dSSadaf Ebrahimi/(?(DEFINE)((A)\2))B(?1)C/
4611*22dc650dSSadaf Ebrahimi    BAAC
4612*22dc650dSSadaf Ebrahimi
4613*22dc650dSSadaf Ebrahimi/(?<pn> \( ( [^()]++ | (?&pn) )* \) )/x
4614*22dc650dSSadaf Ebrahimi    (ab(cd)ef)
4615*22dc650dSSadaf Ebrahimi
4616*22dc650dSSadaf Ebrahimi/^(?=a(*SKIP)b|ac)/
4617*22dc650dSSadaf Ebrahimi\= Expect no match
4618*22dc650dSSadaf Ebrahimi    ac
4619*22dc650dSSadaf Ebrahimi
4620*22dc650dSSadaf Ebrahimi/^(?=a(*PRUNE)b)/
4621*22dc650dSSadaf Ebrahimi    ab
4622*22dc650dSSadaf Ebrahimi\= Expect no match
4623*22dc650dSSadaf Ebrahimi    ac
4624*22dc650dSSadaf Ebrahimi
4625*22dc650dSSadaf Ebrahimi/^(?=a(*ACCEPT)b)/
4626*22dc650dSSadaf Ebrahimi    ac
4627*22dc650dSSadaf Ebrahimi
4628*22dc650dSSadaf Ebrahimi/(?>a\Kb)/
4629*22dc650dSSadaf Ebrahimi    ab
4630*22dc650dSSadaf Ebrahimi
4631*22dc650dSSadaf Ebrahimi/((?>a\Kb))/
4632*22dc650dSSadaf Ebrahimi    ab
4633*22dc650dSSadaf Ebrahimi
4634*22dc650dSSadaf Ebrahimi/(a\Kb)/
4635*22dc650dSSadaf Ebrahimi    ab
4636*22dc650dSSadaf Ebrahimi
4637*22dc650dSSadaf Ebrahimi/^a\Kcz|ac/
4638*22dc650dSSadaf Ebrahimi    ac
4639*22dc650dSSadaf Ebrahimi
4640*22dc650dSSadaf Ebrahimi/(?>a\Kbz|ab)/
4641*22dc650dSSadaf Ebrahimi    ab
4642*22dc650dSSadaf Ebrahimi
4643*22dc650dSSadaf Ebrahimi/^(?&t)(?(DEFINE)(?<t>a\Kb))$/
4644*22dc650dSSadaf Ebrahimi    ab
4645*22dc650dSSadaf Ebrahimi
4646*22dc650dSSadaf Ebrahimi/^([^()]|\((?1)*\))*$/
4647*22dc650dSSadaf Ebrahimi    a(b)c
4648*22dc650dSSadaf Ebrahimi    a(b(c)d)e
4649*22dc650dSSadaf Ebrahimi
4650*22dc650dSSadaf Ebrahimi/(?P<L1>(?P<L2>0)(?P>L1)|(?P>L2))/
4651*22dc650dSSadaf Ebrahimi    0
4652*22dc650dSSadaf Ebrahimi    00
4653*22dc650dSSadaf Ebrahimi    0000
4654*22dc650dSSadaf Ebrahimi
4655*22dc650dSSadaf Ebrahimi/(?P<L1>(?P<L2>0)|(?P>L2)(?P>L1))/
4656*22dc650dSSadaf Ebrahimi    0
4657*22dc650dSSadaf Ebrahimi    00
4658*22dc650dSSadaf Ebrahimi    0000
4659*22dc650dSSadaf Ebrahimi
4660*22dc650dSSadaf Ebrahimi# This one does fail, as expected, in Perl. It needs the complex item at the
4661*22dc650dSSadaf Ebrahimi# end of the pattern. A single letter instead of (B|D) makes it not fail, which
4662*22dc650dSSadaf Ebrahimi# I think is a Perl bug.
4663*22dc650dSSadaf Ebrahimi
4664*22dc650dSSadaf Ebrahimi/A(*COMMIT)(B|D)/
4665*22dc650dSSadaf Ebrahimi\= Expect no match
4666*22dc650dSSadaf Ebrahimi    ACABX
4667*22dc650dSSadaf Ebrahimi
4668*22dc650dSSadaf Ebrahimi# Check the use of names for failure
4669*22dc650dSSadaf Ebrahimi
4670*22dc650dSSadaf Ebrahimi/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
4671*22dc650dSSadaf Ebrahimi\= Expect no match
4672*22dc650dSSadaf Ebrahimi    AC
4673*22dc650dSSadaf Ebrahimi    CB
4674*22dc650dSSadaf Ebrahimi
4675*22dc650dSSadaf Ebrahimi/(*MARK:A)(*SKIP:B)(C|X)/mark
4676*22dc650dSSadaf Ebrahimi    C
4677*22dc650dSSadaf Ebrahimi\= Expect no match
4678*22dc650dSSadaf Ebrahimi    D
4679*22dc650dSSadaf Ebrahimi
4680*22dc650dSSadaf Ebrahimi/^(A(*THEN:A)B|C(*THEN:B)D)/mark
4681*22dc650dSSadaf Ebrahimi\= Expect no match
4682*22dc650dSSadaf Ebrahimi    CB
4683*22dc650dSSadaf Ebrahimi
4684*22dc650dSSadaf Ebrahimi/^(?:A(*THEN:A)B|C(*THEN:B)D)/mark
4685*22dc650dSSadaf Ebrahimi\= Expect no match
4686*22dc650dSSadaf Ebrahimi    CB
4687*22dc650dSSadaf Ebrahimi
4688*22dc650dSSadaf Ebrahimi/^(?>A(*THEN:A)B|C(*THEN:B)D)/mark
4689*22dc650dSSadaf Ebrahimi\= Expect no match
4690*22dc650dSSadaf Ebrahimi    CB
4691*22dc650dSSadaf Ebrahimi
4692*22dc650dSSadaf Ebrahimi# This should succeed, as the skip causes bump to offset 1 (the mark). Note
4693*22dc650dSSadaf Ebrahimi# that we have to have something complicated such as (B|Z) at the end because,
4694*22dc650dSSadaf Ebrahimi# for Perl, a simple character somehow causes an unwanted optimization to mess
4695*22dc650dSSadaf Ebrahimi# with the handling of backtracking verbs.
4696*22dc650dSSadaf Ebrahimi
4697*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:A)(B|Z) | AC/x,mark
4698*22dc650dSSadaf Ebrahimi    AAAC
4699*22dc650dSSadaf Ebrahimi
4700*22dc650dSSadaf Ebrahimi# Test skipping over a non-matching mark.
4701*22dc650dSSadaf Ebrahimi
4702*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*MARK:B)(*SKIP:A)(B|Z) | AC/x,mark
4703*22dc650dSSadaf Ebrahimi    AAAC
4704*22dc650dSSadaf Ebrahimi
4705*22dc650dSSadaf Ebrahimi# Check shorthand for MARK.
4706*22dc650dSSadaf Ebrahimi
4707*22dc650dSSadaf Ebrahimi/A(*:A)A+(*SKIP:A)(B|Z) | AC/x,mark
4708*22dc650dSSadaf Ebrahimi    AAAC
4709*22dc650dSSadaf Ebrahimi
4710*22dc650dSSadaf Ebrahimi/(*:A)A+(*SKIP:A)(B|Z)/mark
4711*22dc650dSSadaf Ebrahimi\= Expect no match
4712*22dc650dSSadaf Ebrahimi    AAAC
4713*22dc650dSSadaf Ebrahimi
4714*22dc650dSSadaf Ebrahimi# This should succeed, as a non-existent skip name disables the skip.
4715*22dc650dSSadaf Ebrahimi
4716*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
4717*22dc650dSSadaf Ebrahimi    AAAC
4718*22dc650dSSadaf Ebrahimi
4719*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC(*:B)/x,mark
4720*22dc650dSSadaf Ebrahimi    AAAC
4721*22dc650dSSadaf Ebrahimi
4722*22dc650dSSadaf Ebrahimi# COMMIT at the start of a pattern should act like an anchor. Again, however,
4723*22dc650dSSadaf Ebrahimi# we need the complication for Perl.
4724*22dc650dSSadaf Ebrahimi
4725*22dc650dSSadaf Ebrahimi/(*COMMIT)(A|P)(B|P)(C|P)/
4726*22dc650dSSadaf Ebrahimi    ABCDEFG
4727*22dc650dSSadaf Ebrahimi\= Expect no match
4728*22dc650dSSadaf Ebrahimi    DEFGABC
4729*22dc650dSSadaf Ebrahimi
4730*22dc650dSSadaf Ebrahimi# COMMIT inside an atomic group can't stop backtracking over the group.
4731*22dc650dSSadaf Ebrahimi
4732*22dc650dSSadaf Ebrahimi/(\w+)(?>b(*COMMIT))\w{2}/
4733*22dc650dSSadaf Ebrahimi    abbb
4734*22dc650dSSadaf Ebrahimi
4735*22dc650dSSadaf Ebrahimi/(\w+)b(*COMMIT)\w{2}/
4736*22dc650dSSadaf Ebrahimi\= Expect no match
4737*22dc650dSSadaf Ebrahimi    abbb
4738*22dc650dSSadaf Ebrahimi
4739*22dc650dSSadaf Ebrahimi# Check opening parens in comment when seeking forward reference.
4740*22dc650dSSadaf Ebrahimi
4741*22dc650dSSadaf Ebrahimi/(?&t)(?#()(?(DEFINE)(?<t>a))/
4742*22dc650dSSadaf Ebrahimi    bac
4743*22dc650dSSadaf Ebrahimi
4744*22dc650dSSadaf Ebrahimi# COMMIT should override THEN.
4745*22dc650dSSadaf Ebrahimi
4746*22dc650dSSadaf Ebrahimi/(?>(*COMMIT)(?>yes|no)(*THEN)(*F))?/
4747*22dc650dSSadaf Ebrahimi\= Expect no match
4748*22dc650dSSadaf Ebrahimi  yes
4749*22dc650dSSadaf Ebrahimi
4750*22dc650dSSadaf Ebrahimi/(?>(*COMMIT)(yes|no)(*THEN)(*F))?/
4751*22dc650dSSadaf Ebrahimi\= Expect no match
4752*22dc650dSSadaf Ebrahimi  yes
4753*22dc650dSSadaf Ebrahimi
4754*22dc650dSSadaf Ebrahimi/b?(*SKIP)c/
4755*22dc650dSSadaf Ebrahimi    bc
4756*22dc650dSSadaf Ebrahimi    abc
4757*22dc650dSSadaf Ebrahimi
4758*22dc650dSSadaf Ebrahimi/(*SKIP)bc/
4759*22dc650dSSadaf Ebrahimi\= Expect no match
4760*22dc650dSSadaf Ebrahimi    a
4761*22dc650dSSadaf Ebrahimi
4762*22dc650dSSadaf Ebrahimi/(*SKIP)b/
4763*22dc650dSSadaf Ebrahimi\= Expect no match
4764*22dc650dSSadaf Ebrahimi    a
4765*22dc650dSSadaf Ebrahimi
4766*22dc650dSSadaf Ebrahimi/(?P<abn>(?P=abn)xxx|)+/
4767*22dc650dSSadaf Ebrahimi    xxx
4768*22dc650dSSadaf Ebrahimi
4769*22dc650dSSadaf Ebrahimi/(?i:([^b]))(?1)/
4770*22dc650dSSadaf Ebrahimi    aa
4771*22dc650dSSadaf Ebrahimi    aA
4772*22dc650dSSadaf Ebrahimi\= Expect no match
4773*22dc650dSSadaf Ebrahimi    ab
4774*22dc650dSSadaf Ebrahimi    aB
4775*22dc650dSSadaf Ebrahimi    Ba
4776*22dc650dSSadaf Ebrahimi    ba
4777*22dc650dSSadaf Ebrahimi
4778*22dc650dSSadaf Ebrahimi/^(?&t)*+(?(DEFINE)(?<t>a))\w$/
4779*22dc650dSSadaf Ebrahimi    aaaaaaX
4780*22dc650dSSadaf Ebrahimi\= Expect no match
4781*22dc650dSSadaf Ebrahimi    aaaaaa
4782*22dc650dSSadaf Ebrahimi
4783*22dc650dSSadaf Ebrahimi/^(?&t)*(?(DEFINE)(?<t>a))\w$/
4784*22dc650dSSadaf Ebrahimi    aaaaaaX
4785*22dc650dSSadaf Ebrahimi    aaaaaa
4786*22dc650dSSadaf Ebrahimi
4787*22dc650dSSadaf Ebrahimi/^(a)*+(\w)/
4788*22dc650dSSadaf Ebrahimi    aaaaX
4789*22dc650dSSadaf Ebrahimi    YZ
4790*22dc650dSSadaf Ebrahimi\= Expect no match
4791*22dc650dSSadaf Ebrahimi    aaaa
4792*22dc650dSSadaf Ebrahimi
4793*22dc650dSSadaf Ebrahimi/^(?:a)*+(\w)/
4794*22dc650dSSadaf Ebrahimi    aaaaX
4795*22dc650dSSadaf Ebrahimi    YZ
4796*22dc650dSSadaf Ebrahimi\= Expect no match
4797*22dc650dSSadaf Ebrahimi    aaaa
4798*22dc650dSSadaf Ebrahimi
4799*22dc650dSSadaf Ebrahimi/^(a)++(\w)/
4800*22dc650dSSadaf Ebrahimi    aaaaX
4801*22dc650dSSadaf Ebrahimi\= Expect no match
4802*22dc650dSSadaf Ebrahimi    aaaa
4803*22dc650dSSadaf Ebrahimi    YZ
4804*22dc650dSSadaf Ebrahimi
4805*22dc650dSSadaf Ebrahimi/^(?:a)++(\w)/
4806*22dc650dSSadaf Ebrahimi    aaaaX
4807*22dc650dSSadaf Ebrahimi\= Expect no match
4808*22dc650dSSadaf Ebrahimi    aaaa
4809*22dc650dSSadaf Ebrahimi    YZ
4810*22dc650dSSadaf Ebrahimi
4811*22dc650dSSadaf Ebrahimi/^(a)?+(\w)/
4812*22dc650dSSadaf Ebrahimi    aaaaX
4813*22dc650dSSadaf Ebrahimi    YZ
4814*22dc650dSSadaf Ebrahimi
4815*22dc650dSSadaf Ebrahimi/^(?:a)?+(\w)/
4816*22dc650dSSadaf Ebrahimi    aaaaX
4817*22dc650dSSadaf Ebrahimi    YZ
4818*22dc650dSSadaf Ebrahimi
4819*22dc650dSSadaf Ebrahimi/^(a){2,}+(\w)/
4820*22dc650dSSadaf Ebrahimi    aaaaX
4821*22dc650dSSadaf Ebrahimi\= Expect no match
4822*22dc650dSSadaf Ebrahimi    aaa
4823*22dc650dSSadaf Ebrahimi    YZ
4824*22dc650dSSadaf Ebrahimi
4825*22dc650dSSadaf Ebrahimi/^(?:a){2,}+(\w)/
4826*22dc650dSSadaf Ebrahimi    aaaaX
4827*22dc650dSSadaf Ebrahimi\= Expect no match
4828*22dc650dSSadaf Ebrahimi    aaa
4829*22dc650dSSadaf Ebrahimi    YZ
4830*22dc650dSSadaf Ebrahimi
4831*22dc650dSSadaf Ebrahimi/(a|)*(?1)b/
4832*22dc650dSSadaf Ebrahimi    b
4833*22dc650dSSadaf Ebrahimi    ab
4834*22dc650dSSadaf Ebrahimi    aab
4835*22dc650dSSadaf Ebrahimi
4836*22dc650dSSadaf Ebrahimi/(a)++(?1)b/
4837*22dc650dSSadaf Ebrahimi\= Expect no match
4838*22dc650dSSadaf Ebrahimi    ab
4839*22dc650dSSadaf Ebrahimi    aab
4840*22dc650dSSadaf Ebrahimi
4841*22dc650dSSadaf Ebrahimi/(a)*+(?1)b/
4842*22dc650dSSadaf Ebrahimi\= Expect no match
4843*22dc650dSSadaf Ebrahimi    ab
4844*22dc650dSSadaf Ebrahimi    aab
4845*22dc650dSSadaf Ebrahimi
4846*22dc650dSSadaf Ebrahimi/(?1)(?:(b)){0}/
4847*22dc650dSSadaf Ebrahimi    b
4848*22dc650dSSadaf Ebrahimi
4849*22dc650dSSadaf Ebrahimi/(foo ( \( ((?:(?> [^()]+ )|(?2))*) \) ) )/x
4850*22dc650dSSadaf Ebrahimi    foo(bar(baz)+baz(bop))
4851*22dc650dSSadaf Ebrahimi
4852*22dc650dSSadaf Ebrahimi/(A (A|B(*ACCEPT)|C) D)(E)/x
4853*22dc650dSSadaf Ebrahimi    AB
4854*22dc650dSSadaf Ebrahimi
4855*22dc650dSSadaf Ebrahimi/\A.*?(a|bc)/
4856*22dc650dSSadaf Ebrahimi    ba
4857*22dc650dSSadaf Ebrahimi
4858*22dc650dSSadaf Ebrahimi/\A.*?(?:a|bc)++/
4859*22dc650dSSadaf Ebrahimi    ba
4860*22dc650dSSadaf Ebrahimi
4861*22dc650dSSadaf Ebrahimi/\A.*?(a|bc)++/
4862*22dc650dSSadaf Ebrahimi    ba
4863*22dc650dSSadaf Ebrahimi
4864*22dc650dSSadaf Ebrahimi/\A.*?(?:a|bc|d)/
4865*22dc650dSSadaf Ebrahimi    ba
4866*22dc650dSSadaf Ebrahimi
4867*22dc650dSSadaf Ebrahimi/(?:(b))++/
4868*22dc650dSSadaf Ebrahimi    beetle
4869*22dc650dSSadaf Ebrahimi
4870*22dc650dSSadaf Ebrahimi/(?(?=(a(*ACCEPT)z))a)/
4871*22dc650dSSadaf Ebrahimi    a
4872*22dc650dSSadaf Ebrahimi
4873*22dc650dSSadaf Ebrahimi/^(a)(?1)+ab/
4874*22dc650dSSadaf Ebrahimi    aaaab
4875*22dc650dSSadaf Ebrahimi
4876*22dc650dSSadaf Ebrahimi/^(a)(?1)++ab/
4877*22dc650dSSadaf Ebrahimi\= Expect no match
4878*22dc650dSSadaf Ebrahimi    aaaab
4879*22dc650dSSadaf Ebrahimi
4880*22dc650dSSadaf Ebrahimi/^(?=a(*:M))aZ/mark
4881*22dc650dSSadaf Ebrahimi    aZbc
4882*22dc650dSSadaf Ebrahimi
4883*22dc650dSSadaf Ebrahimi/^(?!(*:M)b)aZ/mark
4884*22dc650dSSadaf Ebrahimi    aZbc
4885*22dc650dSSadaf Ebrahimi
4886*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a))?b(?1)/
4887*22dc650dSSadaf Ebrahimi    backgammon
4888*22dc650dSSadaf Ebrahimi
4889*22dc650dSSadaf Ebrahimi/^\N+/
4890*22dc650dSSadaf Ebrahimi    abc\ndef
4891*22dc650dSSadaf Ebrahimi
4892*22dc650dSSadaf Ebrahimi/^\N{1,}/
4893*22dc650dSSadaf Ebrahimi    abc\ndef
4894*22dc650dSSadaf Ebrahimi
4895*22dc650dSSadaf Ebrahimi/(?(R)a+|(?R)b)/
4896*22dc650dSSadaf Ebrahimi    aaaabcde
4897*22dc650dSSadaf Ebrahimi
4898*22dc650dSSadaf Ebrahimi/(?(R)a+|((?R))b)/
4899*22dc650dSSadaf Ebrahimi    aaaabcde
4900*22dc650dSSadaf Ebrahimi
4901*22dc650dSSadaf Ebrahimi/((?(R)a+|(?1)b))/
4902*22dc650dSSadaf Ebrahimi    aaaabcde
4903*22dc650dSSadaf Ebrahimi
4904*22dc650dSSadaf Ebrahimi/((?(R1)a+|(?1)b))/
4905*22dc650dSSadaf Ebrahimi    aaaabcde
4906*22dc650dSSadaf Ebrahimi
4907*22dc650dSSadaf Ebrahimi/((?(R)a|(?1)))*/
4908*22dc650dSSadaf Ebrahimi    aaa
4909*22dc650dSSadaf Ebrahimi
4910*22dc650dSSadaf Ebrahimi/((?(R)a|(?1)))+/
4911*22dc650dSSadaf Ebrahimi    aaa
4912*22dc650dSSadaf Ebrahimi
4913*22dc650dSSadaf Ebrahimi/a(*:any
4914*22dc650dSSadaf Ebrahiminame)/mark
4915*22dc650dSSadaf Ebrahimi    abc
4916*22dc650dSSadaf Ebrahimi
4917*22dc650dSSadaf Ebrahimi/(?>(?&t)c|(?&t))(?(DEFINE)(?<t>a|b(*PRUNE)c))/
4918*22dc650dSSadaf Ebrahimi    a
4919*22dc650dSSadaf Ebrahimi    ba
4920*22dc650dSSadaf Ebrahimi    bba
4921*22dc650dSSadaf Ebrahimi
4922*22dc650dSSadaf Ebrahimi# Checking revised (*THEN) handling.
4923*22dc650dSSadaf Ebrahimi
4924*22dc650dSSadaf Ebrahimi# Capture
4925*22dc650dSSadaf Ebrahimi
4926*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b) c/x
4927*22dc650dSSadaf Ebrahimi\= Expect no match
4928*22dc650dSSadaf Ebrahimi    aabc
4929*22dc650dSSadaf Ebrahimi
4930*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b|(*F)) c/x
4931*22dc650dSSadaf Ebrahimi    aabc
4932*22dc650dSSadaf Ebrahimi
4933*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b) | (*F) ) c/x
4934*22dc650dSSadaf Ebrahimi    aabc
4935*22dc650dSSadaf Ebrahimi
4936*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b) ) c/x
4937*22dc650dSSadaf Ebrahimi\= Expect no match
4938*22dc650dSSadaf Ebrahimi    aabc
4939*22dc650dSSadaf Ebrahimi
4940*22dc650dSSadaf Ebrahimi# Non-capture
4941*22dc650dSSadaf Ebrahimi
4942*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b) c/x
4943*22dc650dSSadaf Ebrahimi\= Expect no match
4944*22dc650dSSadaf Ebrahimi    aabc
4945*22dc650dSSadaf Ebrahimi
4946*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b|(*F)) c/x
4947*22dc650dSSadaf Ebrahimi    aabc
4948*22dc650dSSadaf Ebrahimi
4949*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b) | (*F) ) c/x
4950*22dc650dSSadaf Ebrahimi    aabc
4951*22dc650dSSadaf Ebrahimi
4952*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b) ) c/x
4953*22dc650dSSadaf Ebrahimi\= Expect no match
4954*22dc650dSSadaf Ebrahimi    aabc
4955*22dc650dSSadaf Ebrahimi
4956*22dc650dSSadaf Ebrahimi# Atomic
4957*22dc650dSSadaf Ebrahimi
4958*22dc650dSSadaf Ebrahimi/^.*? (?>a(*THEN)b) c/x
4959*22dc650dSSadaf Ebrahimi\= Expect no match
4960*22dc650dSSadaf Ebrahimi    aabc
4961*22dc650dSSadaf Ebrahimi
4962*22dc650dSSadaf Ebrahimi/^.*? (?>a(*THEN)b|(*F)) c/x
4963*22dc650dSSadaf Ebrahimi    aabc
4964*22dc650dSSadaf Ebrahimi
4965*22dc650dSSadaf Ebrahimi/^.*? (?> (?>a(*THEN)b) | (*F) ) c/x
4966*22dc650dSSadaf Ebrahimi    aabc
4967*22dc650dSSadaf Ebrahimi
4968*22dc650dSSadaf Ebrahimi/^.*? (?> (?>a(*THEN)b) ) c/x
4969*22dc650dSSadaf Ebrahimi\= Expect no match
4970*22dc650dSSadaf Ebrahimi    aabc
4971*22dc650dSSadaf Ebrahimi
4972*22dc650dSSadaf Ebrahimi# Possessive capture
4973*22dc650dSSadaf Ebrahimi
4974*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b)++ c/x
4975*22dc650dSSadaf Ebrahimi\= Expect no match
4976*22dc650dSSadaf Ebrahimi    aabc
4977*22dc650dSSadaf Ebrahimi
4978*22dc650dSSadaf Ebrahimi/^.*? (a(*THEN)b|(*F))++ c/x
4979*22dc650dSSadaf Ebrahimi    aabc
4980*22dc650dSSadaf Ebrahimi
4981*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b)++ | (*F) )++ c/x
4982*22dc650dSSadaf Ebrahimi    aabc
4983*22dc650dSSadaf Ebrahimi
4984*22dc650dSSadaf Ebrahimi/^.*? ( (a(*THEN)b)++ )++ c/x
4985*22dc650dSSadaf Ebrahimi\= Expect no match
4986*22dc650dSSadaf Ebrahimi    aabc
4987*22dc650dSSadaf Ebrahimi
4988*22dc650dSSadaf Ebrahimi# Possessive non-capture
4989*22dc650dSSadaf Ebrahimi
4990*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b)++ c/x
4991*22dc650dSSadaf Ebrahimi\= Expect no match
4992*22dc650dSSadaf Ebrahimi    aabc
4993*22dc650dSSadaf Ebrahimi
4994*22dc650dSSadaf Ebrahimi/^.*? (?:a(*THEN)b|(*F))++ c/x
4995*22dc650dSSadaf Ebrahimi    aabc
4996*22dc650dSSadaf Ebrahimi
4997*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b)++ | (*F) )++ c/x
4998*22dc650dSSadaf Ebrahimi    aabc
4999*22dc650dSSadaf Ebrahimi
5000*22dc650dSSadaf Ebrahimi/^.*? (?: (?:a(*THEN)b)++ )++ c/x
5001*22dc650dSSadaf Ebrahimi\= Expect no match
5002*22dc650dSSadaf Ebrahimi    aabc
5003*22dc650dSSadaf Ebrahimi
5004*22dc650dSSadaf Ebrahimi# Condition assertion
5005*22dc650dSSadaf Ebrahimi
5006*22dc650dSSadaf Ebrahimi/^(?(?=a(*THEN)b)ab|ac)/
5007*22dc650dSSadaf Ebrahimi    ac
5008*22dc650dSSadaf Ebrahimi
5009*22dc650dSSadaf Ebrahimi# Condition
5010*22dc650dSSadaf Ebrahimi
5011*22dc650dSSadaf Ebrahimi/^.*?(?(?=a)a|b(*THEN)c)/
5012*22dc650dSSadaf Ebrahimi\= Expect no match
5013*22dc650dSSadaf Ebrahimi    ba
5014*22dc650dSSadaf Ebrahimi
5015*22dc650dSSadaf Ebrahimi/^.*?(?:(?(?=a)a|b(*THEN)c)|d)/
5016*22dc650dSSadaf Ebrahimi    ba
5017*22dc650dSSadaf Ebrahimi
5018*22dc650dSSadaf Ebrahimi/^.*?(?(?=a)a(*THEN)b|c)/
5019*22dc650dSSadaf Ebrahimi\= Expect no match
5020*22dc650dSSadaf Ebrahimi    ac
5021*22dc650dSSadaf Ebrahimi
5022*22dc650dSSadaf Ebrahimi# Assertion
5023*22dc650dSSadaf Ebrahimi
5024*22dc650dSSadaf Ebrahimi/^.*(?=a(*THEN)b)/
5025*22dc650dSSadaf Ebrahimi    aabc
5026*22dc650dSSadaf Ebrahimi
5027*22dc650dSSadaf Ebrahimi# --------------------------
5028*22dc650dSSadaf Ebrahimi
5029*22dc650dSSadaf Ebrahimi/(?>a(*:m))/imsx,mark
5030*22dc650dSSadaf Ebrahimi    a
5031*22dc650dSSadaf Ebrahimi
5032*22dc650dSSadaf Ebrahimi/(?>(a)(*:m))/imsx,mark
5033*22dc650dSSadaf Ebrahimi    a
5034*22dc650dSSadaf Ebrahimi
5035*22dc650dSSadaf Ebrahimi/(?<=a(*ACCEPT)b)c/
5036*22dc650dSSadaf Ebrahimi    xacd
5037*22dc650dSSadaf Ebrahimi
5038*22dc650dSSadaf Ebrahimi/(?<=(a(*ACCEPT)b))c/
5039*22dc650dSSadaf Ebrahimi    xacd
5040*22dc650dSSadaf Ebrahimi
5041*22dc650dSSadaf Ebrahimi/(?<=(a(*COMMIT)b))c/
5042*22dc650dSSadaf Ebrahimi    xabcd
5043*22dc650dSSadaf Ebrahimi\= Expect no match
5044*22dc650dSSadaf Ebrahimi    xacd
5045*22dc650dSSadaf Ebrahimi
5046*22dc650dSSadaf Ebrahimi/(?<!a(*FAIL)b)c/
5047*22dc650dSSadaf Ebrahimi    xcd
5048*22dc650dSSadaf Ebrahimi    acd
5049*22dc650dSSadaf Ebrahimi
5050*22dc650dSSadaf Ebrahimi/(?<=a(*:N)b)c/mark
5051*22dc650dSSadaf Ebrahimi    xabcd
5052*22dc650dSSadaf Ebrahimi
5053*22dc650dSSadaf Ebrahimi/(?<=a(*PRUNE)b)c/
5054*22dc650dSSadaf Ebrahimi    xabcd
5055*22dc650dSSadaf Ebrahimi
5056*22dc650dSSadaf Ebrahimi/(?<=a(*SKIP)b)c/
5057*22dc650dSSadaf Ebrahimi    xabcd
5058*22dc650dSSadaf Ebrahimi
5059*22dc650dSSadaf Ebrahimi/(?<=a(*THEN)b)c/
5060*22dc650dSSadaf Ebrahimi    xabcd
5061*22dc650dSSadaf Ebrahimi
5062*22dc650dSSadaf Ebrahimi/(a)(?2){2}(.)/
5063*22dc650dSSadaf Ebrahimi    abcd
5064*22dc650dSSadaf Ebrahimi
5065*22dc650dSSadaf Ebrahimi/(*MARK:A)(*PRUNE:B)(C|X)/mark
5066*22dc650dSSadaf Ebrahimi    C
5067*22dc650dSSadaf Ebrahimi\= Expect no match
5068*22dc650dSSadaf Ebrahimi    D
5069*22dc650dSSadaf Ebrahimi
5070*22dc650dSSadaf Ebrahimi/(*MARK:A)(*PRUNE:B)(C|X)/mark
5071*22dc650dSSadaf Ebrahimi    C
5072*22dc650dSSadaf Ebrahimi\= Expect no match
5073*22dc650dSSadaf Ebrahimi    D
5074*22dc650dSSadaf Ebrahimi
5075*22dc650dSSadaf Ebrahimi/(*MARK:A)(*THEN:B)(C|X)/mark
5076*22dc650dSSadaf Ebrahimi    C
5077*22dc650dSSadaf Ebrahimi\= Expect no match
5078*22dc650dSSadaf Ebrahimi    D
5079*22dc650dSSadaf Ebrahimi
5080*22dc650dSSadaf Ebrahimi/(*MARK:A)(*THEN:B)(C|X)/mark,no_start_optimize
5081*22dc650dSSadaf Ebrahimi    C
5082*22dc650dSSadaf Ebrahimi\= Expect no match
5083*22dc650dSSadaf Ebrahimi    D
5084*22dc650dSSadaf Ebrahimi
5085*22dc650dSSadaf Ebrahimi/(*MARK:A)(*THEN:B)(C|X)/mark
5086*22dc650dSSadaf Ebrahimi    C
5087*22dc650dSSadaf Ebrahimi\= Expect no match
5088*22dc650dSSadaf Ebrahimi    D
5089*22dc650dSSadaf Ebrahimi
5090*22dc650dSSadaf Ebrahimi# This should fail, as the skip causes a bump to offset 3 (the skip).
5091*22dc650dSSadaf Ebrahimi
5092*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP)(B|Z) | AC/x,mark
5093*22dc650dSSadaf Ebrahimi\= Expect no match
5094*22dc650dSSadaf Ebrahimi    AAAC
5095*22dc650dSSadaf Ebrahimi
5096*22dc650dSSadaf Ebrahimi# Same
5097*22dc650dSSadaf Ebrahimi
5098*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*MARK:B)(*SKIP:B)(B|Z) | AC/x,mark
5099*22dc650dSSadaf Ebrahimi\= Expect no match
5100*22dc650dSSadaf Ebrahimi    AAAC
5101*22dc650dSSadaf Ebrahimi
5102*22dc650dSSadaf Ebrahimi/A(*:A)A+(*SKIP)(B|Z) | AC/x,mark
5103*22dc650dSSadaf Ebrahimi\= Expect no match
5104*22dc650dSSadaf Ebrahimi    AAAC
5105*22dc650dSSadaf Ebrahimi
5106*22dc650dSSadaf Ebrahimi# This should fail, as a null name is the same as no name.
5107*22dc650dSSadaf Ebrahimi
5108*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:)(B|Z) | AC/x,mark
5109*22dc650dSSadaf Ebrahimi\= Expect no match
5110*22dc650dSSadaf Ebrahimi    AAAC
5111*22dc650dSSadaf Ebrahimi
5112*22dc650dSSadaf Ebrahimi# A check on what happens after hitting a mark and them bumping along to
5113*22dc650dSSadaf Ebrahimi# something that does not even start. Perl reports tags after the failures
5114*22dc650dSSadaf Ebrahimi# here, though it does not when the individual letters are made into something
5115*22dc650dSSadaf Ebrahimi# more complicated.
5116*22dc650dSSadaf Ebrahimi
5117*22dc650dSSadaf Ebrahimi/A(*:A)B|XX(*:B)Y/mark
5118*22dc650dSSadaf Ebrahimi    AABC
5119*22dc650dSSadaf Ebrahimi    XXYZ
5120*22dc650dSSadaf Ebrahimi\= Expect no match
5121*22dc650dSSadaf Ebrahimi    XAQQ
5122*22dc650dSSadaf Ebrahimi    XAQQXZZ
5123*22dc650dSSadaf Ebrahimi    AXQQQ
5124*22dc650dSSadaf Ebrahimi    AXXQQQ
5125*22dc650dSSadaf Ebrahimi
5126*22dc650dSSadaf Ebrahimi/^(A(*THEN:A)B|C(*THEN:B)D)/mark
5127*22dc650dSSadaf Ebrahimi    AB
5128*22dc650dSSadaf Ebrahimi    CD
5129*22dc650dSSadaf Ebrahimi\= Expect no match
5130*22dc650dSSadaf Ebrahimi    AC
5131*22dc650dSSadaf Ebrahimi    CB
5132*22dc650dSSadaf Ebrahimi
5133*22dc650dSSadaf Ebrahimi/^(A(*PRUNE:A)B|C(*PRUNE:B)D)/mark
5134*22dc650dSSadaf Ebrahimi    AB
5135*22dc650dSSadaf Ebrahimi    CD
5136*22dc650dSSadaf Ebrahimi\= Expect no match
5137*22dc650dSSadaf Ebrahimi    AC
5138*22dc650dSSadaf Ebrahimi    CB
5139*22dc650dSSadaf Ebrahimi
5140*22dc650dSSadaf Ebrahimi# An empty name does not pass back an empty string. It is the same as if no
5141*22dc650dSSadaf Ebrahimi# name were given.
5142*22dc650dSSadaf Ebrahimi
5143*22dc650dSSadaf Ebrahimi/^(A(*PRUNE:)B|C(*PRUNE:B)D)/mark
5144*22dc650dSSadaf Ebrahimi    AB
5145*22dc650dSSadaf Ebrahimi    CD
5146*22dc650dSSadaf Ebrahimi
5147*22dc650dSSadaf Ebrahimi# PRUNE goes to next bumpalong; COMMIT does not.
5148*22dc650dSSadaf Ebrahimi
5149*22dc650dSSadaf Ebrahimi/A(*PRUNE:A)B/mark
5150*22dc650dSSadaf Ebrahimi    ACAB
5151*22dc650dSSadaf Ebrahimi
5152*22dc650dSSadaf Ebrahimi# Mark names can be duplicated.
5153*22dc650dSSadaf Ebrahimi
5154*22dc650dSSadaf Ebrahimi/A(*:A)B|X(*:A)Y/mark
5155*22dc650dSSadaf Ebrahimi    AABC
5156*22dc650dSSadaf Ebrahimi    XXYZ
5157*22dc650dSSadaf Ebrahimi
5158*22dc650dSSadaf Ebrahimi/b(*:m)f|a(*:n)w/mark
5159*22dc650dSSadaf Ebrahimi    aw
5160*22dc650dSSadaf Ebrahimi\= Expect no match
5161*22dc650dSSadaf Ebrahimi    abc
5162*22dc650dSSadaf Ebrahimi
5163*22dc650dSSadaf Ebrahimi/b(*:m)f|aw/mark
5164*22dc650dSSadaf Ebrahimi    abaw
5165*22dc650dSSadaf Ebrahimi\= Expect no match
5166*22dc650dSSadaf Ebrahimi    abc
5167*22dc650dSSadaf Ebrahimi    abax
5168*22dc650dSSadaf Ebrahimi
5169*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AAC/x,mark
5170*22dc650dSSadaf Ebrahimi    AAAC
5171*22dc650dSSadaf Ebrahimi
5172*22dc650dSSadaf Ebrahimi/(?=a(*MARK:A)b)..x/mark
5173*22dc650dSSadaf Ebrahimi    abxy
5174*22dc650dSSadaf Ebrahimi\= Expect no match
5175*22dc650dSSadaf Ebrahimi    abpq
5176*22dc650dSSadaf Ebrahimi
5177*22dc650dSSadaf Ebrahimi/(?=a(*MARK:A)b)..(*:Y)x/mark
5178*22dc650dSSadaf Ebrahimi    abxy
5179*22dc650dSSadaf Ebrahimi\= Expect no match
5180*22dc650dSSadaf Ebrahimi    abpq
5181*22dc650dSSadaf Ebrahimi
5182*22dc650dSSadaf Ebrahimi/(?=a(*PRUNE:A)b)..x/mark
5183*22dc650dSSadaf Ebrahimi    abxy
5184*22dc650dSSadaf Ebrahimi\= Expect no match
5185*22dc650dSSadaf Ebrahimi    abpq
5186*22dc650dSSadaf Ebrahimi
5187*22dc650dSSadaf Ebrahimi/(?=a(*PRUNE:A)b)..(*:Y)x/mark
5188*22dc650dSSadaf Ebrahimi    abxy
5189*22dc650dSSadaf Ebrahimi\= Expect no match
5190*22dc650dSSadaf Ebrahimi    abpq
5191*22dc650dSSadaf Ebrahimi
5192*22dc650dSSadaf Ebrahimi/(?=a(*THEN:A)b)..x/mark
5193*22dc650dSSadaf Ebrahimi    abxy
5194*22dc650dSSadaf Ebrahimi\= Expect no match
5195*22dc650dSSadaf Ebrahimi    abpq
5196*22dc650dSSadaf Ebrahimi
5197*22dc650dSSadaf Ebrahimi/(?=a(*THEN:A)b)..(*:Y)x/mark
5198*22dc650dSSadaf Ebrahimi    abxy
5199*22dc650dSSadaf Ebrahimi\= Expect no match
5200*22dc650dSSadaf Ebrahimi    abpq
5201*22dc650dSSadaf Ebrahimi
5202*22dc650dSSadaf Ebrahimi/(another)?(\1?)test/
5203*22dc650dSSadaf Ebrahimi    hello world test
5204*22dc650dSSadaf Ebrahimi
5205*22dc650dSSadaf Ebrahimi/(another)?(\1+)test/
5206*22dc650dSSadaf Ebrahimi\= Expect no match
5207*22dc650dSSadaf Ebrahimi    hello world test
5208*22dc650dSSadaf Ebrahimi
5209*22dc650dSSadaf Ebrahimi/(a(*COMMIT)b){0}a(?1)|aac/
5210*22dc650dSSadaf Ebrahimi    aac
5211*22dc650dSSadaf Ebrahimi
5212*22dc650dSSadaf Ebrahimi/((?:a?)*)*c/
5213*22dc650dSSadaf Ebrahimi    aac
5214*22dc650dSSadaf Ebrahimi
5215*22dc650dSSadaf Ebrahimi/((?>a?)*)*c/
5216*22dc650dSSadaf Ebrahimi    aac
5217*22dc650dSSadaf Ebrahimi
5218*22dc650dSSadaf Ebrahimi/(?>.*?a)(?<=ba)/
5219*22dc650dSSadaf Ebrahimi    aba
5220*22dc650dSSadaf Ebrahimi
5221*22dc650dSSadaf Ebrahimi/(?:.*?a)(?<=ba)/
5222*22dc650dSSadaf Ebrahimi    aba
5223*22dc650dSSadaf Ebrahimi
5224*22dc650dSSadaf Ebrahimi/(?>.*?a)b/s
5225*22dc650dSSadaf Ebrahimi    aab
5226*22dc650dSSadaf Ebrahimi
5227*22dc650dSSadaf Ebrahimi/(?>.*?a)b/
5228*22dc650dSSadaf Ebrahimi    aab
5229*22dc650dSSadaf Ebrahimi
5230*22dc650dSSadaf Ebrahimi/(?>^a)b/s
5231*22dc650dSSadaf Ebrahimi\= Expect no match
5232*22dc650dSSadaf Ebrahimi    aab
5233*22dc650dSSadaf Ebrahimi
5234*22dc650dSSadaf Ebrahimi/(?>.*?)(?<=(abcd)|(wxyz))/
5235*22dc650dSSadaf Ebrahimi    alphabetabcd
5236*22dc650dSSadaf Ebrahimi    endingwxyz
5237*22dc650dSSadaf Ebrahimi
5238*22dc650dSSadaf Ebrahimi/(?>.*)(?<=(abcd)|(wxyz))/
5239*22dc650dSSadaf Ebrahimi    alphabetabcd
5240*22dc650dSSadaf Ebrahimi    endingwxyz
5241*22dc650dSSadaf Ebrahimi
5242*22dc650dSSadaf Ebrahimi/(?>.*)foo/
5243*22dc650dSSadaf Ebrahimi\= Expect no match
5244*22dc650dSSadaf Ebrahimi    abcdfooxyz
5245*22dc650dSSadaf Ebrahimi
5246*22dc650dSSadaf Ebrahimi/(?>.*?)foo/
5247*22dc650dSSadaf Ebrahimi    abcdfooxyz
5248*22dc650dSSadaf Ebrahimi
5249*22dc650dSSadaf Ebrahimi/(?:(a(*PRUNE)b)){0}(?:(?1)|ac)/
5250*22dc650dSSadaf Ebrahimi    ac
5251*22dc650dSSadaf Ebrahimi
5252*22dc650dSSadaf Ebrahimi/(?:(a(*SKIP)b)){0}(?:(?1)|ac)/
5253*22dc650dSSadaf Ebrahimi    ac
5254*22dc650dSSadaf Ebrahimi
5255*22dc650dSSadaf Ebrahimi/(?<=(*SKIP)ac)a/
5256*22dc650dSSadaf Ebrahimi\= Expect no match
5257*22dc650dSSadaf Ebrahimi    aa
5258*22dc650dSSadaf Ebrahimi
5259*22dc650dSSadaf Ebrahimi/A(*MARK:A)A+(*SKIP:B)(B|Z) | AC/x,mark
5260*22dc650dSSadaf Ebrahimi    AAAC
5261*22dc650dSSadaf Ebrahimi
5262*22dc650dSSadaf Ebrahimi/a(*SKIP:m)x|ac(*:n)(*SKIP:n)d|ac/mark
5263*22dc650dSSadaf Ebrahimi    acacd
5264*22dc650dSSadaf Ebrahimi
5265*22dc650dSSadaf Ebrahimi/A(*SKIP:m)x|A(*SKIP:n)x|AB/mark
5266*22dc650dSSadaf Ebrahimi    AB
5267*22dc650dSSadaf Ebrahimi
5268*22dc650dSSadaf Ebrahimi/((*SKIP:r)d){0}a(*SKIP:m)x|ac(*:n)|ac/mark
5269*22dc650dSSadaf Ebrahimi    acacd
5270*22dc650dSSadaf Ebrahimi
5271*22dc650dSSadaf Ebrahimi# Tests that try to figure out how Perl works. My hypothesis is that the first
5272*22dc650dSSadaf Ebrahimi# verb that is backtracked onto is the one that acts. This seems to be the case
5273*22dc650dSSadaf Ebrahimi# almost all the time, but there is one exception that is perhaps a bug.
5274*22dc650dSSadaf Ebrahimi
5275*22dc650dSSadaf Ebrahimi# This matches "aaaac"; each PRUNE advances one character until the subject no
5276*22dc650dSSadaf Ebrahimi# longer starts with 5 'a's.
5277*22dc650dSSadaf Ebrahimi
5278*22dc650dSSadaf Ebrahimi/aaaaa(*PRUNE)b|a+c/
5279*22dc650dSSadaf Ebrahimi    aaaaaac
5280*22dc650dSSadaf Ebrahimi
5281*22dc650dSSadaf Ebrahimi# Putting SKIP in front of PRUNE makes no difference, as it is never
5282*22dc650dSSadaf Ebrahimi# backtracked onto, whether or not it has a label.
5283*22dc650dSSadaf Ebrahimi
5284*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP)(*PRUNE)b|a+c/
5285*22dc650dSSadaf Ebrahimi    aaaaaac
5286*22dc650dSSadaf Ebrahimi
5287*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP:N)(*PRUNE)b|a+c/
5288*22dc650dSSadaf Ebrahimi    aaaaaac
5289*22dc650dSSadaf Ebrahimi
5290*22dc650dSSadaf Ebrahimi/aaaa(*:N)a(*SKIP:N)(*PRUNE)b|a+c/
5291*22dc650dSSadaf Ebrahimi    aaaaaac
5292*22dc650dSSadaf Ebrahimi
5293*22dc650dSSadaf Ebrahimi# Putting THEN in front makes no difference.
5294*22dc650dSSadaf Ebrahimi
5295*22dc650dSSadaf Ebrahimi/aaaaa(*THEN)(*PRUNE)b|a+c/
5296*22dc650dSSadaf Ebrahimi    aaaaaac
5297*22dc650dSSadaf Ebrahimi
5298*22dc650dSSadaf Ebrahimi# However, putting COMMIT in front of the prune changes it to "no match". I
5299*22dc650dSSadaf Ebrahimi# think this is inconsistent and possibly a bug. For the moment, running this
5300*22dc650dSSadaf Ebrahimi# test is moved out of the Perl-compatible file.
5301*22dc650dSSadaf Ebrahimi
5302*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)(*PRUNE)b|a+c/
5303*22dc650dSSadaf Ebrahimi
5304*22dc650dSSadaf Ebrahimi# OK, lets play the same game again using SKIP instead of PRUNE.
5305*22dc650dSSadaf Ebrahimi
5306*22dc650dSSadaf Ebrahimi# This matches "ac" because SKIP forces the next match to start on the
5307*22dc650dSSadaf Ebrahimi# sixth "a".
5308*22dc650dSSadaf Ebrahimi
5309*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP)b|a+c/
5310*22dc650dSSadaf Ebrahimi    aaaaaac
5311*22dc650dSSadaf Ebrahimi
5312*22dc650dSSadaf Ebrahimi# Putting PRUNE in front makes no difference.
5313*22dc650dSSadaf Ebrahimi
5314*22dc650dSSadaf Ebrahimi/aaaaa(*PRUNE)(*SKIP)b|a+c/
5315*22dc650dSSadaf Ebrahimi    aaaaaac
5316*22dc650dSSadaf Ebrahimi
5317*22dc650dSSadaf Ebrahimi# Putting THEN in front makes no difference.
5318*22dc650dSSadaf Ebrahimi
5319*22dc650dSSadaf Ebrahimi/aaaaa(*THEN)(*SKIP)b|a+c/
5320*22dc650dSSadaf Ebrahimi    aaaaaac
5321*22dc650dSSadaf Ebrahimi
5322*22dc650dSSadaf Ebrahimi# In this case, neither does COMMIT. This still matches "ac".
5323*22dc650dSSadaf Ebrahimi
5324*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)(*SKIP)b|a+c/
5325*22dc650dSSadaf Ebrahimi    aaaaaac
5326*22dc650dSSadaf Ebrahimi
5327*22dc650dSSadaf Ebrahimi# This gives "no match", as expected.
5328*22dc650dSSadaf Ebrahimi
5329*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)b|a+c/
5330*22dc650dSSadaf Ebrahimi\= Expect no match
5331*22dc650dSSadaf Ebrahimi    aaaaaac
5332*22dc650dSSadaf Ebrahimi
5333*22dc650dSSadaf Ebrahimi# ---- Tests using THEN ----
5334*22dc650dSSadaf Ebrahimi
5335*22dc650dSSadaf Ebrahimi# This matches "aaaaaac", as expected.
5336*22dc650dSSadaf Ebrahimi
5337*22dc650dSSadaf Ebrahimi/aaaaa(*THEN)b|a+c/
5338*22dc650dSSadaf Ebrahimi    aaaaaac
5339*22dc650dSSadaf Ebrahimi
5340*22dc650dSSadaf Ebrahimi# Putting SKIP in front makes no difference.
5341*22dc650dSSadaf Ebrahimi
5342*22dc650dSSadaf Ebrahimi/aaaaa(*SKIP)(*THEN)b|a+c/
5343*22dc650dSSadaf Ebrahimi    aaaaaac
5344*22dc650dSSadaf Ebrahimi
5345*22dc650dSSadaf Ebrahimi# Putting PRUNE in front makes no difference.
5346*22dc650dSSadaf Ebrahimi
5347*22dc650dSSadaf Ebrahimi/aaaaa(*PRUNE)(*THEN)b|a+c/
5348*22dc650dSSadaf Ebrahimi    aaaaaac
5349*22dc650dSSadaf Ebrahimi
5350*22dc650dSSadaf Ebrahimi# Putting COMMIT in front makes no difference.
5351*22dc650dSSadaf Ebrahimi
5352*22dc650dSSadaf Ebrahimi/aaaaa(*COMMIT)(*THEN)b|a+c/
5353*22dc650dSSadaf Ebrahimi    aaaaaac
5354*22dc650dSSadaf Ebrahimi
5355*22dc650dSSadaf Ebrahimi# End of "priority" tests
5356*22dc650dSSadaf Ebrahimi
5357*22dc650dSSadaf Ebrahimi/aaaaa(*:m)(*PRUNE:m)(*SKIP:m)m|a+/
5358*22dc650dSSadaf Ebrahimi    aaaaaa
5359*22dc650dSSadaf Ebrahimi
5360*22dc650dSSadaf Ebrahimi/aaaaa(*:m)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
5361*22dc650dSSadaf Ebrahimi    aaaaaa
5362*22dc650dSSadaf Ebrahimi
5363*22dc650dSSadaf Ebrahimi/aaaaa(*:n)(*PRUNE:m)(*SKIP:m)m|a+/
5364*22dc650dSSadaf Ebrahimi    aaaaaa
5365*22dc650dSSadaf Ebrahimi
5366*22dc650dSSadaf Ebrahimi/aaaaa(*:n)(*MARK:m)(*PRUNE)(*SKIP:m)m|a+/
5367*22dc650dSSadaf Ebrahimi    aaaaaa
5368*22dc650dSSadaf Ebrahimi
5369*22dc650dSSadaf Ebrahimi/a(*MARK:A)aa(*PRUNE:A)a(*SKIP:A)b|a+c/
5370*22dc650dSSadaf Ebrahimi    aaaac
5371*22dc650dSSadaf Ebrahimi
5372*22dc650dSSadaf Ebrahimi/a(*MARK:A)aa(*MARK:A)a(*SKIP:A)b|a+c/
5373*22dc650dSSadaf Ebrahimi    aaaac
5374*22dc650dSSadaf Ebrahimi
5375*22dc650dSSadaf Ebrahimi/aaa(*PRUNE:A)a(*SKIP:A)b|a+c/
5376*22dc650dSSadaf Ebrahimi    aaaac
5377*22dc650dSSadaf Ebrahimi
5378*22dc650dSSadaf Ebrahimi/aaa(*MARK:A)a(*SKIP:A)b|a+c/
5379*22dc650dSSadaf Ebrahimi    aaaac
5380*22dc650dSSadaf Ebrahimi
5381*22dc650dSSadaf Ebrahimi/a(*:m)a(*COMMIT)(*SKIP:m)b|a+c/mark
5382*22dc650dSSadaf Ebrahimi    aaaaaac
5383*22dc650dSSadaf Ebrahimi
5384*22dc650dSSadaf Ebrahimi/.?(a|b(*THEN)c)/
5385*22dc650dSSadaf Ebrahimi    ba
5386*22dc650dSSadaf Ebrahimi
5387*22dc650dSSadaf Ebrahimi/(a(*COMMIT)b)c|abd/
5388*22dc650dSSadaf Ebrahimi    abc
5389*22dc650dSSadaf Ebrahimi\= Expect no match
5390*22dc650dSSadaf Ebrahimi    abd
5391*22dc650dSSadaf Ebrahimi
5392*22dc650dSSadaf Ebrahimi/(?=a(*COMMIT)b)abc|abd/
5393*22dc650dSSadaf Ebrahimi    abc
5394*22dc650dSSadaf Ebrahimi    abd
5395*22dc650dSSadaf Ebrahimi
5396*22dc650dSSadaf Ebrahimi/(?>a(*COMMIT)b)c|abd/
5397*22dc650dSSadaf Ebrahimi    abc
5398*22dc650dSSadaf Ebrahimi    abd
5399*22dc650dSSadaf Ebrahimi
5400*22dc650dSSadaf Ebrahimi/a(?=b(*COMMIT)c)[^d]|abd/
5401*22dc650dSSadaf Ebrahimi    abc
5402*22dc650dSSadaf Ebrahimi\= Expect no match
5403*22dc650dSSadaf Ebrahimi    abd
5404*22dc650dSSadaf Ebrahimi
5405*22dc650dSSadaf Ebrahimi/a(?=bc).|abd/
5406*22dc650dSSadaf Ebrahimi    abd
5407*22dc650dSSadaf Ebrahimi    abc
5408*22dc650dSSadaf Ebrahimi
5409*22dc650dSSadaf Ebrahimi/a(?>b(*COMMIT)c)d|abd/
5410*22dc650dSSadaf Ebrahimi\= Expect no match
5411*22dc650dSSadaf Ebrahimi    abceabd
5412*22dc650dSSadaf Ebrahimi
5413*22dc650dSSadaf Ebrahimi/a(?>bc)d|abd/
5414*22dc650dSSadaf Ebrahimi    abceabd
5415*22dc650dSSadaf Ebrahimi
5416*22dc650dSSadaf Ebrahimi/(?>a(*COMMIT)b)c|abd/
5417*22dc650dSSadaf Ebrahimi    abd
5418*22dc650dSSadaf Ebrahimi
5419*22dc650dSSadaf Ebrahimi/(?>a(*COMMIT)c)d|abd/
5420*22dc650dSSadaf Ebrahimi\= Expect no match
5421*22dc650dSSadaf Ebrahimi    abd
5422*22dc650dSSadaf Ebrahimi
5423*22dc650dSSadaf Ebrahimi/((?=a(*COMMIT)b)ab|ac){0}(?:(?1)|a(c))/
5424*22dc650dSSadaf Ebrahimi    ac
5425*22dc650dSSadaf Ebrahimi
5426*22dc650dSSadaf Ebrahimi# These tests were formerly in test 2, but changes in PCRE and Perl have
5427*22dc650dSSadaf Ebrahimi# made them compatible.
5428*22dc650dSSadaf Ebrahimi
5429*22dc650dSSadaf Ebrahimi/^(a)?(?(1)a|b)+$/
5430*22dc650dSSadaf Ebrahimi\= Expect no match
5431*22dc650dSSadaf Ebrahimi    a
5432*22dc650dSSadaf Ebrahimi
5433*22dc650dSSadaf Ebrahimi/A(*PRUNE:A)A+(*SKIP:A)(B|Z) | AC/x,mark
5434*22dc650dSSadaf Ebrahimi\= Expect no match
5435*22dc650dSSadaf Ebrahimi    AAAC
5436*22dc650dSSadaf Ebrahimi
5437*22dc650dSSadaf Ebrahimi/^((abc|abcx)(*THEN)y|abcd)/
5438*22dc650dSSadaf Ebrahimi    abcd
5439*22dc650dSSadaf Ebrahimi\= Expect no match
5440*22dc650dSSadaf Ebrahimi    abcxy
5441*22dc650dSSadaf Ebrahimi
5442*22dc650dSSadaf Ebrahimi/^((yes|no)(*THEN)(*F))?/
5443*22dc650dSSadaf Ebrahimi\= Expect no match
5444*22dc650dSSadaf Ebrahimi    yes
5445*22dc650dSSadaf Ebrahimi
5446*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) (*FAIL)/x
5447*22dc650dSSadaf Ebrahimi\= Expect no match
5448*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5449*22dc650dSSadaf Ebrahimi
5450*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) z/x
5451*22dc650dSSadaf Ebrahimi\= Expect no match
5452*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5453*22dc650dSSadaf Ebrahimi
5454*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) \s* (*FAIL)/x
5455*22dc650dSSadaf Ebrahimi\= Expect no match
5456*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5457*22dc650dSSadaf Ebrahimi
5458*22dc650dSSadaf Ebrahimi/(A (.*)   C? (*THEN)  | A D) \s* z/x
5459*22dc650dSSadaf Ebrahimi\= Expect no match
5460*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5461*22dc650dSSadaf Ebrahimi
5462*22dc650dSSadaf Ebrahimi/(A (.*)   (?:C|) (*THEN)  | A D) (*FAIL)/x
5463*22dc650dSSadaf Ebrahimi\= Expect no match
5464*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5465*22dc650dSSadaf Ebrahimi
5466*22dc650dSSadaf Ebrahimi/(A (.*)   (?:C|) (*THEN)  | A D) z/x
5467*22dc650dSSadaf Ebrahimi\= Expect no match
5468*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5469*22dc650dSSadaf Ebrahimi
5470*22dc650dSSadaf Ebrahimi/(A (.*)   C{0,6} (*THEN)  | A D) (*FAIL)/x
5471*22dc650dSSadaf Ebrahimi\= Expect no match
5472*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5473*22dc650dSSadaf Ebrahimi
5474*22dc650dSSadaf Ebrahimi/(A (.*)   C{0,6} (*THEN)  | A D) z/x
5475*22dc650dSSadaf Ebrahimi\= Expect no match
5476*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5477*22dc650dSSadaf Ebrahimi
5478*22dc650dSSadaf Ebrahimi/(A (.*)   (CE){0,6} (*THEN)  | A D) (*FAIL)/x
5479*22dc650dSSadaf Ebrahimi\= Expect no match
5480*22dc650dSSadaf Ebrahimi    AbcdCEBefgBhiBqz
5481*22dc650dSSadaf Ebrahimi
5482*22dc650dSSadaf Ebrahimi/(A (.*)   (CE){0,6} (*THEN)  | A D) z/x
5483*22dc650dSSadaf Ebrahimi\= Expect no match
5484*22dc650dSSadaf Ebrahimi    AbcdCEBefgBhiBqz
5485*22dc650dSSadaf Ebrahimi
5486*22dc650dSSadaf Ebrahimi/(A (.*)   (CE*){0,6} (*THEN)  | A D) (*FAIL)/x
5487*22dc650dSSadaf Ebrahimi\= Expect no match
5488*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5489*22dc650dSSadaf Ebrahimi
5490*22dc650dSSadaf Ebrahimi/(A (.*)   (CE*){0,6} (*THEN)  | A D) z/x
5491*22dc650dSSadaf Ebrahimi\= Expect no match
5492*22dc650dSSadaf Ebrahimi    AbcdCBefgBhiBqz
5493*22dc650dSSadaf Ebrahimi
5494*22dc650dSSadaf Ebrahimi/(?=a(*COMMIT)b|ac)ac|ac/
5495*22dc650dSSadaf Ebrahimi\= Expect no match
5496*22dc650dSSadaf Ebrahimi    ac
5497*22dc650dSSadaf Ebrahimi
5498*22dc650dSSadaf Ebrahimi/(?=a(*COMMIT)b|(ac)) ac | (a)c/x
5499*22dc650dSSadaf Ebrahimi\= Expect no match
5500*22dc650dSSadaf Ebrahimi    ac
5501*22dc650dSSadaf Ebrahimi
5502*22dc650dSSadaf Ebrahimi# ----
5503*22dc650dSSadaf Ebrahimi
5504*22dc650dSSadaf Ebrahimi/(?(?!b(*THEN)a)bn|bnn)/
5505*22dc650dSSadaf Ebrahimi    bnn
5506*22dc650dSSadaf Ebrahimi
5507*22dc650dSSadaf Ebrahimi/(?!b(*SKIP)a)bn|bnn/
5508*22dc650dSSadaf Ebrahimi    bnn
5509*22dc650dSSadaf Ebrahimi
5510*22dc650dSSadaf Ebrahimi/(?(?!b(*SKIP)a)bn|bnn)/
5511*22dc650dSSadaf Ebrahimi    bnn
5512*22dc650dSSadaf Ebrahimi
5513*22dc650dSSadaf Ebrahimi/(?!b(*PRUNE)a)bn|bnn/
5514*22dc650dSSadaf Ebrahimi    bnn
5515*22dc650dSSadaf Ebrahimi
5516*22dc650dSSadaf Ebrahimi/(?(?!b(*PRUNE)a)bn|bnn)/
5517*22dc650dSSadaf Ebrahimi    bnn
5518*22dc650dSSadaf Ebrahimi
5519*22dc650dSSadaf Ebrahimi/(?!b(*COMMIT)a)bn|bnn/
5520*22dc650dSSadaf Ebrahimi    bnn
5521*22dc650dSSadaf Ebrahimi
5522*22dc650dSSadaf Ebrahimi/(?(?!b(*COMMIT)a)bn|bnn)/
5523*22dc650dSSadaf Ebrahimi   bnn
5524*22dc650dSSadaf Ebrahimi
5525*22dc650dSSadaf Ebrahimi/(?=b(*SKIP)a)bn|bnn/
5526*22dc650dSSadaf Ebrahimi\= Expect no match
5527*22dc650dSSadaf Ebrahimi    bnn
5528*22dc650dSSadaf Ebrahimi
5529*22dc650dSSadaf Ebrahimi/(?=b(*THEN)a)bn|bnn/
5530*22dc650dSSadaf Ebrahimi    bnn
5531*22dc650dSSadaf Ebrahimi
5532*22dc650dSSadaf Ebrahimi/^(?!a(*SKIP)b)/
5533*22dc650dSSadaf Ebrahimi    ac
5534*22dc650dSSadaf Ebrahimi
5535*22dc650dSSadaf Ebrahimi/^(?!a(*SKIP)b)../
5536*22dc650dSSadaf Ebrahimi    acd
5537*22dc650dSSadaf Ebrahimi
5538*22dc650dSSadaf Ebrahimi/(?!a(*SKIP)b)../
5539*22dc650dSSadaf Ebrahimi    acd
5540*22dc650dSSadaf Ebrahimi
5541*22dc650dSSadaf Ebrahimi/^(?(?!a(*SKIP)b))/
5542*22dc650dSSadaf Ebrahimi    ac
5543*22dc650dSSadaf Ebrahimi
5544*22dc650dSSadaf Ebrahimi/^(?!a(*PRUNE)b)../
5545*22dc650dSSadaf Ebrahimi    acd
5546*22dc650dSSadaf Ebrahimi
5547*22dc650dSSadaf Ebrahimi/(?!a(*PRUNE)b)../
5548*22dc650dSSadaf Ebrahimi    acd
5549*22dc650dSSadaf Ebrahimi
5550*22dc650dSSadaf Ebrahimi/(?!a(*COMMIT)b)ac|cd/
5551*22dc650dSSadaf Ebrahimi    ac
5552*22dc650dSSadaf Ebrahimi
5553*22dc650dSSadaf Ebrahimi/\A.*?(?:a|bc)/
5554*22dc650dSSadaf Ebrahimi    ba
5555*22dc650dSSadaf Ebrahimi
5556*22dc650dSSadaf Ebrahimi/^(A(*THEN)B|C(*THEN)D)/
5557*22dc650dSSadaf Ebrahimi    CD
5558*22dc650dSSadaf Ebrahimi
5559*22dc650dSSadaf Ebrahimi/(*:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
5560*22dc650dSSadaf Ebrahimi    abc
5561*22dc650dSSadaf Ebrahimi
5562*22dc650dSSadaf Ebrahimi/(*PRUNE:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
5563*22dc650dSSadaf Ebrahimi    abc
5564*22dc650dSSadaf Ebrahimi
5565*22dc650dSSadaf Ebrahimi/(*SKIP:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
5566*22dc650dSSadaf Ebrahimi    abc
5567*22dc650dSSadaf Ebrahimi
5568*22dc650dSSadaf Ebrahimi/(*THEN:m(m)(?&y)(?(DEFINE)(?<y>b))/mark
5569*22dc650dSSadaf Ebrahimi    abc
5570*22dc650dSSadaf Ebrahimi
5571*22dc650dSSadaf Ebrahimi/^\d*\w{4}/
5572*22dc650dSSadaf Ebrahimi    1234
5573*22dc650dSSadaf Ebrahimi\= Expect no match
5574*22dc650dSSadaf Ebrahimi    123
5575*22dc650dSSadaf Ebrahimi
5576*22dc650dSSadaf Ebrahimi/^[^b]*\w{4}/
5577*22dc650dSSadaf Ebrahimi    aaaa
5578*22dc650dSSadaf Ebrahimi\= Expect no match
5579*22dc650dSSadaf Ebrahimi    aaa
5580*22dc650dSSadaf Ebrahimi
5581*22dc650dSSadaf Ebrahimi/^[^b]*\w{4}/i
5582*22dc650dSSadaf Ebrahimi    aaaa
5583*22dc650dSSadaf Ebrahimi\= Expect no match
5584*22dc650dSSadaf Ebrahimi    aaa
5585*22dc650dSSadaf Ebrahimi
5586*22dc650dSSadaf Ebrahimi/^a*\w{4}/
5587*22dc650dSSadaf Ebrahimi    aaaa
5588*22dc650dSSadaf Ebrahimi\= Expect no match
5589*22dc650dSSadaf Ebrahimi    aaa
5590*22dc650dSSadaf Ebrahimi
5591*22dc650dSSadaf Ebrahimi/^a*\w{4}/i
5592*22dc650dSSadaf Ebrahimi    aaaa
5593*22dc650dSSadaf Ebrahimi\= Expect no match
5594*22dc650dSSadaf Ebrahimi    aaa
5595*22dc650dSSadaf Ebrahimi
5596*22dc650dSSadaf Ebrahimi/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
5597*22dc650dSSadaf Ebrahimi    foofoo
5598*22dc650dSSadaf Ebrahimi    barbar
5599*22dc650dSSadaf Ebrahimi
5600*22dc650dSSadaf Ebrahimi/(?<n>A)(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
5601*22dc650dSSadaf Ebrahimi    AfooA
5602*22dc650dSSadaf Ebrahimi    AbarA
5603*22dc650dSSadaf Ebrahimi\= Expect no match
5604*22dc650dSSadaf Ebrahimi    Afoofoo
5605*22dc650dSSadaf Ebrahimi    Abarbar
5606*22dc650dSSadaf Ebrahimi
5607*22dc650dSSadaf Ebrahimi/^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
5608*22dc650dSSadaf Ebrahimi    1 IN SOA non-sp1 non-sp2(
5609*22dc650dSSadaf Ebrahimi
5610*22dc650dSSadaf Ebrahimi/^ (?:(?<A>A)|(?'B'B)(?<A>A)) (?('A')x) (?(<B>)y)$/x,dupnames
5611*22dc650dSSadaf Ebrahimi    Ax
5612*22dc650dSSadaf Ebrahimi    BAxy
5613*22dc650dSSadaf Ebrahimi
5614*22dc650dSSadaf Ebrahimi/^A\xZ/
5615*22dc650dSSadaf Ebrahimi    A\0Z
5616*22dc650dSSadaf Ebrahimi
5617*22dc650dSSadaf Ebrahimi/^A\o{123}B/
5618*22dc650dSSadaf Ebrahimi    A\123B
5619*22dc650dSSadaf Ebrahimi
5620*22dc650dSSadaf Ebrahimi/ ^ a + + b $ /x
5621*22dc650dSSadaf Ebrahimi    aaaab
5622*22dc650dSSadaf Ebrahimi
5623*22dc650dSSadaf Ebrahimi/ ^ a + #comment
5624*22dc650dSSadaf Ebrahimi  + b $ /x
5625*22dc650dSSadaf Ebrahimi    aaaab
5626*22dc650dSSadaf Ebrahimi
5627*22dc650dSSadaf Ebrahimi/ ^ a + #comment
5628*22dc650dSSadaf Ebrahimi  #comment
5629*22dc650dSSadaf Ebrahimi  + b $ /x
5630*22dc650dSSadaf Ebrahimi    aaaab
5631*22dc650dSSadaf Ebrahimi
5632*22dc650dSSadaf Ebrahimi/ ^ (?> a + ) b $ /x
5633*22dc650dSSadaf Ebrahimi    aaaab
5634*22dc650dSSadaf Ebrahimi
5635*22dc650dSSadaf Ebrahimi/ ^ ( a + ) + + \w $ /x
5636*22dc650dSSadaf Ebrahimi    aaaab
5637*22dc650dSSadaf Ebrahimi
5638*22dc650dSSadaf Ebrahimi/(?:a\Kb)*+/aftertext
5639*22dc650dSSadaf Ebrahimi    ababc
5640*22dc650dSSadaf Ebrahimi
5641*22dc650dSSadaf Ebrahimi/(?>a\Kb)*/aftertext
5642*22dc650dSSadaf Ebrahimi    ababc
5643*22dc650dSSadaf Ebrahimi
5644*22dc650dSSadaf Ebrahimi/(?:a\Kb)*/aftertext
5645*22dc650dSSadaf Ebrahimi    ababc
5646*22dc650dSSadaf Ebrahimi
5647*22dc650dSSadaf Ebrahimi/(a\Kb)*+/aftertext
5648*22dc650dSSadaf Ebrahimi    ababc
5649*22dc650dSSadaf Ebrahimi
5650*22dc650dSSadaf Ebrahimi/(a\Kb)*/aftertext
5651*22dc650dSSadaf Ebrahimi    ababc
5652*22dc650dSSadaf Ebrahimi
5653*22dc650dSSadaf Ebrahimi/(?:x|(?:(xx|yy)+|x|x|x|x|x)|a|a|a)bc/
5654*22dc650dSSadaf Ebrahimi\= Expect no match
5655*22dc650dSSadaf Ebrahimi    acb
5656*22dc650dSSadaf Ebrahimi
5657*22dc650dSSadaf Ebrahimi/\A(?:[^\"]++|\"(?:[^\"]*+|\"\")*+\")++/
5658*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5659*22dc650dSSadaf Ebrahimi
5660*22dc650dSSadaf Ebrahimi/\A(?:[^\"]++|\"(?:[^\"]++|\"\")*+\")++/
5661*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5662*22dc650dSSadaf Ebrahimi
5663*22dc650dSSadaf Ebrahimi/\A(?:[^\"]++|\"(?:[^\"]++|\"\")++\")++/
5664*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5665*22dc650dSSadaf Ebrahimi
5666*22dc650dSSadaf Ebrahimi/\A([^\"1]++|[\"2]([^\"3]*+|[\"4][\"5])*+[\"6])++/
5667*22dc650dSSadaf Ebrahimi    NON QUOTED \"QUOT\"\"ED\" AFTER \"NOT MATCHED
5668*22dc650dSSadaf Ebrahimi
5669*22dc650dSSadaf Ebrahimi/^\w+(?>\s*)(?<=\w)/
5670*22dc650dSSadaf Ebrahimi    test test
5671*22dc650dSSadaf Ebrahimi
5672*22dc650dSSadaf Ebrahimi/(?P<same>a)(?P<same>b)/g,dupnames
5673*22dc650dSSadaf Ebrahimi    abbaba
5674*22dc650dSSadaf Ebrahimi
5675*22dc650dSSadaf Ebrahimi/(?P<same>a)(?P<same>b)(?P=same)/g,dupnames
5676*22dc650dSSadaf Ebrahimi    abbaba
5677*22dc650dSSadaf Ebrahimi
5678*22dc650dSSadaf Ebrahimi/(?P=same)?(?P<same>a)(?P<same>b)/g,dupnames
5679*22dc650dSSadaf Ebrahimi    abbaba
5680*22dc650dSSadaf Ebrahimi
5681*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
5682*22dc650dSSadaf Ebrahimi\= Expect no match
5683*22dc650dSSadaf Ebrahimi    bbbaaaccccaaabbbcc
5684*22dc650dSSadaf Ebrahimi
5685*22dc650dSSadaf Ebrahimi/(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
5686*22dc650dSSadaf Ebrahimi    acl
5687*22dc650dSSadaf Ebrahimi    bdl
5688*22dc650dSSadaf Ebrahimi    adl
5689*22dc650dSSadaf Ebrahimi    bcl
5690*22dc650dSSadaf Ebrahimi
5691*22dc650dSSadaf Ebrahimi/\sabc/
5692*22dc650dSSadaf Ebrahimi    \x{0b}abc
5693*22dc650dSSadaf Ebrahimi
5694*22dc650dSSadaf Ebrahimi/[\Qa]\E]+/
5695*22dc650dSSadaf Ebrahimi    aa]]
5696*22dc650dSSadaf Ebrahimi
5697*22dc650dSSadaf Ebrahimi/[\Q]a\E]+/
5698*22dc650dSSadaf Ebrahimi    aa]]
5699*22dc650dSSadaf Ebrahimi
5700*22dc650dSSadaf Ebrahimi/A((((((((a))))))))\8B/
5701*22dc650dSSadaf Ebrahimi    AaaB
5702*22dc650dSSadaf Ebrahimi
5703*22dc650dSSadaf Ebrahimi/A(((((((((a)))))))))\9B/
5704*22dc650dSSadaf Ebrahimi    AaaB
5705*22dc650dSSadaf Ebrahimi
5706*22dc650dSSadaf Ebrahimi/A[\8\9]B/
5707*22dc650dSSadaf Ebrahimi    A8B
5708*22dc650dSSadaf Ebrahimi    A9B
5709*22dc650dSSadaf Ebrahimi
5710*22dc650dSSadaf Ebrahimi/(|ab)*?d/
5711*22dc650dSSadaf Ebrahimi   abd
5712*22dc650dSSadaf Ebrahimi   xyd
5713*22dc650dSSadaf Ebrahimi
5714*22dc650dSSadaf Ebrahimi/(?:((abcd))|(((?:(?:(?:(?:abc|(?:abcdef))))b)abcdefghi)abc)|((*ACCEPT)))/
5715*22dc650dSSadaf Ebrahimi    1234abcd
5716*22dc650dSSadaf Ebrahimi
5717*22dc650dSSadaf Ebrahimi/(\2|a)(\1)/
5718*22dc650dSSadaf Ebrahimi    aaa
5719*22dc650dSSadaf Ebrahimi
5720*22dc650dSSadaf Ebrahimi/(\2)(\1)/
5721*22dc650dSSadaf Ebrahimi
5722*22dc650dSSadaf Ebrahimi/Z*(|d*){216}/
5723*22dc650dSSadaf Ebrahimi
5724*22dc650dSSadaf Ebrahimi/(?1)(?#?'){8}(a)/
5725*22dc650dSSadaf Ebrahimi    baaaaaaaaac
5726*22dc650dSSadaf Ebrahimi
5727*22dc650dSSadaf Ebrahimi/((((((((((((x))))))))))))\12/
5728*22dc650dSSadaf Ebrahimi    xx
5729*22dc650dSSadaf Ebrahimi
5730*22dc650dSSadaf Ebrahimi/A[\8]B[\9]C/
5731*22dc650dSSadaf Ebrahimi    A8B9C
5732*22dc650dSSadaf Ebrahimi
5733*22dc650dSSadaf Ebrahimi/(?1)()((((((\1++))\x85)+)|))/
5734*22dc650dSSadaf Ebrahimi    \x85\x85
5735*22dc650dSSadaf Ebrahimi
5736*22dc650dSSadaf Ebrahimi/(?|(\k'Pm')|(?'Pm'))/
5737*22dc650dSSadaf Ebrahimi    abcd
5738*22dc650dSSadaf Ebrahimi
5739*22dc650dSSadaf Ebrahimi/(?|(aaa)|(b))\g{1}/
5740*22dc650dSSadaf Ebrahimi    aaaaaa
5741*22dc650dSSadaf Ebrahimi    bb
5742*22dc650dSSadaf Ebrahimi
5743*22dc650dSSadaf Ebrahimi/(?|(aaa)|(b))(?1)/
5744*22dc650dSSadaf Ebrahimi    aaaaaa
5745*22dc650dSSadaf Ebrahimi    baaa
5746*22dc650dSSadaf Ebrahimi\= Expect no match
5747*22dc650dSSadaf Ebrahimi    bb
5748*22dc650dSSadaf Ebrahimi
5749*22dc650dSSadaf Ebrahimi/(?|(aaa)|(b))/
5750*22dc650dSSadaf Ebrahimi    xaaa
5751*22dc650dSSadaf Ebrahimi    xbc
5752*22dc650dSSadaf Ebrahimi
5753*22dc650dSSadaf Ebrahimi/(?|(?'a'aaa)|(?'a'b))\k'a'/
5754*22dc650dSSadaf Ebrahimi    aaaaaa
5755*22dc650dSSadaf Ebrahimi    bb
5756*22dc650dSSadaf Ebrahimi
5757*22dc650dSSadaf Ebrahimi/(?|(?'a'aaa)|(?'a'b))(?'a'cccc)\k'a'/dupnames
5758*22dc650dSSadaf Ebrahimi    aaaccccaaa
5759*22dc650dSSadaf Ebrahimi    bccccb
5760*22dc650dSSadaf Ebrahimi
5761*22dc650dSSadaf Ebrahimi# /x does not apply to MARK labels
5762*22dc650dSSadaf Ebrahimi
5763*22dc650dSSadaf Ebrahimi/x (*MARK:ab cd # comment
5764*22dc650dSSadaf Ebrahimief) x/x,mark
5765*22dc650dSSadaf Ebrahimi    axxz
5766*22dc650dSSadaf Ebrahimi
5767*22dc650dSSadaf Ebrahimi/(?<=a(B){0}c)X/
5768*22dc650dSSadaf Ebrahimi    acX
5769*22dc650dSSadaf Ebrahimi
5770*22dc650dSSadaf Ebrahimi/(?<DEFINE>b)(?(DEFINE)(a+))(?&DEFINE)/
5771*22dc650dSSadaf Ebrahimi    bbbb
5772*22dc650dSSadaf Ebrahimi\= Expect no match
5773*22dc650dSSadaf Ebrahimi    baaab
5774*22dc650dSSadaf Ebrahimi
5775*22dc650dSSadaf Ebrahimi/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\s])/
5776*22dc650dSSadaf Ebrahimi    \   Fred:099
5777*22dc650dSSadaf Ebrahimi
5778*22dc650dSSadaf Ebrahimi/(?=.*X)X$/
5779*22dc650dSSadaf Ebrahimi    \  X
5780*22dc650dSSadaf Ebrahimi
5781*22dc650dSSadaf Ebrahimi/(?s)(?=.*?)b/
5782*22dc650dSSadaf Ebrahimi    aabc
5783*22dc650dSSadaf Ebrahimi
5784*22dc650dSSadaf Ebrahimi/(Z)(a)\2{1,2}?(?-i)\1X/i
5785*22dc650dSSadaf Ebrahimi    ZaAAZX
5786*22dc650dSSadaf Ebrahimi
5787*22dc650dSSadaf Ebrahimi/(?'c')XX(?'YYYYYYYYYYYYYYYYYYYYYYYCl')/
5788*22dc650dSSadaf Ebrahimi
5789*22dc650dSSadaf Ebrahimi/[s[:digit:]\E-H]+/
5790*22dc650dSSadaf Ebrahimi    s09-H
5791*22dc650dSSadaf Ebrahimi
5792*22dc650dSSadaf Ebrahimi/[s[:digit:]\Q\E-H]+/
5793*22dc650dSSadaf Ebrahimi    s09-H
5794*22dc650dSSadaf Ebrahimi
5795*22dc650dSSadaf Ebrahimi/a+(?:|b)a/
5796*22dc650dSSadaf Ebrahimi    aaaa
5797*22dc650dSSadaf Ebrahimi
5798*22dc650dSSadaf Ebrahimi/X?(R||){3335}/
5799*22dc650dSSadaf Ebrahimi
5800*22dc650dSSadaf Ebrahimi/(?1)(A(*COMMIT)|B)D/
5801*22dc650dSSadaf Ebrahimi    ABD
5802*22dc650dSSadaf Ebrahimi    XABD
5803*22dc650dSSadaf Ebrahimi    BAD
5804*22dc650dSSadaf Ebrahimi    ABXABD
5805*22dc650dSSadaf Ebrahimi\= Expect no match
5806*22dc650dSSadaf Ebrahimi    ABX
5807*22dc650dSSadaf Ebrahimi
5808*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<m> 1? (?=(?<cond>2)?) 1 2 (?('cond')|3)))
5809*22dc650dSSadaf Ebrahimi    \A
5810*22dc650dSSadaf Ebrahimi    ()
5811*22dc650dSSadaf Ebrahimi    (?&m)
5812*22dc650dSSadaf Ebrahimi    \Z/x
5813*22dc650dSSadaf Ebrahimi    123
5814*22dc650dSSadaf Ebrahimi
5815*22dc650dSSadaf Ebrahimi/^(?:
5816*22dc650dSSadaf Ebrahimi(?: A| (1? (?=(?<cond>2)?) (1) 2 (?('cond')|3)) )
5817*22dc650dSSadaf Ebrahimi(Z)
5818*22dc650dSSadaf Ebrahimi)+$/x
5819*22dc650dSSadaf Ebrahimi    AZ123Z
5820*22dc650dSSadaf Ebrahimi\= Expect no match
5821*22dc650dSSadaf Ebrahimi    AZ12Z
5822*22dc650dSSadaf Ebrahimi
5823*22dc650dSSadaf Ebrahimi/^ (?(DEFINE) ( (?!(a)\2b)..) )   ()(?1)  /x
5824*22dc650dSSadaf Ebrahimi    acb
5825*22dc650dSSadaf Ebrahimi\= Expect no match
5826*22dc650dSSadaf Ebrahimi    aab
5827*22dc650dSSadaf Ebrahimi
5828*22dc650dSSadaf Ebrahimi/(?>ab|abab){1,5}?M/
5829*22dc650dSSadaf Ebrahimi    abababababababababababM
5830*22dc650dSSadaf Ebrahimi
5831*22dc650dSSadaf Ebrahimi/(?>ab|abab){2}?M/
5832*22dc650dSSadaf Ebrahimi    abababM
5833*22dc650dSSadaf Ebrahimi
5834*22dc650dSSadaf Ebrahimi/((?(?=(a))a)+k)/
5835*22dc650dSSadaf Ebrahimi    bbak
5836*22dc650dSSadaf Ebrahimi
5837*22dc650dSSadaf Ebrahimi/((?(?=(a))a|)+k)/
5838*22dc650dSSadaf Ebrahimi    bbak
5839*22dc650dSSadaf Ebrahimi
5840*22dc650dSSadaf Ebrahimi/(?(?!(b))a|b)+k/
5841*22dc650dSSadaf Ebrahimi    ababbalbbadabak
5842*22dc650dSSadaf Ebrahimi
5843*22dc650dSSadaf Ebrahimi/(?!(b))c|b/
5844*22dc650dSSadaf Ebrahimi    Ab
5845*22dc650dSSadaf Ebrahimi    Ac
5846*22dc650dSSadaf Ebrahimi
5847*22dc650dSSadaf Ebrahimi/(?=(b))b|c/
5848*22dc650dSSadaf Ebrahimi    Ab
5849*22dc650dSSadaf Ebrahimi    Ac
5850*22dc650dSSadaf Ebrahimi
5851*22dc650dSSadaf Ebrahimi/^(.|(.)(?1)\2)$/
5852*22dc650dSSadaf Ebrahimi    a
5853*22dc650dSSadaf Ebrahimi    aba
5854*22dc650dSSadaf Ebrahimi    abcba
5855*22dc650dSSadaf Ebrahimi    ababa
5856*22dc650dSSadaf Ebrahimi    abcdcba
5857*22dc650dSSadaf Ebrahimi
5858*22dc650dSSadaf Ebrahimi/^((.)(?1)\2|.?)$/
5859*22dc650dSSadaf Ebrahimi    a
5860*22dc650dSSadaf Ebrahimi    aba
5861*22dc650dSSadaf Ebrahimi    abba
5862*22dc650dSSadaf Ebrahimi    abcba
5863*22dc650dSSadaf Ebrahimi    ababa
5864*22dc650dSSadaf Ebrahimi    abccba
5865*22dc650dSSadaf Ebrahimi    abcdcba
5866*22dc650dSSadaf Ebrahimi    abcddcba
5867*22dc650dSSadaf Ebrahimi
5868*22dc650dSSadaf Ebrahimi/^(.)(\1|a(?2))/
5869*22dc650dSSadaf Ebrahimi    bab
5870*22dc650dSSadaf Ebrahimi
5871*22dc650dSSadaf Ebrahimi/^(.|(.)(?1)?\2)$/
5872*22dc650dSSadaf Ebrahimi    abcba
5873*22dc650dSSadaf Ebrahimi
5874*22dc650dSSadaf Ebrahimi/^(?(?=(a))abc|def)/
5875*22dc650dSSadaf Ebrahimi    abc
5876*22dc650dSSadaf Ebrahimi
5877*22dc650dSSadaf Ebrahimi/^(?(?!(a))def|abc)/
5878*22dc650dSSadaf Ebrahimi    abc
5879*22dc650dSSadaf Ebrahimi
5880*22dc650dSSadaf Ebrahimi/^(?(?=(a)(*ACCEPT))abc|def)/
5881*22dc650dSSadaf Ebrahimi    abc
5882*22dc650dSSadaf Ebrahimi
5883*22dc650dSSadaf Ebrahimi/^(?(?!(a)(*ACCEPT))def|abc)/
5884*22dc650dSSadaf Ebrahimi    abc
5885*22dc650dSSadaf Ebrahimi
5886*22dc650dSSadaf Ebrahimi/^(?1)\d{3}(a)/
5887*22dc650dSSadaf Ebrahimi    a123a
5888*22dc650dSSadaf Ebrahimi
5889*22dc650dSSadaf Ebrahimi# This pattern uses a lot of named subpatterns in order to match email
5890*22dc650dSSadaf Ebrahimi# addresses in various formats. It's a heavy test for named subpatterns. In the
5891*22dc650dSSadaf Ebrahimi# <atext> group, slash is coded as \x{2f} so that this pattern can also be
5892*22dc650dSSadaf Ebrahimi# processed by perltest.sh, which does not cater for an escaped delimiter
5893*22dc650dSSadaf Ebrahimi# within the pattern. $ within the pattern must also be escaped. All $ and @
5894*22dc650dSSadaf Ebrahimi# characters in subject strings are escaped so that Perl doesn't interpret them
5895*22dc650dSSadaf Ebrahimi# as variable insertions and " characters must also be escaped for Perl.
5896*22dc650dSSadaf Ebrahimi
5897*22dc650dSSadaf Ebrahimi# This set of subpatterns is more or less a direct transliteration of the BNF
5898*22dc650dSSadaf Ebrahimi# definitions in RFC2822, without any of the obsolete features. The addition of
5899*22dc650dSSadaf Ebrahimi# a possessive + to the definition of <phrase> reduced the match limit in PCRE2
5900*22dc650dSSadaf Ebrahimi# from over 5 million to just under 400, and eliminated a very noticeable delay
5901*22dc650dSSadaf Ebrahimi# when this file was passed to perltest.sh.
5902*22dc650dSSadaf Ebrahimi
5903*22dc650dSSadaf Ebrahimi/(?ix)(?(DEFINE)
5904*22dc650dSSadaf Ebrahimi(?<addr_spec>       (?&local_part) \@ (?&domain) )
5905*22dc650dSSadaf Ebrahimi(?<angle_addr>      (?&CFWS)?+ < (?&addr_spec) > (?&CFWS)?+ )
5906*22dc650dSSadaf Ebrahimi(?<atext>           [a-z\d!#\$%&'*+-\x{2f}=?^_`{|}~] )
5907*22dc650dSSadaf Ebrahimi(?<atom>            (?&CFWS)?+ (?&atext)+ (?&CFWS)?+ )
5908*22dc650dSSadaf Ebrahimi(?<ccontent>        (?&ctext) | (?&quoted_pair) | (?&comment) )
5909*22dc650dSSadaf Ebrahimi(?<ctext>           [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ ()\\] )
5910*22dc650dSSadaf Ebrahimi(?<comment>         \( (?: (?&FWS)?+ (?&ccontent) )*+ (?&FWS)?+ \) )
5911*22dc650dSSadaf Ebrahimi(?<CFWS>            (?: (?&FWS)?+ (?&comment) )* (?# NOT possessive)
5912*22dc650dSSadaf Ebrahimi                    (?: (?&FWS)?+ (?&comment) | (?&FWS) ) )
5913*22dc650dSSadaf Ebrahimi(?<dcontent>        (?&dtext) | (?&quoted_pair) )
5914*22dc650dSSadaf Ebrahimi(?<display_name>    (?&phrase) )
5915*22dc650dSSadaf Ebrahimi(?<domain>          (?&dot_atom) | (?&domain_literal) )
5916*22dc650dSSadaf Ebrahimi(?<domain_literal>  (?&CFWS)?+ \[ (?: (?&FWS)?+ (?&dcontent) )* (?&FWS)?+ \]
5917*22dc650dSSadaf Ebrahimi                    (?&CFWS)?+ )
5918*22dc650dSSadaf Ebrahimi(?<dot_atom>        (?&CFWS)?+ (?&dot_atom_text) (?&CFWS)?+ )
5919*22dc650dSSadaf Ebrahimi(?<dot_atom_text>   (?&atext)++ (?: \. (?&atext)++)*+ )
5920*22dc650dSSadaf Ebrahimi(?<dtext>           [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ \[\]\\] )
5921*22dc650dSSadaf Ebrahimi(?<FWS>             (?: [\t\ ]*+ \n)?+ [\t\ ]++ )
5922*22dc650dSSadaf Ebrahimi(?<local_part>      (?&dot_atom) | (?&quoted_string)  )
5923*22dc650dSSadaf Ebrahimi(?<mailbox>         (?&name_addr) | (?&addr_spec) )
5924*22dc650dSSadaf Ebrahimi(?<name_addr>       (?&display_name)? (?&angle_addr) )
5925*22dc650dSSadaf Ebrahimi(?<phrase>          (?&word)++ )
5926*22dc650dSSadaf Ebrahimi(?<qcontent>        (?&qtext) | (?&quoted_pair) )
5927*22dc650dSSadaf Ebrahimi(?<quoted_pair>     " (?&text) )
5928*22dc650dSSadaf Ebrahimi(?<quoted_string>   (?&CFWS)?+ " (?: (?&FWS)?+ (?&qcontent))* (?&FWS)?+ "
5929*22dc650dSSadaf Ebrahimi                    (?&CFWS)?+ )
5930*22dc650dSSadaf Ebrahimi(?<qtext>           [^\x{9}\x{10}\x{13}\x{7f}-\x{ff}\ "\\] )
5931*22dc650dSSadaf Ebrahimi(?<text>            [^\r\n] )
5932*22dc650dSSadaf Ebrahimi(?<word>            (?&atom) | (?&quoted_string) )
5933*22dc650dSSadaf Ebrahimi) # End DEFINE
5934*22dc650dSSadaf Ebrahimi^(?&mailbox)$/
5935*22dc650dSSadaf Ebrahimi    Alan Other <user\@dom.ain>
5936*22dc650dSSadaf Ebrahimi    <user\@dom.ain>
5937*22dc650dSSadaf Ebrahimi    user\@dom.ain
5938*22dc650dSSadaf Ebrahimi    user\@[]
5939*22dc650dSSadaf Ebrahimi    user\@[domain literal]
5940*22dc650dSSadaf Ebrahimi    user\@[domain literal with \"[square brackets\"] inside]
5941*22dc650dSSadaf Ebrahimi    \"A. Other\" <user.1234\@dom.ain> (a comment)
5942*22dc650dSSadaf Ebrahimi    A. Other <user.1234\@dom.ain> (a comment)
5943*22dc650dSSadaf Ebrahimi    \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
5944*22dc650dSSadaf Ebrahimi\= Expect no match
5945*22dc650dSSadaf Ebrahimi    A missing angle <user\@some.where
5946*22dc650dSSadaf Ebrahimi    The quick brown fox
5947*22dc650dSSadaf Ebrahimi
5948*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
5949*22dc650dSSadaf Ebrahimi
5950*22dc650dSSadaf Ebrahimi# This pattern uses named groups to match default PCRE2 patterns. It's another
5951*22dc650dSSadaf Ebrahimi# heavy test for named subpatterns. Once again, code slash as \x{2f} and escape
5952*22dc650dSSadaf Ebrahimi# $ even in classes so that this works with pcre2test.
5953*22dc650dSSadaf Ebrahimi
5954*22dc650dSSadaf Ebrahimi/(?sx)(?(DEFINE)
5955*22dc650dSSadaf Ebrahimi
5956*22dc650dSSadaf Ebrahimi(?<assertion>         (?&simple_assertion) | (?&lookaround) )
5957*22dc650dSSadaf Ebrahimi
5958*22dc650dSSadaf Ebrahimi(?<atomic_group>      \( \? > (?&regex) \) )
5959*22dc650dSSadaf Ebrahimi
5960*22dc650dSSadaf Ebrahimi(?<back_reference>    \\ \d+ |
5961*22dc650dSSadaf Ebrahimi                      \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) |
5962*22dc650dSSadaf Ebrahimi                      \\k <(?&groupname)> |
5963*22dc650dSSadaf Ebrahimi                      \\k '(?&groupname)' |
5964*22dc650dSSadaf Ebrahimi                      \\k \{ (?&groupname) \} |
5965*22dc650dSSadaf Ebrahimi                      \( \? P= (?&groupname) \) )
5966*22dc650dSSadaf Ebrahimi
5967*22dc650dSSadaf Ebrahimi(?<branch>            (?:(?&assertion) |
5968*22dc650dSSadaf Ebrahimi                         (?&callout) |
5969*22dc650dSSadaf Ebrahimi                         (?&comment) |
5970*22dc650dSSadaf Ebrahimi                         (?&option_setting) |
5971*22dc650dSSadaf Ebrahimi                         (?&qualified_item) |
5972*22dc650dSSadaf Ebrahimi                         (?&quoted_string) |
5973*22dc650dSSadaf Ebrahimi                         (?&quoted_string_empty) |
5974*22dc650dSSadaf Ebrahimi                         (?&special_escape) |
5975*22dc650dSSadaf Ebrahimi                         (?&verb)
5976*22dc650dSSadaf Ebrahimi                      )* )
5977*22dc650dSSadaf Ebrahimi
5978*22dc650dSSadaf Ebrahimi(?<callout>           \(\?C (?: \d+ |
5979*22dc650dSSadaf Ebrahimi                      (?: (?<D>["'`^%\#\$])
5980*22dc650dSSadaf Ebrahimi                        (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' |
5981*22dc650dSSadaf Ebrahimi                      \{ (?: \}\} | [^}]*+ )* \} )
5982*22dc650dSSadaf Ebrahimi                      )? \) )
5983*22dc650dSSadaf Ebrahimi
5984*22dc650dSSadaf Ebrahimi(?<capturing_group>   \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )?
5985*22dc650dSSadaf Ebrahimi                      (?&regex) \) )
5986*22dc650dSSadaf Ebrahimi
5987*22dc650dSSadaf Ebrahimi(?<character_class>   \[ \^?+ (?: \] (?&class_item)* | (?&class_item)+ ) \] )
5988*22dc650dSSadaf Ebrahimi
5989*22dc650dSSadaf Ebrahimi(?<character_type>    (?! \\N\{\w+\} ) \\ [dDsSwWhHvVRN] )
5990*22dc650dSSadaf Ebrahimi
5991*22dc650dSSadaf Ebrahimi(?<class_item>        (?: \[ : (?:
5992*22dc650dSSadaf Ebrahimi                      alnum|alpha|ascii|blank|cntrl|digit|graph|lower|print|
5993*22dc650dSSadaf Ebrahimi                      punct|space|upper|word|xdigit
5994*22dc650dSSadaf Ebrahimi                      ) : \] |
5995*22dc650dSSadaf Ebrahimi                      (?&quoted_string) |
5996*22dc650dSSadaf Ebrahimi                      (?&quoted_string_empty) |
5997*22dc650dSSadaf Ebrahimi                      (?&escaped_character) |
5998*22dc650dSSadaf Ebrahimi                      (?&character_type) |
5999*22dc650dSSadaf Ebrahimi                      [^]] ) )
6000*22dc650dSSadaf Ebrahimi
6001*22dc650dSSadaf Ebrahimi(?<comment>           \(\?\# [^)]* \) | (?&quoted_string_empty) | \\E )
6002*22dc650dSSadaf Ebrahimi
6003*22dc650dSSadaf Ebrahimi(?<condition>         (?: \( [+-]? \d+ \) |
6004*22dc650dSSadaf Ebrahimi                          \( < (?&groupname) > \) |
6005*22dc650dSSadaf Ebrahimi                          \( ' (?&groupname) ' \) |
6006*22dc650dSSadaf Ebrahimi                          \( R \d* \) |
6007*22dc650dSSadaf Ebrahimi                          \( R & (?&groupname) \) |
6008*22dc650dSSadaf Ebrahimi                          \( (?&groupname) \) |
6009*22dc650dSSadaf Ebrahimi                          \( DEFINE \) |
6010*22dc650dSSadaf Ebrahimi                          \( VERSION >?=\d+(?:\.\d\d?)? \) |
6011*22dc650dSSadaf Ebrahimi                          (?&callout)?+ (?&comment)* (?&lookaround) ) )
6012*22dc650dSSadaf Ebrahimi
6013*22dc650dSSadaf Ebrahimi(?<conditional_group> \(\? (?&condition) (?&branch) (?: \| (?&branch) )? \) )
6014*22dc650dSSadaf Ebrahimi
6015*22dc650dSSadaf Ebrahimi(?<delimited_regex>   (?<delimiter> [-\x{2f}!"'`=_:;,%&@~]) (?&regex)
6016*22dc650dSSadaf Ebrahimi                      \k'delimiter' .* )
6017*22dc650dSSadaf Ebrahimi
6018*22dc650dSSadaf Ebrahimi(?<escaped_character> \\ (?: 0[0-7]{1,2} | [0-7]{1,3} | o\{ [0-7]+ \} |
6019*22dc650dSSadaf Ebrahimi                      x \{ (*COMMIT) [[:xdigit:]]* \} | x [[:xdigit:]]{0,2} |
6020*22dc650dSSadaf Ebrahimi                      [aefnrt] | c[[:print:]] |
6021*22dc650dSSadaf Ebrahimi                      [^[:alnum:]] ) )
6022*22dc650dSSadaf Ebrahimi
6023*22dc650dSSadaf Ebrahimi(?<group>             (?&capturing_group) | (?&non_capturing_group) |
6024*22dc650dSSadaf Ebrahimi                      (?&resetting_group) | (?&atomic_group) |
6025*22dc650dSSadaf Ebrahimi                      (?&conditional_group) )
6026*22dc650dSSadaf Ebrahimi
6027*22dc650dSSadaf Ebrahimi(?<groupname>         [a-zA-Z_]\w* )
6028*22dc650dSSadaf Ebrahimi
6029*22dc650dSSadaf Ebrahimi(?<literal_character> (?! (?&range_qualifier) ) [^[()|*+?.\$\\] )
6030*22dc650dSSadaf Ebrahimi
6031*22dc650dSSadaf Ebrahimi(?<lookaround>        \(\? (?: = | ! | <= | <! ) (?&regex) \) )
6032*22dc650dSSadaf Ebrahimi
6033*22dc650dSSadaf Ebrahimi(?<non_capturing_group> \(\? [iJmnsUx-]* : (?&regex) \) )
6034*22dc650dSSadaf Ebrahimi
6035*22dc650dSSadaf Ebrahimi(?<option_setting>    \(\? [iJmnsUx-]* \) )
6036*22dc650dSSadaf Ebrahimi
6037*22dc650dSSadaf Ebrahimi(?<qualified_item>    (?:\. |
6038*22dc650dSSadaf Ebrahimi                         (?&lookaround) |
6039*22dc650dSSadaf Ebrahimi                         (?&back_reference) |
6040*22dc650dSSadaf Ebrahimi                         (?&character_class) |
6041*22dc650dSSadaf Ebrahimi                         (?&character_type) |
6042*22dc650dSSadaf Ebrahimi                         (?&escaped_character) |
6043*22dc650dSSadaf Ebrahimi                         (?&group) |
6044*22dc650dSSadaf Ebrahimi                         (?&subroutine_call) |
6045*22dc650dSSadaf Ebrahimi                         (?&literal_character) |
6046*22dc650dSSadaf Ebrahimi                         (?&quoted_string)
6047*22dc650dSSadaf Ebrahimi                      ) (?&comment)? (?&qualifier)? )
6048*22dc650dSSadaf Ebrahimi
6049*22dc650dSSadaf Ebrahimi(?<qualifier>         (?: [?*+] | (?&range_qualifier) ) [+?]? )
6050*22dc650dSSadaf Ebrahimi
6051*22dc650dSSadaf Ebrahimi(?<quoted_string>     (?: \\Q (?: (?!\\E | \k'delimiter') . )++ (?: \\E | ) ) )
6052*22dc650dSSadaf Ebrahimi
6053*22dc650dSSadaf Ebrahimi(?<quoted_string_empty>  \\Q\\E )
6054*22dc650dSSadaf Ebrahimi
6055*22dc650dSSadaf Ebrahimi(?<range_qualifier>   \{ (?: \d+ (?: , \d* )? | , \d+ ) \} )
6056*22dc650dSSadaf Ebrahimi
6057*22dc650dSSadaf Ebrahimi(?<regex>             (?&start_item)* (?&branch) (?: \| (?&branch) )* )
6058*22dc650dSSadaf Ebrahimi
6059*22dc650dSSadaf Ebrahimi(?<resetting_group>   \( \? \| (?&regex) \) )
6060*22dc650dSSadaf Ebrahimi
6061*22dc650dSSadaf Ebrahimi(?<simple_assertion>  \^ | \$ | \\A | \\b | \\B | \\G | \\z | \\Z )
6062*22dc650dSSadaf Ebrahimi
6063*22dc650dSSadaf Ebrahimi(?<special_escape>    \\K )
6064*22dc650dSSadaf Ebrahimi
6065*22dc650dSSadaf Ebrahimi(?<start_item>        \( \* (?:
6066*22dc650dSSadaf Ebrahimi                      ANY |
6067*22dc650dSSadaf Ebrahimi                      ANYCRLF |
6068*22dc650dSSadaf Ebrahimi                      BSR_ANYCRLF |
6069*22dc650dSSadaf Ebrahimi                      BSR_UNICODE |
6070*22dc650dSSadaf Ebrahimi                      CR |
6071*22dc650dSSadaf Ebrahimi                      CRLF |
6072*22dc650dSSadaf Ebrahimi                      LF |
6073*22dc650dSSadaf Ebrahimi                      LIMIT_MATCH=\d+ |
6074*22dc650dSSadaf Ebrahimi                      LIMIT_DEPTH=\d+ |
6075*22dc650dSSadaf Ebrahimi                      LIMIT_HEAP=\d+ |
6076*22dc650dSSadaf Ebrahimi                      NOTEMPTY |
6077*22dc650dSSadaf Ebrahimi                      NOTEMPTY_ATSTART |
6078*22dc650dSSadaf Ebrahimi                      NO_AUTO_POSSESS |
6079*22dc650dSSadaf Ebrahimi                      NO_DOTSTAR_ANCHOR |
6080*22dc650dSSadaf Ebrahimi                      NO_JIT |
6081*22dc650dSSadaf Ebrahimi                      NO_START_OPT |
6082*22dc650dSSadaf Ebrahimi                      NUL |
6083*22dc650dSSadaf Ebrahimi                      UTF |
6084*22dc650dSSadaf Ebrahimi                      UCP ) \) )
6085*22dc650dSSadaf Ebrahimi
6086*22dc650dSSadaf Ebrahimi(?<subroutine_call>   (?: \(\?R\) | \(\?[+-]?\d+\) |
6087*22dc650dSSadaf Ebrahimi                      \(\? (?: & | P> ) (?&groupname) \) |
6088*22dc650dSSadaf Ebrahimi                      \\g < (?&groupname) > |
6089*22dc650dSSadaf Ebrahimi                      \\g ' (?&groupname) ' |
6090*22dc650dSSadaf Ebrahimi                      \\g < [+-]? \d+ > |
6091*22dc650dSSadaf Ebrahimi                      \\g ' [+-]? \d+ ) )
6092*22dc650dSSadaf Ebrahimi
6093*22dc650dSSadaf Ebrahimi(?<verb>              \(\* (?: ACCEPT | FAIL | F | COMMIT |
6094*22dc650dSSadaf Ebrahimi                      (?:MARK)?:(?&verbname) |
6095*22dc650dSSadaf Ebrahimi                      (?:PRUNE|SKIP|THEN) (?: : (?&verbname)? )? ) \) )
6096*22dc650dSSadaf Ebrahimi
6097*22dc650dSSadaf Ebrahimi(?<verbname>          [^)]+ )
6098*22dc650dSSadaf Ebrahimi
6099*22dc650dSSadaf Ebrahimi) # End DEFINE
6100*22dc650dSSadaf Ebrahimi# Kick it all off...
6101*22dc650dSSadaf Ebrahimi^(?&delimited_regex)$/subject_literal,jitstack=256
6102*22dc650dSSadaf Ebrahimi    /^(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)\11*(\3\4)\1(?#)2$/
6103*22dc650dSSadaf Ebrahimi    /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
6104*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]/
6105*22dc650dSSadaf Ebrahimi    /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
6106*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
6107*22dc650dSSadaf Ebrahimi    /^(?(DEFINE) (?<A> a) (?<B> b) )  (?&A) (?&B) /
6108*22dc650dSSadaf Ebrahimi    /(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))\b(?&byte)(\.(?&byte)){3}/
6109*22dc650dSSadaf Ebrahimi    /\b(?&byte)(\.(?&byte)){3}(?(DEFINE)(?<byte>2[0-4]\d|25[0-5]|1\d\d|[1-9]?\d))/
6110*22dc650dSSadaf Ebrahimi    /^(\w++|\s++)*$/
6111*22dc650dSSadaf Ebrahimi    /a+b?(*THEN)c+(*FAIL)/
6112*22dc650dSSadaf Ebrahimi    /(A (A|B(*ACCEPT)|C) D)(E)/x
6113*22dc650dSSadaf Ebrahimi    /^\W*+(?:((.)\W*+(?1)\W*+\2|)|((.)\W*+(?3)\W*+\4|\W*+.\W*+))\W*+$/i
6114*22dc650dSSadaf Ebrahimi    /A(*PRUNE)B(*SKIP)C(*THEN)D(*COMMIT)E(*F)F(*FAIL)G(?!)H(*ACCEPT)I/B
6115*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
6116*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)$/
6117*22dc650dSSadaf Ebrahimi\= Expect no match
6118*22dc650dSSadaf Ebrahimi    /((?(?C'')\QX\E(?!((?(?C'')(?!X=X));=)r*X=X));=)/
6119*22dc650dSSadaf Ebrahimi    /(?:(?(2y)a|b)(X))+/
6120*22dc650dSSadaf Ebrahimi    /a(*MARK)b/
6121*22dc650dSSadaf Ebrahimi    /a(*CR)b/
6122*22dc650dSSadaf Ebrahimi    /(?P<abn>(?P=abn)(?<badstufxxx)/
6123*22dc650dSSadaf Ebrahimi
6124*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
6125*22dc650dSSadaf Ebrahimi
6126*22dc650dSSadaf Ebrahimi/<(?x:[a b])>/xx
6127*22dc650dSSadaf Ebrahimi    < >
6128*22dc650dSSadaf Ebrahimi
6129*22dc650dSSadaf Ebrahimi/<(?:[a b])>/xx
6130*22dc650dSSadaf Ebrahimi    < >
6131*22dc650dSSadaf Ebrahimi
6132*22dc650dSSadaf Ebrahimi/<(?xxx:[a b])>/
6133*22dc650dSSadaf Ebrahimi    < >
6134*22dc650dSSadaf Ebrahimi
6135*22dc650dSSadaf Ebrahimi/<(?-x:[a b])>/xx
6136*22dc650dSSadaf Ebrahimi    < >
6137*22dc650dSSadaf Ebrahimi
6138*22dc650dSSadaf Ebrahimi/[[:digit:]-]+/
6139*22dc650dSSadaf Ebrahimi    12-24
6140*22dc650dSSadaf Ebrahimi
6141*22dc650dSSadaf Ebrahimi/((?<=((*ACCEPT)) )\1?\b) /
6142*22dc650dSSadaf Ebrahimi\= Expect no match
6143*22dc650dSSadaf Ebrahimi    ((?<=((*ACCEPT)) )\\1?\\b)\x20
6144*22dc650dSSadaf Ebrahimi
6145*22dc650dSSadaf Ebrahimi/((?<=((*ACCEPT))X)\1?Y)\1/
6146*22dc650dSSadaf Ebrahimi    XYYZ
6147*22dc650dSSadaf Ebrahimi
6148*22dc650dSSadaf Ebrahimi/((?<=((*ACCEPT))X)\1?Y(*ACCEPT))\1/
6149*22dc650dSSadaf Ebrahimi    XYYZ
6150*22dc650dSSadaf Ebrahimi
6151*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<optional_a>a?)X)^(?&optional_a)a$/
6152*22dc650dSSadaf Ebrahimi    aa
6153*22dc650dSSadaf Ebrahimi    a
6154*22dc650dSSadaf Ebrahimi
6155*22dc650dSSadaf Ebrahimi/^(a?)b(?1)a/
6156*22dc650dSSadaf Ebrahimi    abaa
6157*22dc650dSSadaf Ebrahimi    aba
6158*22dc650dSSadaf Ebrahimi    baa
6159*22dc650dSSadaf Ebrahimi    ba
6160*22dc650dSSadaf Ebrahimi
6161*22dc650dSSadaf Ebrahimi/^(a?)+b(?1)a/
6162*22dc650dSSadaf Ebrahimi    abaa
6163*22dc650dSSadaf Ebrahimi    aba
6164*22dc650dSSadaf Ebrahimi    baa
6165*22dc650dSSadaf Ebrahimi    ba
6166*22dc650dSSadaf Ebrahimi
6167*22dc650dSSadaf Ebrahimi/^(a?)++b(?1)a/
6168*22dc650dSSadaf Ebrahimi    abaa
6169*22dc650dSSadaf Ebrahimi    aba
6170*22dc650dSSadaf Ebrahimi    baa
6171*22dc650dSSadaf Ebrahimi    ba
6172*22dc650dSSadaf Ebrahimi
6173*22dc650dSSadaf Ebrahimi/^(a?)+b/
6174*22dc650dSSadaf Ebrahimi    b
6175*22dc650dSSadaf Ebrahimi    ab
6176*22dc650dSSadaf Ebrahimi    aaab
6177*22dc650dSSadaf Ebrahimi
6178*22dc650dSSadaf Ebrahimi/(?=a+)a(a+)++b/
6179*22dc650dSSadaf Ebrahimi    aab
6180*22dc650dSSadaf Ebrahimi
6181*22dc650dSSadaf Ebrahimi/(?<=\G.)/g,aftertext
6182*22dc650dSSadaf Ebrahimi    abc
6183*22dc650dSSadaf Ebrahimi
6184*22dc650dSSadaf Ebrahimi/(?<=(?=.)?)/
6185*22dc650dSSadaf Ebrahimi
6186*22dc650dSSadaf Ebrahimi/(?<=(?=.)?+)/
6187*22dc650dSSadaf Ebrahimi
6188*22dc650dSSadaf Ebrahimi/(?<=(?=.)*)/
6189*22dc650dSSadaf Ebrahimi
6190*22dc650dSSadaf Ebrahimi/(?<=(?=.){4,5})/
6191*22dc650dSSadaf Ebrahimi
6192*22dc650dSSadaf Ebrahimi/(?<=(?=.){4,5}x)/
6193*22dc650dSSadaf Ebrahimi
6194*22dc650dSSadaf Ebrahimi/a(?=.(*:X))(*SKIP:X)(*F)|(.)/
6195*22dc650dSSadaf Ebrahimi    abc
6196*22dc650dSSadaf Ebrahimi
6197*22dc650dSSadaf Ebrahimi/a(?>(*:X))(*SKIP:X)(*F)|(.)/
6198*22dc650dSSadaf Ebrahimi    abc
6199*22dc650dSSadaf Ebrahimi
6200*22dc650dSSadaf Ebrahimi/a(?:(*:X))(*SKIP:X)(*F)|(.)/
6201*22dc650dSSadaf Ebrahimi    abc
6202*22dc650dSSadaf Ebrahimi
6203*22dc650dSSadaf Ebrahimi#pattern no_start_optimize
6204*22dc650dSSadaf Ebrahimi
6205*22dc650dSSadaf Ebrahimi/(?>a(*:1))(?>b(*:1))(*SKIP:1)x|.*/
6206*22dc650dSSadaf Ebrahimi    abc
6207*22dc650dSSadaf Ebrahimi
6208*22dc650dSSadaf Ebrahimi/(?>a(*:1))(?>b)(*SKIP:1)x|.*/
6209*22dc650dSSadaf Ebrahimi    abc
6210*22dc650dSSadaf Ebrahimi
6211*22dc650dSSadaf Ebrahimi#subject mark
6212*22dc650dSSadaf Ebrahimi
6213*22dc650dSSadaf Ebrahimi/a(*ACCEPT:X)b/
6214*22dc650dSSadaf Ebrahimi    abc
6215*22dc650dSSadaf Ebrahimi
6216*22dc650dSSadaf Ebrahimi/(?=a(*ACCEPT:QQ)bc)axyz/
6217*22dc650dSSadaf Ebrahimi    axyz
6218*22dc650dSSadaf Ebrahimi
6219*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a(*ACCEPT:X)))(?1)b/
6220*22dc650dSSadaf Ebrahimi    abc
6221*22dc650dSSadaf Ebrahimi
6222*22dc650dSSadaf Ebrahimi/a(*F:X)b/
6223*22dc650dSSadaf Ebrahimi    abc
6224*22dc650dSSadaf Ebrahimi
6225*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a(*F:X)))(?1)b/
6226*22dc650dSSadaf Ebrahimi    abc
6227*22dc650dSSadaf Ebrahimi
6228*22dc650dSSadaf Ebrahimi/a(*COMMIT:X)b/
6229*22dc650dSSadaf Ebrahimi    abc
6230*22dc650dSSadaf Ebrahimi
6231*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a(*COMMIT:X)))(?1)b/
6232*22dc650dSSadaf Ebrahimi    abc
6233*22dc650dSSadaf Ebrahimi
6234*22dc650dSSadaf Ebrahimi/a+(*:Z)b(*COMMIT:X)(*SKIP:Z)c|.*/
6235*22dc650dSSadaf Ebrahimi    aaaabd
6236*22dc650dSSadaf Ebrahimi
6237*22dc650dSSadaf Ebrahimi/a+(*:Z)b(*COMMIT:X)(*SKIP:X)c|.*/
6238*22dc650dSSadaf Ebrahimi    aaaabd
6239*22dc650dSSadaf Ebrahimi
6240*22dc650dSSadaf Ebrahimi/a(*COMMIT:X)b/
6241*22dc650dSSadaf Ebrahimi    axabc
6242*22dc650dSSadaf Ebrahimi
6243*22dc650dSSadaf Ebrahimi#pattern -no_start_optimize
6244*22dc650dSSadaf Ebrahimi#subject -mark
6245*22dc650dSSadaf Ebrahimi
6246*22dc650dSSadaf Ebrahimi/(.COMMIT)(*COMMIT::::::::::interal error:::)/
6247*22dc650dSSadaf Ebrahimi
6248*22dc650dSSadaf Ebrahimi/(*COMMIT:��)/
6249*22dc650dSSadaf Ebrahimi
6250*22dc650dSSadaf Ebrahimi/(*COMMIT:]w)/
6251*22dc650dSSadaf Ebrahimi
6252*22dc650dSSadaf Ebrahimi/(?i)A(?^)B(?^x:C D)(?^i)e f/
6253*22dc650dSSadaf Ebrahimi    aBCDE F
6254*22dc650dSSadaf Ebrahimi\= Expect no match
6255*22dc650dSSadaf Ebrahimi    aBCDEF
6256*22dc650dSSadaf Ebrahimi    AbCDe f
6257*22dc650dSSadaf Ebrahimi
6258*22dc650dSSadaf Ebrahimi/(*pla:foo).{6}/
6259*22dc650dSSadaf Ebrahimi    abcfoobarxyz
6260*22dc650dSSadaf Ebrahimi\= Expect no match
6261*22dc650dSSadaf Ebrahimi    abcfooba
6262*22dc650dSSadaf Ebrahimi
6263*22dc650dSSadaf Ebrahimi/(*positive_lookahead:foo).{6}/
6264*22dc650dSSadaf Ebrahimi    abcfoobarxyz
6265*22dc650dSSadaf Ebrahimi
6266*22dc650dSSadaf Ebrahimi/(?(*pla:foo).{6}|a..)/
6267*22dc650dSSadaf Ebrahimi    foobarbaz
6268*22dc650dSSadaf Ebrahimi    abcfoobar
6269*22dc650dSSadaf Ebrahimi
6270*22dc650dSSadaf Ebrahimi/(?(*positive_lookahead:foo).{6}|a..)/
6271*22dc650dSSadaf Ebrahimi    foobarbaz
6272*22dc650dSSadaf Ebrahimi    abcfoobar
6273*22dc650dSSadaf Ebrahimi
6274*22dc650dSSadaf Ebrahimi/(*plb:foo)bar/
6275*22dc650dSSadaf Ebrahimi    abcfoobar
6276*22dc650dSSadaf Ebrahimi\= Expect no match
6277*22dc650dSSadaf Ebrahimi    abcbarfoo
6278*22dc650dSSadaf Ebrahimi
6279*22dc650dSSadaf Ebrahimi/(*positive_lookbehind:foo)bar/
6280*22dc650dSSadaf Ebrahimi    abcfoobar
6281*22dc650dSSadaf Ebrahimi\= Expect no match
6282*22dc650dSSadaf Ebrahimi    abcbarfoo
6283*22dc650dSSadaf Ebrahimi
6284*22dc650dSSadaf Ebrahimi/(?(*plb:foo)bar|baz)/
6285*22dc650dSSadaf Ebrahimi    abcfoobar
6286*22dc650dSSadaf Ebrahimi    bazfoobar
6287*22dc650dSSadaf Ebrahimi    abcbazfoobar
6288*22dc650dSSadaf Ebrahimi    foobazfoobar
6289*22dc650dSSadaf Ebrahimi
6290*22dc650dSSadaf Ebrahimi/(?(*positive_lookbehind:foo)bar|baz)/
6291*22dc650dSSadaf Ebrahimi    abcfoobar
6292*22dc650dSSadaf Ebrahimi    bazfoobar
6293*22dc650dSSadaf Ebrahimi    abcbazfoobar
6294*22dc650dSSadaf Ebrahimi    foobazfoobar
6295*22dc650dSSadaf Ebrahimi
6296*22dc650dSSadaf Ebrahimi/(*nlb:foo)bar/
6297*22dc650dSSadaf Ebrahimi    abcbarfoo
6298*22dc650dSSadaf Ebrahimi\= Expect no match
6299*22dc650dSSadaf Ebrahimi    abcfoobar
6300*22dc650dSSadaf Ebrahimi
6301*22dc650dSSadaf Ebrahimi/(*negative_lookbehind:foo)bar/
6302*22dc650dSSadaf Ebrahimi    abcbarfoo
6303*22dc650dSSadaf Ebrahimi\= Expect no match
6304*22dc650dSSadaf Ebrahimi    abcfoobar
6305*22dc650dSSadaf Ebrahimi
6306*22dc650dSSadaf Ebrahimi/(?(*nlb:foo)bar|baz)/
6307*22dc650dSSadaf Ebrahimi    abcfoobaz
6308*22dc650dSSadaf Ebrahimi    abcbarbaz
6309*22dc650dSSadaf Ebrahimi\= Expect no match
6310*22dc650dSSadaf Ebrahimi    abcfoobar
6311*22dc650dSSadaf Ebrahimi
6312*22dc650dSSadaf Ebrahimi/(?(*negative_lookbehind:foo)bar|baz)/
6313*22dc650dSSadaf Ebrahimi    abcfoobaz
6314*22dc650dSSadaf Ebrahimi    abcbarbaz
6315*22dc650dSSadaf Ebrahimi\= Expect no match
6316*22dc650dSSadaf Ebrahimi    abcfoobar
6317*22dc650dSSadaf Ebrahimi
6318*22dc650dSSadaf Ebrahimi/(*atomic:a+)\w/
6319*22dc650dSSadaf Ebrahimi    aaab
6320*22dc650dSSadaf Ebrahimi\= Expect no match
6321*22dc650dSSadaf Ebrahimi    aaaa
6322*22dc650dSSadaf Ebrahimi
6323*22dc650dSSadaf Ebrahimi/   (?<word> \w+ )*    \.   /xi
6324*22dc650dSSadaf Ebrahimi    pokus.
6325*22dc650dSSadaf Ebrahimi
6326*22dc650dSSadaf Ebrahimi/(?(DEFINE) (?<word> \w+ ) ) (?&word)*   \./xi
6327*22dc650dSSadaf Ebrahimi    pokus.
6328*22dc650dSSadaf Ebrahimi
6329*22dc650dSSadaf Ebrahimi/(?(DEFINE) (?<word> \w+ ) ) ( (?&word)* )   \./xi
6330*22dc650dSSadaf Ebrahimi    pokus.
6331*22dc650dSSadaf Ebrahimi
6332*22dc650dSSadaf Ebrahimi/(?&word)*  (?(DEFINE) (?<word> \w+ ) )  \./xi
6333*22dc650dSSadaf Ebrahimi    pokus.
6334*22dc650dSSadaf Ebrahimi
6335*22dc650dSSadaf Ebrahimi/(?&word)*  \. (?<word> \w+ )/xi
6336*22dc650dSSadaf Ebrahimi    pokus.hokus
6337*22dc650dSSadaf Ebrahimi
6338*22dc650dSSadaf Ebrahimi/a(?(?=(*:2)b).)/mark
6339*22dc650dSSadaf Ebrahimi    abc
6340*22dc650dSSadaf Ebrahimi    acb
6341*22dc650dSSadaf Ebrahimi
6342*22dc650dSSadaf Ebrahimi/a(?(?!(*:2)b).)/mark
6343*22dc650dSSadaf Ebrahimi    acb
6344*22dc650dSSadaf Ebrahimi    abc
6345*22dc650dSSadaf Ebrahimi
6346*22dc650dSSadaf Ebrahimi/(?:a|ab){1}+c/
6347*22dc650dSSadaf Ebrahimi\= Expect no match
6348*22dc650dSSadaf Ebrahimi    abc
6349*22dc650dSSadaf Ebrahimi
6350*22dc650dSSadaf Ebrahimi/(a|ab){1}+c/
6351*22dc650dSSadaf Ebrahimi    abc
6352*22dc650dSSadaf Ebrahimi
6353*22dc650dSSadaf Ebrahimi/(a+){1}+a/
6354*22dc650dSSadaf Ebrahimi\= Expect no match
6355*22dc650dSSadaf Ebrahimi    aaaa
6356*22dc650dSSadaf Ebrahimi
6357*22dc650dSSadaf Ebrahimi/(?(DEFINE)(a|ab))(?1){1}+c/
6358*22dc650dSSadaf Ebrahimi    abc
6359*22dc650dSSadaf Ebrahimi
6360*22dc650dSSadaf Ebrahimi/(?:a|(?=b)|.)*\z/
6361*22dc650dSSadaf Ebrahimi    abc
6362*22dc650dSSadaf Ebrahimi
6363*22dc650dSSadaf Ebrahimi/(?:a|(?=b)|.)*/
6364*22dc650dSSadaf Ebrahimi    abc
6365*22dc650dSSadaf Ebrahimi
6366*22dc650dSSadaf Ebrahimi/(?<=a(*SKIP)x)|c/
6367*22dc650dSSadaf Ebrahimi    abcd
6368*22dc650dSSadaf Ebrahimi
6369*22dc650dSSadaf Ebrahimi/(?<=a(*SKIP)x)|d/
6370*22dc650dSSadaf Ebrahimi    abcd
6371*22dc650dSSadaf Ebrahimi
6372*22dc650dSSadaf Ebrahimi/(?<=(?=.(?<=x)))/aftertext
6373*22dc650dSSadaf Ebrahimi    abx
6374*22dc650dSSadaf Ebrahimi
6375*22dc650dSSadaf Ebrahimi/(?<=(?=(?<=a)))b/
6376*22dc650dSSadaf Ebrahimi    ab
6377*22dc650dSSadaf Ebrahimi
6378*22dc650dSSadaf Ebrahimi/^(?<A>a)(?(<A>)b)((?<=b).*)$/
6379*22dc650dSSadaf Ebrahimi    abc
6380*22dc650dSSadaf Ebrahimi
6381*22dc650dSSadaf Ebrahimi/^(a\1?){4}$/
6382*22dc650dSSadaf Ebrahimi    aaaa
6383*22dc650dSSadaf Ebrahimi    aaaaaa
6384*22dc650dSSadaf Ebrahimi
6385*22dc650dSSadaf Ebrahimi/^((\1+)|\d)+133X$/
6386*22dc650dSSadaf Ebrahimi    111133X
6387*22dc650dSSadaf Ebrahimi
6388*22dc650dSSadaf Ebrahimi/^(?>.*?([A-Z])(?!.*\1)){26}/i
6389*22dc650dSSadaf Ebrahimi    The quick brown fox jumps over the lazy dog.
6390*22dc650dSSadaf Ebrahimi    Jackdaws love my big sphinx of quartz.
6391*22dc650dSSadaf Ebrahimi    Pack my box with five dozen liquor jugs.
6392*22dc650dSSadaf Ebrahimi\= Expect no match
6393*22dc650dSSadaf Ebrahimi    The quick brown fox jumps over the lazy cat.
6394*22dc650dSSadaf Ebrahimi    Hackdaws love my big sphinx of quartz.
6395*22dc650dSSadaf Ebrahimi    Pack my fox with five dozen liquor jugs.
6396*22dc650dSSadaf Ebrahimi
6397*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(A)))X(*F)/
6398*22dc650dSSadaf Ebrahimi\= Expect no match
6399*22dc650dSSadaf Ebrahimi    AXYZ
6400*22dc650dSSadaf Ebrahimi
6401*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(A)))./
6402*22dc650dSSadaf Ebrahimi    AXYZ
6403*22dc650dSSadaf Ebrahimi
6404*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(.*))Y)./
6405*22dc650dSSadaf Ebrahimi    AXYZ
6406*22dc650dSSadaf Ebrahimi
6407*22dc650dSSadaf Ebrahimi/(?<=X(?(DEFINE)(Y))(?1))./
6408*22dc650dSSadaf Ebrahimi    AXYZ
6409*22dc650dSSadaf Ebrahimi
6410*22dc650dSSadaf Ebrahimi/(?(DEFINE)(?<foo>bar))(?<![-a-z0-9])word/
6411*22dc650dSSadaf Ebrahimi    word
6412*22dc650dSSadaf Ebrahimi
6413*22dc650dSSadaf Ebrahimi/a{1,2,3}b/
6414*22dc650dSSadaf Ebrahimi    a{1,2,3}b
6415*22dc650dSSadaf Ebrahimi
6416*22dc650dSSadaf Ebrahimi/\214748364/
6417*22dc650dSSadaf Ebrahimi    >\x{8c}748364<
6418*22dc650dSSadaf Ebrahimi
6419*22dc650dSSadaf Ebrahimi/a{65536/
6420*22dc650dSSadaf Ebrahimi    >a{65536<
6421*22dc650dSSadaf Ebrahimi
6422*22dc650dSSadaf Ebrahimi/a\K.(?0)*/
6423*22dc650dSSadaf Ebrahimi    abac
6424*22dc650dSSadaf Ebrahimi
6425*22dc650dSSadaf Ebrahimi/(a\K.(?1)*)/
6426*22dc650dSSadaf Ebrahimi    abac
6427*22dc650dSSadaf Ebrahimi
6428*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
6429*22dc650dSSadaf Ebrahimi# Perl-compatible tests of variable-length lookbehinds.
6430*22dc650dSSadaf Ebrahimi
6431*22dc650dSSadaf Ebrahimi/(?<=ab?c).../g
6432*22dc650dSSadaf Ebrahimi    abcdefgacxyz
6433*22dc650dSSadaf Ebrahimi
6434*22dc650dSSadaf Ebrahimi/(?<=PQR|ab?c).../g
6435*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
6436*22dc650dSSadaf Ebrahimi
6437*22dc650dSSadaf Ebrahimi/(?<=ab?c|PQR).../g
6438*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
6439*22dc650dSSadaf Ebrahimi
6440*22dc650dSSadaf Ebrahimi/(?<=PQ|ab?c).../g
6441*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
6442*22dc650dSSadaf Ebrahimi
6443*22dc650dSSadaf Ebrahimi/(?<=ab?c|PQ).../g
6444*22dc650dSSadaf Ebrahimi    abcdefgacxyzPQR123
6445*22dc650dSSadaf Ebrahimi
6446*22dc650dSSadaf Ebrahimi/(?<=a(b?c|d?e?e)f)X./g
6447*22dc650dSSadaf Ebrahimi     acfX1zzzaefX2zzzadeefX3zzzX4zzz
6448*22dc650dSSadaf Ebrahimi
6449*22dc650dSSadaf Ebrahimi/(?<!a(b?c|d?e?e)f)X./g
6450*22dc650dSSadaf Ebrahimi     acfX1zzzaefX2zzzadeefX3zzzX4zzz
6451*22dc650dSSadaf Ebrahimi
6452*22dc650dSSadaf Ebrahimi/(?(?<=ab?c)d|e)/
6453*22dc650dSSadaf Ebrahimi    abcdefg
6454*22dc650dSSadaf Ebrahimi    acdefg
6455*22dc650dSSadaf Ebrahimi    axdefg
6456*22dc650dSSadaf Ebrahimi
6457*22dc650dSSadaf Ebrahimi/(?<=\d{2,3}|ABC)./
6458*22dc650dSSadaf Ebrahimi    ABCD
6459*22dc650dSSadaf Ebrahimi
6460*22dc650dSSadaf Ebrahimi/(?<=(\d{1,255}))X/
6461*22dc650dSSadaf Ebrahimi    1234X
6462*22dc650dSSadaf Ebrahimi
6463*22dc650dSSadaf Ebrahimi/(?<=a(b?c){3}d)X/
6464*22dc650dSSadaf Ebrahimi   ZXacbccdXYZ
6465*22dc650dSSadaf Ebrahimi
6466*22dc650dSSadaf Ebrahimi/(?<=a(b?c){0}d)X/
6467*22dc650dSSadaf Ebrahimi   ZXadXYZ
6468*22dc650dSSadaf Ebrahimi
6469*22dc650dSSadaf Ebrahimi/(?<=a?(b?c){0}d)X./
6470*22dc650dSSadaf Ebrahimi   ZXadXYZ
6471*22dc650dSSadaf Ebrahimi
6472*22dc650dSSadaf Ebrahimi/(?<=\R)X/
6473*22dc650dSSadaf Ebrahimi    \x{0a}X
6474*22dc650dSSadaf Ebrahimi    a\x{0a}X
6475*22dc650dSSadaf Ebrahimi    a\x{0d}\x{0a}X
6476*22dc650dSSadaf Ebrahimi
6477*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
6478*22dc650dSSadaf Ebrahimi
6479*22dc650dSSadaf Ebrahimi# Altered interpretation of {,n}
6480*22dc650dSSadaf Ebrahimi
6481*22dc650dSSadaf Ebrahimi/a{,3}B/
6482*22dc650dSSadaf Ebrahimi    XBBB
6483*22dc650dSSadaf Ebrahimi    XaBBB
6484*22dc650dSSadaf Ebrahimi    XaaBBB
6485*22dc650dSSadaf Ebrahimi    XaaaBBB
6486*22dc650dSSadaf Ebrahimi    XaaaaBBB
6487*22dc650dSSadaf Ebrahimi
6488*22dc650dSSadaf Ebrahimi# But {,} remains not a qualifier
6489*22dc650dSSadaf Ebrahimi
6490*22dc650dSSadaf Ebrahimi/a{,}B/
6491*22dc650dSSadaf Ebrahimi    Xa{,}BBB
6492*22dc650dSSadaf Ebrahimi\= Expect no match
6493*22dc650dSSadaf Ebrahimi    XBBB
6494*22dc650dSSadaf Ebrahimi    XaBBB
6495*22dc650dSSadaf Ebrahimi
6496*22dc650dSSadaf Ebrahimi# Checks for non-quantifiers after refactored code
6497*22dc650dSSadaf Ebrahimi
6498*22dc650dSSadaf Ebrahimi/X{/
6499*22dc650dSSadaf Ebrahimi    ZZX{}YY
6500*22dc650dSSadaf Ebrahimi
6501*22dc650dSSadaf Ebrahimi/X{A/
6502*22dc650dSSadaf Ebrahimi    ZZX{ABC}
6503*22dc650dSSadaf Ebrahimi
6504*22dc650dSSadaf Ebrahimi/X{}/
6505*22dc650dSSadaf Ebrahimi    ZZX{}YZ
6506*22dc650dSSadaf Ebrahimi
6507*22dc650dSSadaf Ebrahimi/X{1234/
6508*22dc650dSSadaf Ebrahimi    ZZX{123456
6509*22dc650dSSadaf Ebrahimi
6510*22dc650dSSadaf Ebrahimi/X{12ABC}/
6511*22dc650dSSadaf Ebrahimi    ZZX{12ABC}Y
6512*22dc650dSSadaf Ebrahimi
6513*22dc650dSSadaf Ebrahimi/X{1,/
6514*22dc650dSSadaf Ebrahimi    ZZX{1,...
6515*22dc650dSSadaf Ebrahimi
6516*22dc650dSSadaf Ebrahimi/X{,9/
6517*22dc650dSSadaf Ebrahimi    ZZX{,9}abc
6518*22dc650dSSadaf Ebrahimi
6519*22dc650dSSadaf Ebrahimi/X{,9]/
6520*22dc650dSSadaf Ebrahimi    ZZX{,9]..
6521*22dc650dSSadaf Ebrahimi
6522*22dc650dSSadaf Ebrahimi# --------------------------------------------------------------------------
6523*22dc650dSSadaf Ebrahimi
6524*22dc650dSSadaf Ebrahimi/(A)(?-1)(?+1)(B)/
6525*22dc650dSSadaf Ebrahimi    xxAABBzz
6526*22dc650dSSadaf Ebrahimi
6527*22dc650dSSadaf Ebrahimi/(A)(\g{ -2 }B)/
6528*22dc650dSSadaf Ebrahimi    XAABX
6529*22dc650dSSadaf Ebrahimi
6530*22dc650dSSadaf Ebrahimi/(A)((?-2)B)/
6531*22dc650dSSadaf Ebrahimi    XAABX
6532*22dc650dSSadaf Ebrahimi
6533*22dc650dSSadaf Ebrahimi/a\c\X/
6534*22dc650dSSadaf Ebrahimi    --a\x1cX--
6535*22dc650dSSadaf Ebrahimi
6536*22dc650dSSadaf Ebrahimi/(a)\g{ 1 }/
6537*22dc650dSSadaf Ebrahimi    baab
6538*22dc650dSSadaf Ebrahimi
6539*22dc650dSSadaf Ebrahimi/a{ 1,2 }/
6540*22dc650dSSadaf Ebrahimi    Xaaaaa
6541*22dc650dSSadaf Ebrahimi
6542*22dc650dSSadaf Ebrahimi/a{ 1 , 2 }/
6543*22dc650dSSadaf Ebrahimi    Xaaaaa
6544*22dc650dSSadaf Ebrahimi
6545*22dc650dSSadaf Ebrahimi/(?'name'ab)\k{ name }(?P=name)/
6546*22dc650dSSadaf Ebrahimi    XabababX
6547*22dc650dSSadaf Ebrahimi
6548*22dc650dSSadaf Ebrahimi/A{,}B/
6549*22dc650dSSadaf Ebrahimi    A{,}B
6550*22dc650dSSadaf Ebrahimi
6551*22dc650dSSadaf Ebrahimi/A{ , }B/
6552*22dc650dSSadaf Ebrahimi    A{ , }B
6553*22dc650dSSadaf Ebrahimi
6554*22dc650dSSadaf Ebrahimi/A{ ,3}/
6555*22dc650dSSadaf Ebrahimi    AAAAAACC
6556*22dc650dSSadaf Ebrahimi
6557*22dc650dSSadaf Ebrahimi/A{ 3, }/
6558*22dc650dSSadaf Ebrahimi    BBAAAAAACC
6559*22dc650dSSadaf Ebrahimi
6560*22dc650dSSadaf Ebrahimi# This pattern validates regular expression patterns. The original that I was
6561*22dc650dSSadaf Ebrahimi# sent was this:
6562*22dc650dSSadaf Ebrahimi# /^((?:(?:[^?+*{}()[\]\\|]+|\\.|\[(?:\^?\\.|\^[^\\]|[^\\^])(?:[^\]\\]+|\\.)*\]|\((?:\?[:=!]|\?<[=!]|\?>)?(?1)??\)|\(\?(?:R|[+-]?\d+)\))(?:(?:[?+*]|\{\d+(?:,\d*)?\})[?+]?)?|\|)*)$/
6563*22dc650dSSadaf Ebrahimi# This is not very readable, and also does not handle all features. I have done
6564*22dc650dSSadaf Ebrahimi# some work on it.
6565*22dc650dSSadaf Ebrahimi
6566*22dc650dSSadaf Ebrahimi/^
6567*22dc650dSSadaf Ebrahimi(?<re>
6568*22dc650dSSadaf Ebrahimi# A regular expression is zero or more of these items.
6569*22dc650dSSadaf Ebrahimi  (?:
6570*22dc650dSSadaf Ebrahimi  # An item is one of these:
6571*22dc650dSSadaf Ebrahimi    (?:
6572*22dc650dSSadaf Ebrahimi      [^?+*{}()\[\]\\|]++|  # Non-meta characters or unquoted .
6573*22dc650dSSadaf Ebrahimi      \\.|                  # Quoted .
6574*22dc650dSSadaf Ebrahimi
6575*22dc650dSSadaf Ebrahimi      \[                    # Class, which is [
6576*22dc650dSSadaf Ebrahimi      (?:                   # Followed by
6577*22dc650dSSadaf Ebrahimi        \^?\\.|             # Optional ^ and any escaped character
6578*22dc650dSSadaf Ebrahimi        \^[^\\]|            # OR ^ and not escaped character
6579*22dc650dSSadaf Ebrahimi        [^\\^]              # OR neither ^ nor \
6580*22dc650dSSadaf Ebrahimi      )                     # Followed by
6581*22dc650dSSadaf Ebrahimi      (?:[^\]\\]+|\\.)*+    # Zero or more (not ] or \) OR escaped dot
6582*22dc650dSSadaf Ebrahimi      \]|                   # Class ends with ]
6583*22dc650dSSadaf Ebrahimi
6584*22dc650dSSadaf Ebrahimi      \(                    # Parenthesized group
6585*22dc650dSSadaf Ebrahimi        (?:                 # Start with optional
6586*22dc650dSSadaf Ebrahimi          \?[:=!]|          # ? followed by : = !
6587*22dc650dSSadaf Ebrahimi          \?<[=!]|          # OR ?< followed by = or !
6588*22dc650dSSadaf Ebrahimi          \?>               # OR ?>
6589*22dc650dSSadaf Ebrahimi        )?
6590*22dc650dSSadaf Ebrahimi        (?&re)??            # Then a nested <re>
6591*22dc650dSSadaf Ebrahimi      \)|                   # End parenthesized group
6592*22dc650dSSadaf Ebrahimi
6593*22dc650dSSadaf Ebrahimi      \(\?                  # Other parenthesized items
6594*22dc650dSSadaf Ebrahimi        (?:                 # (? followed by
6595*22dc650dSSadaf Ebrahimi          R|                # R
6596*22dc650dSSadaf Ebrahimi          [+-]?\d++         # Or optional +- and digits
6597*22dc650dSSadaf Ebrahimi        )
6598*22dc650dSSadaf Ebrahimi      \)|                   # End parens
6599*22dc650dSSadaf Ebrahimi
6600*22dc650dSSadaf Ebrahimi      \(\*                  # Verbs
6601*22dc650dSSadaf Ebrahimi        (?:
6602*22dc650dSSadaf Ebrahimi          COMMIT|
6603*22dc650dSSadaf Ebrahimi          FAIL|
6604*22dc650dSSadaf Ebrahimi          MARK:[^)]*|
6605*22dc650dSSadaf Ebrahimi          (?:PRUNE|SKIP|THEN)(?::[^\)]*+)?
6606*22dc650dSSadaf Ebrahimi        )
6607*22dc650dSSadaf Ebrahimi      \)
6608*22dc650dSSadaf Ebrahimi    )                       # End list of items
6609*22dc650dSSadaf Ebrahimi
6610*22dc650dSSadaf Ebrahimi    # Followed by an optional quantifier
6611*22dc650dSSadaf Ebrahimi
6612*22dc650dSSadaf Ebrahimi    (?:
6613*22dc650dSSadaf Ebrahimi      (?:
6614*22dc650dSSadaf Ebrahimi        [?+*]     # ?+*
6615*22dc650dSSadaf Ebrahimi        |         # OR
6616*22dc650dSSadaf Ebrahimi        \{\d+     # { digits
6617*22dc650dSSadaf Ebrahimi        (?:,\d*)? # optionally followed by ,digits
6618*22dc650dSSadaf Ebrahimi        \}        # then closing }
6619*22dc650dSSadaf Ebrahimi        |         # OR
6620*22dc650dSSadaf Ebrahimi        \{,\d+}   # {,digits}
6621*22dc650dSSadaf Ebrahimi      )
6622*22dc650dSSadaf Ebrahimi      [?+]?       # optional ungreedy or possessive
6623*22dc650dSSadaf Ebrahimi    )?
6624*22dc650dSSadaf Ebrahimi
6625*22dc650dSSadaf Ebrahimi    | # OR an "item" is a branch ending
6626*22dc650dSSadaf Ebrahimi
6627*22dc650dSSadaf Ebrahimi    \|
6628*22dc650dSSadaf Ebrahimi
6629*22dc650dSSadaf Ebrahimi  )*  # Zero or more top-level items.
6630*22dc650dSSadaf Ebrahimi)     # End regex group.
6631*22dc650dSSadaf Ebrahimi$/x
6632*22dc650dSSadaf Ebrahimi    [abcdef]
6633*22dc650dSSadaf Ebrahimi    [abc\\]def]
6634*22dc650dSSadaf Ebrahimi    a.b|abcd
6635*22dc650dSSadaf Ebrahimi    ab()d
6636*22dc650dSSadaf Ebrahimi    ab{1,3}d
6637*22dc650dSSadaf Ebrahimi    ab{,3}d
6638*22dc650dSSadaf Ebrahimi    ab(*FAIL)d(*COMMIT)(*SKIP)(*THEN:abc)
6639*22dc650dSSadaf Ebrahimi    ab(*MARK:xyz)
6640*22dc650dSSadaf Ebrahimi    (?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[,;:])(?=.{8,16})(?!.*[\\s])
6641*22dc650dSSadaf Ebrahimi    abcd\\t\\n\\r\\f\\a\\e\\071\\x3b\\^\\\\\\?caxyz
6642*22dc650dSSadaf Ebrahimi    a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz
6643*22dc650dSSadaf Ebrahimi    \\G(?:(?=(\\1.|)(.))){1,13}?(?!.*\\2.*\\2)\\1\\K\\2
6644*22dc650dSSadaf Ebrahimi\= Expect no match
6645*22dc650dSSadaf Ebrahimi    ab)d
6646*22dc650dSSadaf Ebrahimi    ab(d
6647*22dc650dSSadaf Ebrahimi    {4,5}
6648*22dc650dSSadaf Ebrahimi    a[]b
6649*22dc650dSSadaf Ebrahimi    (a)(?(1)a|b|c)
6650*22dc650dSSadaf Ebrahimi
6651*22dc650dSSadaf Ebrahimi/^..A(*SKIP)B|C/
6652*22dc650dSSadaf Ebrahimi    12ADC
6653*22dc650dSSadaf Ebrahimi
6654*22dc650dSSadaf Ebrahimi/(?<!a?)/
6655*22dc650dSSadaf Ebrahimi    a
6656*22dc650dSSadaf Ebrahimi
6657*22dc650dSSadaf Ebrahimi# End of testinput1
6658