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 Ebrahimi � 157*22dc650dSSadaf Ebrahimi 158*22dc650dSSadaf Ebrahimi/^�/ 159*22dc650dSSadaf Ebrahimi � 160*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) | (?"ed_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) | (?"ed_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) | (?"ed_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) | (?"ed_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) | (?"ed_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> \( \? > (?®ex) \) ) 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 (?"ed_string) | 5973*22dc650dSSadaf Ebrahimi (?"ed_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 (?®ex) \) ) 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 (?"ed_string) | 5996*22dc650dSSadaf Ebrahimi (?"ed_string_empty) | 5997*22dc650dSSadaf Ebrahimi (?&escaped_character) | 5998*22dc650dSSadaf Ebrahimi (?&character_type) | 5999*22dc650dSSadaf Ebrahimi [^]] ) ) 6000*22dc650dSSadaf Ebrahimi 6001*22dc650dSSadaf Ebrahimi(?<comment> \(\?\# [^)]* \) | (?"ed_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}!"'`=_:;,%&@~]) (?®ex) 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> \(\? (?: = | ! | <= | <! ) (?®ex) \) ) 6032*22dc650dSSadaf Ebrahimi 6033*22dc650dSSadaf Ebrahimi(?<non_capturing_group> \(\? [iJmnsUx-]* : (?®ex) \) ) 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 (?"ed_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> \( \? \| (?®ex) \) ) 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> \( \? > (?®ex) \) )(?<back_reference> \\ \d+ | \\g (?: [+-]?\d+ | \{ (?: [+-]?\d+ | (?&groupname) ) \} ) | \\k <(?&groupname)> | \\k '(?&groupname)' | \\k \{ (?&groupname) \} | \( \? P= (?&groupname) \) )(?<branch> (?:(?&assertion) | (?&callout) | (?&comment) | (?&option_setting) | (?&qualified_item) | (?"ed_string) | (?"ed_string_empty) | (?&special_escape) | (?&verb) )* )(?<callout> \(\?C (?: \d+ | (?: (?<D>["'`^%\#\$]) (?: \k'D'\k'D' | (?!\k'D') . )* \k'D' | \{ (?: \}\} | [^}]*+ )* \} ) )? \) )(?<capturing_group> \( (?: \? P? < (?&groupname) > | \? ' (?&groupname) ' )? (?®ex) \) )(?<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 ) : \] | (?"ed_string) | (?"ed_string_empty) | (?&escaped_character) | (?&character_type) | [^]] ) )(?<comment> \(\?\# [^)]* \) | (?"ed_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}!"'`=_:;,%&@~]) (?®ex) \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> \(\? (?: = | ! | <= | <! ) (?®ex) \) )(?<non_capturing_group> \(\? [iJmnsUx-]* : (?®ex) \) )(?<option_setting> \(\? [iJmnsUx-]* \) )(?<qualified_item> (?:\. | (?&lookaround) | (?&back_reference) | (?&character_class) | (?&character_type) | (?&escaped_character) | (?&group) | (?&subroutine_call) | (?&literal_character) | (?"ed_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> \( \? \| (?®ex) \) )(?<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