B y `B@sddlmZddlZddlZddlZddlZddlZddlZGdddeZ Gddde Z Gdddej Z ejd kre je _d d Zed kredS) )proxyNcseZdZfddZZS) StrSubclasscstt|S)N)rsuper __getitem__)selfindex) __class__4/tmp/pip-unpacked-wheel-iskm9a3s/regex/test_regex.pyr szStrSubclass.__getitem__)__name__ __module__ __qualname__r __classcell__r r )rr r srcseZdZfddZZS) BytesSubclasscstt|S)N)rrr)rr)rr r rszBytesSubclass.__getitem__)r r r rrr r )rr rsrc@seZdZdZdZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdddZddZd d!Z d"d#Z!d$d%Z"d&d'Z#d(d)Z$d*d+Z%d,d-Z&d.d/Z'd0d1Z(d2d3Z)d4d5Z*d6d7Z+d8d9Z,d:d;Z-dd?Z/d@dAZ0dBdCZ1dDdEZ2dFdGZ3dHdIZ4dJdKZ5dLdMZ6dNdOZ7dPdQZ8dRdSZ9dTdUZ:dVdWZ;dXdYZd^d_Z?d`daZ@dbdcZAdddeZBdfdgZCdhdiZDdjdkZEdldmZFdndoZGdpdqZHdrdsZIdtduZJdvdwZKdxdyZLdzd{ZMd|d}ZNd~dZOddZPddZQddZRddZSddZTddZUddZVddZWddZXddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbddZcddZdddZeddZfddZgddZhddZiddZjddZkddZlddZmddZnddZoddZpddÄZqddńZrddDŽZsddɄZtdd˄Zudd̈́ZvddτZwddфZxddӄZyddՄZzddׄZ{ddلZ|ddۄZ}dd݄Z~dd߄ZddZddZddZddZdS) RegexTestszz5cannot process flags argument with a compiled patternzinvalid group referencez missing >zbad character in group namezmissing group namez missing .recurse) assertEqual)rrrrr )rrrr assertTypedEqual/szRegexTests.assertTypedEqualcCs6d}td}t|}|d|dkr2|dS)NZQabbbcRzab+c)regexcompilerfindallfail)rsrrr r r test_weakref;s  zRegexTests.test_weakrefcCs|tdddd|tddd|tdddd|tddd|td d d|tdddd|tddd|tdd dd |tdd d |td dddS)Nza*xxxr)rrzx*Zaxxzx+)raaaZxxxa)rr&za+)rrsearchspanmatch)rr r r test_search_star_plusBsz RegexTests.test_search_star_pluscCst|d}t|dS)Nrr%)intstr)rZmatchobjZ int_valuer r r bump_numNs zRegexTests.bump_numcCs|tdddd|td|jdd|td|jddd |td d d dd |td d dd|tdddd|tdddd|tdddd|tdddd|tdddd|tdddd|tdddtdtdtdtdtdtd |td!d"d#d$|tdd%dd|tdd&dd|tdd'dd|tdd(dd)|td*d+d*d,|td*d-d*d-|td*d.d*d.|td*d/d*d/dS)0Nz(?i)b+rz bbbb BBBBzx xz\d+z08.2 -2 23x99yz9.3 -3 24x100yr&z 9.3 -3 23x99y.cSsdS)Nz\nr )mr r r Yz1RegexTests.test_basic_regex_sub..z\n z(?Px)z \g\gxxZxxxxz \g\g<1>z (?Px)z\g\gz \g<1>\g<1>az"\t\n\v\r\f\a\b\B\Z\a\A\w\W\s\S\d\Dz \B\Z\A\w\W\s\S\d\Dz  z^\s*XtestZXtestz\x0Az\u000Az \U0000000Az\N{LATIN CAPITAL LETTER A}Axs\x0A s\u000As \U0000000As\N{LATIN CAPITAL LETTER A})rrsubr.chr)rr r r test_basic_regex_subRs:  2   zRegexTests.test_basic_regex_subcCs|tdddddS)Nz (?Px)z \g<1>\g<1>\br4zxxxx)rrrA)rr r r test_bug_449964wszRegexTests.test_bug_449964cCs\|tdddd|tdddd|tdddd|tdddddS)Nz\r\nz\nz abc def zabc def z r3)rrrA)rr r r test_bug_449000|szRegexTests.test_bug_449000csntd|t|jfdd|t|jfdd|t|jfdd|t|jfdddS)Nr/cstdtjS)Nr>)rr*Ir )patternr r r1r2z*RegexTests.test_bug_1661..cstdtjS)Nr>)rr(rFr )rGr r r1r2cstdtjS)Nr>)rr rFr )rGr r r1r2csttjS)N)rrrFr )rGr r r1r2)rrassertRaisesRegex ValueErrorFLAGS_WITH_COMPILED_PAT)rr )rGr test_bug_1661s     zRegexTests.test_bug_1661cCs |tttd|jdS)Nz(?P)(?(quote)))rreprrrr PATTERN_CLASS)rr r r test_bug_3629szRegexTests.test_bug_3629cCs|tdddd|tdddd|tdddd|tdddd|tdd dd |tdd dd |tdd dd|tdddd|tdddd|tdddd|tdddd|tdddd|tdddd |tdddd|tdddd|tdddd|tdddd|tdddd |tj|jd!d"|tj|jd#d"|tj|jd$d"|tj|jd%d"|tj|jd&d"|tj|jd'd"|tj|jd(d"|tj|jd)d"|tj|jd*d"|tj|jd+d"|tj|jd,d"|tj|jd-d"|td.d/dd|td0d1d2d3|td0d4d2d5dS)6Nrz\0z\000z\001z\008z8z\009z9z\111rFz\117Oz\1111ZI1z\00z\07z\08z\09z\0azaz\400uĀz\777uǿr?s\400s\777cSstdddS)Nrz\1)rrAr r r r r1sz=RegexTests.test_sub_template_numeric_escape..cSstdddS)Nrz\8)rrAr r r r r1scSstdddS)Nrz\9)rrAr r r r r1scSstdddS)Nrz\11)rrAr r r r r1scSstdddS)Nrz\18)rrAr r r r r1scSstdddS)Nrz\1a)rrAr r r r r1scSstdddS)Nrz\90)rrAr r r r r1scSstdddS)Nrz\99)rrAr r r r r1scSstdddS)Nrz\118)rrAr r r r r1scSstdddS)Nrz\11a)rrAr r r r r1scSstdddS)Nrz\181)rrAr r r r r1scSstdddS)Nrz\800)rrAr r r r r1sz(((((((((((x)))))))))))z\11z((((((((((y))))))))))(.)z\118xyzZxz8z\11aZxza)rrrArHerrorINVALID_GROUP_REF)rr r r test_sub_template_numeric_escapesHz+RegexTests.test_sub_template_numeric_escapecCs2|tdddd|tddddddS)Nr5baaaaaZbbbbbr%Zbaaaa)rrrA)rr r r test_qualified_re_subsz RegexTests.test_qualified_re_subcCs|tdddddS)Nz (\S)\s+(\S)z\1 \2z hello therez hello there)rrrA)rr r r test_bug_114660szRegexTests.test_bug_114660cCshtjdkr"|tddddn|tdddd|tdddd|tdddd dS) N)r&r;rz(?V0)x*-Zabxdz-a-b--d-z-a-b-d-z(?V1)x*zx+zab-d)sys version_inforrrA)rr r r test_bug_462270s  zRegexTests.test_bug_462270cCs*d}|td|dd|ddS)Nÿz(?Pa)abcr5)rrr(group)rZ group_namer r r test_bug_14462szRegexTests.test_bug_14462cCs|tj|jdd|tj|jdd|tj|jdd|tj|jdd|tj|jdd|t|jdd| t dd d d | t dd d d |tj|jd ddS)NcSstdddS)Nz(?Px)z\g.cSstdddS)Nz(?Px)z\gx)z\gr4)rrAr r r r r1scSstdddS)Nz(?Px)z\gr4)rrAr r r r r1scSstdddS)Nz(?Px)z\g<1a1>r4)rrAr r r r r1scSstdddS)Nz(?Px)z\gr4)rrAr r r r r1sz(?Px)|(?Py)z\gr4z\2cSstdddS)Nz(?Px)z\g<-1>r4)rrAr r r r r1s) rHrrV MISSING_GTMISSING_GROUP_NAME MISSING_LTBAD_GROUP_NAME IndexErrorUNKNOWN_GROUP_IrrA)rr r r test_symbolic_refsszRegexTests.test_symbolic_refscCst|tdddd|tdddd|tdddd|td ddd |td ddd d dS) Nz(?i)b+rz bbbb BBBB)zx xzb+)zx BBBBr%rU)rUrzb*)Zxxxyxzxrm)Zxxxyzrm)rrsubn)rr r r test_re_subns zRegexTests.test_re_subncCsR|tdddddddgtjdkr|tddddddddddg|td ddddddddddd dddddg|td dddddddddg|td ddddddddddddddddgn||tddddddg|td ddddddd dg|td dddddg|td ddddddddg|td ddddddg|tdddddddddddddd dg |tdddddddg|tddddddg|ddtddDddddg|tddddddg|ddtddDddddg|tddddddddddddg |ddtddDddddddddddg |tddddddddddddg |ddtddDddddddddddg |tdddddddddg|tddddd dg|td!ddd"d#dgdS)$N:z:a:b::crer5rYc)r&r;rz:*z(:*)z::z(?::*)z(:)*z([b:]+)z:b::z(b)|(:+)z (?:b)|(?::+)rxaxbxccSsg|]}|qSr r ).0r0r r r !sz,RegexTests.test_re_split..z(?r)xcSsg|]}|qSr r )rtr0r r r ru%sz(x)|(y)cSsg|]}|qSr r )rtr0r r r ru*sz (?r)(x)|(y)cSsg|]}|qSr r )rtr0r r r ru/sz(?V1)\bza b c z(?V1)\mza zb z(?V1)\Mz bz c)rrsplitr^r_ splititer)rr r r test_re_splitsV       zRegexTests.test_re_splitcCs|tddddddg|tdddddd g|td dddddddgtjd kr|td ddddddd gn |td dddddddgdS)Nrqz:a:b::crmrer5zb::cza:b:c:drYzc:dz(:))r&r;rz(:*)za:b::c)rrrwr^r_)rr r r test_qualified_re_split9s  z"RegexTests.test_qualified_re_splitcCs|tddg|tdddddg|tdddddg|tddd d d g|td d dg|tdd dg|tdddg|tdddg|tdddg|tdddg|tdddg|tdddgdS)Nz:+rbz a:b::c:::drqz::z:::z(:+)z(:)(:*))rqre)rqrq)rqz::z\((?P.{0,5}?TEST)\)z (MY TEST)zMY TESTz\((?P.{0,3}?TEST)\)z\((?P.{0,3}?T)\)z(MY T)zMY Tz [^a]{2}[A-Z]z Sz Sz[^a]{2,3}[A-Z]z Sz SzX(Y[^Y]+?){1,2}( |Q)+DEFzXYABCYPPQ Q DEF)zYPPQ rvz(\nTest(\n+.+?){0,2}?)?\n+Endz Test xyz xyz End)z Test xyz xyzz xyz)rrr )rr r r test_re_findallFs&        zRegexTests.test_re_findallcCs|tdddddgdS)Nz(a|(b))aba)r5re)rYrY)rrr )rr r r test_bug_117612_szRegexTests.test_bug_117612cCs|tddddd|tddddd|tdddd|tdddd|tdddddtd}||dddd||d ddd ||d ddd ||d ddd||d dddtdd}||d||dd||dd||dddtd}||ddddd||d dddd||d dddddS)Nr5)r5z(a))r5r5rr%z ((a)|(b))(c)?)r5r5r5NNrY)rYrYNrYNac)r~r5r5Nrrbc)rrYNrYrrz!(?:(?Pa)|(?Pb))(?Pc)?rmr&)r5NNZa1Zb2c3)NrYN)r5Nrr)rrr*rcr)rpatr0r r r test_re_matchcs(   zRegexTests.test_re_matchcCs6|tddddd|tddddd|tddd|tddd|tdd ddd |tdd ddd |td d ddd |td ddddtd}||dddd||dddd||dd||dddS)Nz^(\()?([^()]+)(?(1)\))$z(a))z(a)(r5r5)r5Nr5za)z(az^(?:(a)|c)((?(1)b|d))$ab)rr5rYcd)rNdz^(?:(a)|c)((?(1)|d))$)r5r5rez(?Pa)(?Pb)?((?(g2)c|d))rb)rbr5rYrrad)rr5Nrabdr~)rrr*r)rpr r r test_re_groupref_exists~s z"RegexTests.test_re_groupref_existscCs|tddddd|tddddd|tddd|tddd|td d ddd |td d ddd|tdddgdS)Nz^(\|)?([^()]+)\1$z|a|)z|a||r5z^(\|)?([^()]+)\1?$r5)r5Nr5za|z|az^(?:(a)|c)(\1)$aa)rr5r5z^(?:(a)|c)(\1)?$rr)rrNNzE(?i)(.{1,40}?),(.{1,40}?)(?:;)+(.{1,80}).{1,40}?\3(\ |;)+(.{1,80}?)\1z&TEST, BEST; LEST ; Lest 123 Test, Best)ZTESTz BESTz LESTrvz123 )rrr*r )rr r r test_re_grouprefs zRegexTests.test_re_grouprefcCs"|tddddddS)Nz#(?Pfirst) (?Psecond)z first secondfirstsecond)rr)rrr* groupdict)rr r r test_groupdicts zRegexTests.test_groupdictcCs|tdddddS)Nz#(?Pfirst) (?Psecond)z first secondz\2 \1 \g \gzsecond first second first)rrr*expand)rr r r test_expands  zRegexTests.test_expandcCs|tddd|tddd|tddd|tddd|tdddd|td ddd|td ddd|td ddd|td ddd|td ddd|tdddd|td ddd|tddd|tddd|tddd|tddd|tdddd|tdddd|tdddd|tdddd|ttddd|ttddd|ttddd|ttddd|ttd dd|ttd!dd|ttd"dd|ttddd|td#dd|ttd#d$ddS)%Nz ^(\w){1}$rbz ^(\w){1}?$z ^(\w){1,2}$z ^(\w){1,2}?$z ^(\w){3}$r%rrz ^(\w){1,3}$z ^(\w){1,4}$z ^(\w){3,4}?$z ^(\w){3}?$z ^(\w){1,3}?$z ^(\w){1,4}?$z^x{1}$r$z^x{1}?$z^x{1,2}$z ^x{1,2}?$z^x{1}rrz^x{1}?z^x{0,1}z^x{0,1}?rez^x{3}$Tz^x{1,3}$z^x{1,4}$z ^x{3,4}?$z^x{3}?$z ^x{1,3}?$z ^x{1,4}?$z^x{}$zx{})rrr*bool)rr r r test_repeat_minmaxs<zRegexTests.test_repeat_minmaxcCs|tdjd|tdjtjtjBtjB|tdjtjtjBtjB|tdj d|tdj i|tdj ddd|t ddj d |t ddj d|td d j d |td d j d |td d d |td d dd|t ddjd|t ddjd|ttt ddj|jtd}d |j d<||j dddS)Nz (?i)(a)(b)s (?i)(a)(b)rmz(?i)(?Pa)(?Pb)r%)rotherz(a)r5rzb(c)abcdef)r%r&)rmr&))rr%)rr%z abc(?Pdef)n)rrrrGflagsrFUDEFAULT_VERSIONr>groups groupindexr*posendposr(r)stringregsrLrrerM)rrr r r test_getattrs,    zRegexTests.test_getattrcCs|tdddd|tdddd|tddtjdd |td d tjdd |tddtjdd|tddtjdd|td d tjdd|tddtjdd|tdd tjd|tdddd |td d dd |tddtjdd|tddtjdd|tddtjd|tdddd|tddtjdd|tddtjdddS)Nz\b(b.)\bzabcd abc bcd bxr%Zbxz\B(b.)\Bzabc bcd bc abxds\b(b.)\bsabcd abc bcd bxsbxs\B(b.)\Bsabc bcd bc abxdz^abc$z abc rrbz ^\Aabc\Z$s^abc$s abc sabcs ^\Aabc\Z$z \d\D\w\W\s\Sz1aa! as \d\D\w\W\s\Ss1aa! a)rrr(LOCALEUNICODEM)rr r r test_special_escapess8      zRegexTests.test_special_escapesc Cs|tdddd|tddtjdd|dtjddtjdd|dtjddtjdd|dtjd dtjdddS) Nz([\u2222\u2223])u∢r%rer/ueèéêëēěė)rz%[e\xe8\xe9\xea\xeb\u0113\u011b\u0117]z*e|\xe8|\xe9|\xea|\xeb|\u0113|\u011b|\u0117)rrr*rjoinr )rr r r test_bigcharsets    zRegexTests.test_bigcharsetcCs<|tddtjdd|tddtjdddS)Nza.bza brza.*bza b)rrr*DOTALL)rr r r test_anyall!szRegexTests.test_anyallcCs |tdddd|tdddd|tdddd|tdddd|td d dd|td d dd|td d dd|tdd dd|tdddd|tdddd|tdddddS)Nz (a(?=\s[^a]))za br%r5z(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))za bcz (a)(?=\s\1)za az (a)(?=\s\1*)za aaz(a)(?=\s(abc|a))z (a(?!\s[^a]))z(a(?!\s[abc]))za dz (a)(?!\s\1)z(a)(?!\s(abc|a)))rrr*)rr r r test_non_consuming&szRegexTests.test_non_consumingcCs|tddtjdd|tddtjdd|tddtjdd|td d tjdd |td dtjdd|td d tjdd |tddtjdd|tdd tjdd |tddtjdd|tddd|tddd|ttddd|ttddd|ttddd|ttddddS)NrbABCrsabcsABCz (a\s[^a]*)za bbr%z (a\s[abc])za bz (a\s[abc]*)z ((a)\s\2)za az ((a)\s\2*)za aaz((a)\s(abc|a))z((a)\s(abc|a)*)z[Z-a]_)rr%z (?i)[Z-a]z(?i)naoZnAoTz (?i)n\xE3ounÃouNÃOz(?i)suſ)rrr*rFr)r)rr r r test_ignore_case4s(zRegexTests.test_ignore_casecCs|tddd|tddd|tddd|tddd|td d d|td d d|td d d|tddd|tddd|tddd|td dd|tddd|tddd|tddd|tddd|tddd|tddd|tdddd}x8|D]0}x(|D] }td||s|qWqW|ttdd d!|ttdd"d!|ttd#d d!|ttd#d"d!|ttd$d d!|ttd%d d!|ttdd d!|ttd#d d!|ttd$d d!|ttd%d d!|ttd&dd!|ttd&dd!|td'd(d)d*g|td+d(d)d*g|td,d-d.|td/d-d.|td0d-d.|tjd1d2dgd3d4|tjd1d5d6gd3d7dS)8Nz(?fi)ssZSS)rrmz(?fi)SSssß)rr%z#(?fi)\N{LATIN SMALL LETTER SHARP S}z (?fi)\N{LATIN SMALL LIGATURE ST}ZSTz(?fi)STustuſtz(?fi)SSTußtusſtusstZSST)r%r&z(?fi)FFIuffiuffiuffiz!(?fi)\N{LATIN SMALL LIGATURE FFI}ZFFI)rr&z!(?fi)\N{LATIN SMALL LIGATURE FF}iz!(?fi)f\N{LATIN SMALL LIGATURE FI}uΣσςz(?fi)z(?iV1)ffufffiTufiffz(?iV1)fiz (?iV1)fffiz (?iV1)f\uFB03z (?iV1)f\uFB01z/(?iV0)\m(?:word){e<=3}\M(?neZaffine)options)rruaffineffi)rrn)rrr(r)r*r!rr )rsigmach1ch2r r r test_case_foldingNs                             zRegexTests.test_case_foldingcCs|tdddddS)Nz(\s)rvr%)rrr*)rr r r test_categoryszRegexTests.test_categorycCs4|tdddd|tdddddS)Nz\s([^a])z br%rYz \s([^a]*)z bbZbb)rrr()rr r r test_not_literalszRegexTests.test_not_literalcCs4|tdddd|tdddddS)Nz\s(b)z br%rYza\sza r)rrr()rr r r test_search_coverageszRegexTests.test_search_coveragec Csd}|t||xjtddD]\}|t|7}|tttt|t|d|ttt|t|dq"Wtt|}|||ddS)NrerT)rr%)rr) rrescaperangerBrr*r)r)rrirr r r test_re_escapes    zRegexTests.test_re_escapec Csd}|t||x`tddD]R}t|g}||7}|ttt||d|tt||dq"Wtt|}|||ddS)Nr2rrT)rr%)rr) rrrrbytesrr*r)r)rrrrYrr r r test_re_escape_bytes "zRegexTests.test_re_escape_bytecCshtjtjkr|tjtjkr(|tjtjkr<|tjtj krP|tj tj krd|dS)N) rrF IGNORECASEr!Lrr MULTILINESrr<VERBOSE)rr r r test_constantss     zRegexTests.test_constantsc CsDx>tjtjtjtjtjgD]"}|ttt d||j qWdS)Nz ^pattern$) rrFrr<rrrrLrrrM)rflagr r r test_flagsszRegexTests.test_flagsc CsxdD]}|ttd|t|d|ttd|t|dd|ttd|t|dd|ttd|t|d|ttd |t|dd|ttd |t|d dqW|tj|jd d dS)N)rr @z\%03oTz\%03o00z\%03o88z\x%02xz\x%02x0z\x%02xzzcSs tddS)Nz\911re)rr*r r r r r1sz8RegexTests.test_sre_character_literals..)rrrr*rBrHrVrW)rrr r r test_sre_character_literalss    z&RegexTests.test_sre_character_literalsc CsxdD]}|ttd|t|d|ttd|t|d|ttd|t|d|ttd|t|d|ttd|t|d|ttd|t|dqW|tj|jd d dS) N)rrrrrrrrz[\%03o]Tz[\%03o0]z[\%03o8]z[\x%02x]z [\x%02x0]z [\x%02xz]cSs tddS)Nz[\911]re)rr*r r r r r1sz>RegexTests.test_sre_character_class_literals..)rrrr*rBrHrVBAD_OCTAL_ESCAPE)rrr r r !test_sre_character_class_literalss      $z,RegexTests.test_sre_character_class_literalscCsR|tdddd|tdddd|tdddddS)Nz(a)|(b)rYr%)rr)rrr*startendr))rr r r test_bug_113254szRegexTests.test_bug_113254cCsr|tddjd|tddjd|tddjd|tddjd|tddjddS) Nz(a)?ar5z(a)(b)?brr%z(?Pa)(?Pb)?bz (?Pa(b))z((a)))rrr* lastindex lastgroup)rr r r test_bug_527371s zRegexTests.test_bug_527371cCs|tj|jdddS)NcSs tdS)Nzfoo[a-)rrr r r r r1sz,RegexTests.test_bug_545855..)rHrrVBAD_SET)rr r r test_bug_545855szRegexTests.test_bug_545855cCs|tdddddd|tdddd ddd dd |tdd d ddd|tdddddddS)Nz.*?ci'rrri!Nz.*?cdirrcdei#Ni Nrbdeiaz(a|b)*?c)rrr*rr()rr r r test_bug_418626 szRegexTests.test_bug_418626cCs,dtdd}|t|o"dddS)N[u‹]r%)rrrr)rrr r r test_bug_612074szRegexTests.test_bug_612074cCs`|tddddd|tdddddd|tdddddddS)Nz(x)*iPrr%z(x)*yrz(x)*?y)rrr*)rr r r test_stack_overflows zRegexTests.test_stack_overflowc Csdd}dd}dd}dd}td |fd |fd |fd |fd g}|tt|jdj|j||ddddddddddg dfdS)NcSs|S)Nr )scannertokenr r r s_ident&r2z(RegexTests.test_scanner..s_identcSsd|S)Nzop%sr )rrr r r s_operator'r2z+RegexTests.test_scanner..s_operatorcSst|S)N)float)rrr r r s_float(r2z(RegexTests.test_scanner..s_floatcSst|S)N)r,)rrr r r s_int)r2z&RegexTests.test_scanner..s_intz [a-zA-Z_]\w*z\d+\.\d*z\d+z =|\+|-|\*|/)z\s+Nrezsum = 3*foo + 312.50 + barsumzop=r&zop*foozop+gs@bar) rScannerrrLrrrGrMscan)rrrrrrr r r test_scanner%s zRegexTests.test_scannercCsRxLdD]D}|td|dddd|td|ddddqWdS)N)re?*z ((.%s):)?zr)rNNza:z)za:zza:r5)rrr*)ropr r r test_bug_4489515s  zRegexTests.test_bug_448951cCs|tddddd|tddddd|tddddd|tddddd|td dddd |td d ddd |tddddd|tddddddS)Nz ^((a)|b)*rb)rrYr5z ^(([ab])|c)*)rbrrrYz ^((d)|[ab])*)rrYNz ^((a)c|[ab])*z ^((a)|b)*?c)rbrYr5z^(([ab])|c)*?dabcd)rrrrYz^((d)|[ab])*?c)rbrYNz^((a)c|[ab])*?c)rrr*)rr r r test_bug_725106>szRegexTests.test_bug_725106cCs<|tddddd|tddddddS)Nz(a)(?:(?=(b)*)c)*Zabb)r5r5Nz(a)((?!(b)*))*)r5r5NN)rrr*)rr r r test_bug_725149PszRegexTests.test_bug_725149cCs4Gdddt}t|d}||dddS)Nc@s eZdZdS)z.RegexTests.test_bug_764548..my_unicodeN)r r r r r r r my_unicodeYsrrbrU)r-rrrr*)rrrr r r test_bug_764548WszRegexTests.test_bug_764548cCs,tdd}|dd|DdddgdS)Nz:+z a:b::c:::dcSsg|] }|dqS)rr )rtitemr r r ru_sz,RegexTests.test_finditer..rqz::z:::)rfinditerr)ritr r r test_finditer]s zRegexTests.test_finditercCs tdtdkr|dS)NZ bug_926075s bug_926075)rrr!)rr r r test_bug_926075aszRegexTests.test_bug_926075cCs&d}|t|ddddgdS)Nu [.。.。]za.b.cr5rYrr)rrrrw)rrGr r r test_bug_931848eszRegexTests.test_bug_931848csltdd|td|tfddtdd}|| d|| ddS)Nz\sza b)r%rmcstS)N)nextr )rr r r1mr2z,RegexTests.test_bug_581080..) rrrrr) assertRaises StopIterationrrr()rrr )rr test_bug_581080js  zRegexTests.test_bug_581080csLtdd|td|td|tfdddS)Nz.*Zasdf)rrn)rnrncstS)N)rr )rr r r1wr2z,RegexTests.test_bug_817234..)rrrrr)rr)rr )rr test_bug_817234ss zRegexTests.test_bug_817234cCs\ddl}xNdD]F}||}|td|d|td|dddqWdS)NrZ bBuhHiIlLfdsblar2r%r )arrayrrrr*)rr typecoder5r r r test_empty_arrayys   zRegexTests.test_empty_arraycCs\td}td}t|tjtjB}|t||dt|tjtjB}|t||dtd|tj}|t||dtd|tj}|t||dtd|}|t||dtd|}|t||d|ttddd|ttddd|ttd dd|td dddS) NiiTz(?i)z(?iu)z(?i)ar>za(?i)z(?iV1)aza(?iV1))rBrrrFrrrr*)rZ upper_charZ lower_charrr r r test_inline_flagss$zRegexTests.test_inline_flagscCstd}||ddd||ddd||dddtdtj}||ddd ||ddd ||ddddS) N$#za b za b# #za b cza b c#r3z# #za# b# #za# b# c#)rrrrAr)rrGr r r test_dollar_matches_twices z$RegexTests.test_dollar_matches_twicecsPtdtd|t|jfdd|t|jfdd|t|jfdd|t|jfdd|t|jfdd|t|jfd d|t|jfd d|t|jfd d|t|j d d|t|j d d|t|j dd|t|j dd|t|j dd|t|j dddS)Nr/.cs dS)Nb)r*r )rr r r1sz2RegexTests.test_bytes_str_mixing..cs dS)NrY)r*r )bpatr r r1scs ddS)Nrrr)rAr )rr r r1scs ddS)NrYc)rAr )rr r r1scs ddS)Nrr)rAr )rr r r1scs ddS)Nrrr)rAr )rr r r1scs ddS)NrYr)rAr )rr r r1scs ddS)NrYrr)rAr )rr r r1scSstdtjS)Ns\w)rrrr r r r r1scSs tdS)Ns(?u)\w)rrr r r r r1scSstdtjtjBS)Nz\w)rrrASCIIr r r r r1scSstdtjS)Nz(?u)\w)rrrr r r r r1scSstdtjS)Nz(?a)\w)rrrr r r r r1scSs tdS)Nz(?au)\w)rrr r r r r1s) rrrH TypeErrorSTR_PAT_ON_BYTESBYTES_PAT_ON_STRSTR_PAT_BYTES_TEMPLBYTES_PAT_STR_TEMPLrIBYTES_PAT_UNI_FLAG MIXED_FLAGS)rr )rrr test_bytes_str_mixings   z RegexTests.test_bytes_str_mixingcCsLx\dtjfD]N}td|tjB}|t|ddtd|}|t|ddq WtdtjtjB}||ddtdtj}||ddtdtj}||ddtd}||ddxRdtjfD]D}td|tjB}||d dtd }||d dqW|t |j d d dS) NrÀàTz\wu(?a)Àz(?a)\ws\wcSs tdS)Nz(?au)\w)rrr r r r r1sz8RegexTests.test_ascii_and_unicode_flag..) rrrrrrr*rrHrIr)rrrr r r test_ascii_and_unicode_flags&   z&RegexTests.test_ascii_and_unicode_flagcCstdd}|s|dn2|rD|d|dksD|d|dkrN|d|s^|dn,|dddkr|dt|dddS) Nz(?\w)xyz(Failed: expected match but returned Nonerr%Failed)rrz0Failed: expected "('x', 'x')" but got {} instead)rr*r!rcformatascii)rr0r r r test_subscripting_matchs  (  z"RegexTests.test_subscripting_matchcCsFtdd}tdd}|r8|r8|dd|ddksB|ddS)Nz (?P\w)rz(?\w)r#)rr*r!)rZm0m1r r r test_new_named_groupss   z RegexTests.test_new_named_groupsc 0Cs|tddd|tddd|tddd|ttddd|ttdd d|ttd d d|ttd d d|tddd|td dd|td dd|tdd d|tdd d|tdd d|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttd dd|ttd!dd|ttd"dd|ttd#dd|ttd$dd|ttd%dd|ttd&dd|ttd'dd|ttd(dd|ttd)dd|ttd*dd|ttd+dd|ttd,dd|ttd-dd|ttd.d/d|ttd0d1d|ttddd|td.d2d|td0d2d|tdd2d|td3d/d|td4d1d|td5dd|ttd3d2d|ttd4d2d|ttd5d2d|ttd6dd|ttd6d7d|ttd8dd|ttd9d7d|ttd:d7d|ttd:dd|ttdd/d|ttdd7d|ttdd;d|tdd?|tddAdBdCg|tdDd@dEdFg|tdz\P{IsCyrillic}z\P{Script=Cyrillic}z\P{InCyrillic}z\P{Block=Cyrillic}z \p{^Cyrillic}z\p{^IsCyrillic}z\p{^Script=Cyrillic}z\p{^InCyrillic}z\p{^Block=Cyrillic}z[[:^Cyrillic:]]z[[:^IsCyrillic:]]z[[:^Script=Cyrillic:]]z[[:^InCyrillic:]]z[[:^Block=Cyrillic:]]z\drz\srvrz\Dz\Sz\Wz\p{L}r5z\p{Lu}z\p{Ll}z(?i)arz\X)rr%uà)rrmu aààeééeéuéz\X{3}uaààueééu ́Á z úuÁu -09AZaz_Γγs-09AZaz_z#Ll Lm Lo Lt Lu Mc Me Mn Nd Nl No Pcu 09AZaz_Γγz [[:word:]]r]z [[:^word:]]Z09z [[:digit:]]u -AZaz_Γγz [[:^digit:]]z [[:alpha:]]uAZazΓγz [[:^alpha:]]z-09_z [[:alnum:]]u 09AZazΓγz [[:^alnum:]]z-_z [[:xdigit:]]Z09Aaz [[:^xdigit:]]u-Zz_Γγ)z\p{InBasicLatin}uaár5)z\P{InBasicLatin}uaáá)z(?i)\p{InBasicLatin}uaár5)z(?i)\P{InBasicLatin}uaár0s09AZaz_s(?L)[[:word:]]-s(?L)[[:^word:]]s09s(?L)[[:digit:]]s-AZaz_s(?L)[[:^digit:]]s(?L)[[:alpha:]]sAZazs(?L)[[:^alpha:]]s-09_s(?L)[[:alnum:]]s09AZazs(?L)[[:^alnum:]]s-_s(?L)[[:xdigit:]]s09Aas(?L)[[:^xdigit:]]s-Zz_s(?a)[[:word:]]s(?a)\Ws(?a)[[:^word:]]s(?a)\ds(?a)[[:digit:]]s(?a)\Ds(?a)[[:^digit:]]s(?a)[[:alpha:]]s(?a)[[:^alpha:]]s(?a)[[:alnum:]]s(?a)[[:^alnum:]]s(?a)[[:xdigit:]]s(?a)[[:^xdigit:]]rz Failed: {}zFailed: {} raised {}z\p{NumericValue=0}z\p{NumericValue=1/2}½z\p{NumericValue=0.5}) rrr*rr)r setrwrr!r$ Exceptionr%) rZchars_uZchars_bZword_settestsrGcharsexpectedr-r r r test_propertiess@                                                           .   zRegexTests.test_propertiesc Csp|tdddg|tddddg|tdddddg|tddd d d d d ddd gdS)Nz\w+u हिन्दी,uहिन्दीz\W+rv,z(?V1)\bz(?V1)\Breu हuिuनu्uदuी,)rrr rw)rr r r test_word_classs     zRegexTests.test_word_classcCs|tddddgdS)Nz\G\w{2}zabcd efrr)rrr )rr r r test_search_anchorszRegexTests.test_search_anchorc Cs|tdddddg|tjdddddddg|tdd d d g|tjdd ddd d d d g|tjddddddg|ddtddDdddg|ddtjdd ddDd d d d g|ddtddDdddg|ddtjdd ddDd d d d g|tdddddg|tdddddg|tdddddg|tdddddg|ddtddDdddg|d dtddDdddg|d!dtddDdddg|d"dtddDdddg|td#d$d d g|td%d&d d g|td'd$g|td(d$d)g|td*d+d,dddg|td-d+d,dddg|td.d+ddd,dg|td/d+ddd,dg|tjd0d&d1d2d3ddg|tjd0d&d1d4d3ddg|d5dtjd0d&d1d2d3Dddg|d6dtjd0d&d1d4d3Dddg|d7dtjdd&d1d2d3Dddg|d8dtjdd&d1d4d3Dddg|tjdd&d1d2d3ddg|tjdd&d1d4d3ddg|td9d:tjdd;g|tdd?d@dAg|tdBd?dCdDg|dEdtd=dDd g|dFdtjd=dddDd d g|dGdtd>d?DdHdIg|dJdtdBd?DdKdLg|tdMdMdN|tdOdMdN|tdPdQdN|tdRdQdN|tdSdTdd|tdUdTdddS)VNz(?r).rbrrrYr5T) overlappedz(?r)..abcderrrrz (?r)(.)(-)(.)za-b-c)rYr]rr)r5r]rYcSsg|] }|dqS)rr )rtr0r r r rusz2RegexTests.test_search_reverse..cSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r rusz^|\w+zfoo barrerrz (?V1)^|\w+z (?r)^|\w+z (?rV1)^|\w+cSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r rusz\G\w{2}zabcd efz .{2}(?<=\G.*)rz (?r)\G\w{2}z (?r)\w{2}\Gefzq*ZqqweZqqz(?V1)q*z(?r)q*z(?rV1)q*r/r%r&)rrrcSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r rusz[ab]ZaBBz(?r)[ab]z(?r).{2}z (\w+) (\w+)zfirst second third fourth fifth)rr)thirdfourthz(?r)(\w+) (\w+))rAZfifth)rr@cSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r rusz first secondz third fourthcSsg|] }|dqS)rr )rtr0r r r rusz fourth fifthz second thirdr)rrz (?r)abcdefz (?i)abcdefABCDEFz (?ir)abcdefz(.)z\1z(?r)(.))rrr rrFr(r)rA)rr r r test_search_reverses            zRegexTests.test_search_reversecCs|tddddS)Nz(?>a*)ar)rrr()rr r r test_atomic!szRegexTests.test_atomiccCsd|tddd|tddd|tddd|tddd|td d d |td d d|tdd d|tdd d|tddd|tddd|tddd|tddd|tdd d|tdd d|tdd d|tdd ddS)Nza?ar5)rr%za*ar')rr&za+aza{1,3}az (?:ab)?abr)rrmz (?:ab)*abZababab)rrz (?:ab)+abz (?:ab){1,3}abza?+aza*+aza++aza{1,3}+az (?:ab)?+abz (?:ab)*+abz (?:ab)++abz(?:ab){1,3}+ab)rrr(r))rr r r test_possessive%s zRegexTests.test_possessivec Cs*tjdkr*|tdddddddgn|tdddg|tdddddddg|td d dd d g|d dtd d Ddd d g|tdd d d dg|ddtdd Dd d dg|tdd dd d g|ddtdd Ddd d g|tdd d d dg|ddtdd Dd d dgtjdkr|tddddddddddg|ddtddDddddddddgn6|tdddg|ddtddDdgtjdkrL|tddddddddddg|ddtddDddddddddgn6|tdddg|ddtddDdg|tddddddddddg|ddtddDddddddddg|tddddddddddg|d dtddDddddddddgdS)!N)r&r;rz\bza brer5rvrYz(?V1)\bz^|\w+zfoo barrrcSsg|] }|dqS)rr )rtr0r r r ruLsz-RegexTests.test_zerowidth..z (?r)^|\w+cSsg|] }|dqS)rr )rtr0r r r ruPsz (?V1)^|\w+cSsg|] }|dqS)rr )rtr0r r r ruTsz (?rV1)^|\w+cSsg|] }|dqS)rr )rtr0r r r ruXsrsrrrcSsg|]}|qSr r )rtr0r r r ru^scSsg|]}|qSr r )rtr0r r r rubsz(?r)cSsg|]}|qSr r )rtr0r r r ruhscSsg|]}|qSr r )rtr0r r r rulsz(?V1)cSsg|]}|qSr r )rtr0r r r ruqsz(?rV1)cSsg|]}|qSr r )rtr0r r r ruvs)r^r_rrrwr rrx)rr r r test_zerowidth?s\       zRegexTests.test_zerowidthcCs|tddd|tddd|tddd|tddd|tj|jdd|td dd|td dd|tjd dtjd d|tjd dtjd d|tjddtjd ddS)Nz(?i)Abr)rrmz(?i:A)bzA(?i)bzA(?iV1)bcSstjddtjdS)Nz (?V0-i)Abr)r)rr(rFr r r r r1sz9RegexTests.test_scoped_and_inline_flags..z(?V0)Abz(?V1)Abz (?V1-i)Ab)rz(?-i:A)bz A(?V1-i)b)rrr(r)rHrV CANT_TURN_OFFrF)rr r r test_scoped_and_inline_flagsys z'RegexTests.test_scoped_and_inline_flagscCsL|tddd|tddd|tddddS)Nz(?:a+)+r')rr&z (?:(?:ab)+c)+abcabc)rrz (?:a+){2,})rrr(r))rr r r test_repeated_repeatssz RegexTests.test_repeated_repeatscCsD|tddd|tddd|tddd|tddd|ttddd|td dd|ttd dd|td dd|td dd|td dd|ttddd|tddd|ttddd|ttddd|tddd|ttddd|tddd|ttddd|tddd|tddd|tddd|ttddd|ttddd|tddd|ttddd|tttd|j dS)Nz 123(?<=a\d+)Za123)r%rnZb123z 123(?[ \t]+\r*$)|(?P(?<=[^\n])\Z))r&r;rcSsd|jdS)N<>)r)r0r r r r1r2z+RegexTests.test_bug_10328..zfoobar )z%foobarrmcSsd|jdS)NrMrN)r)r0r r r r1r2)zfoobarr%cSsg|] }|qSr )rc)rtr0r r r rusz-RegexTests.test_bug_10328..rvrezD(?mV1)(?P[ \t]+\r*$)|(?P(?<=[^\n])\Z)cSsd|jdS)NrMrN)r)r0r r r r1r2cSsg|] }|qSr )rc)rtr0r r r rus)rrr^r_rror)rrr r r test_bug_10328s      zRegexTests.test_bug_10328cCst|tddddg|tjddddddddg|td dddg|tjd dddddddg|tjd d ddd d g|ddtddDddg|ddtjddddDddddg|ddtd dDddg|ddtjd dddDddddg|ddtjd d ddDd d g|ddtjdd ddDd d gdS)Nz..r=rrT)r<rrz(?r)..z (.)(-)(.)za-b-c)r5r]rY)rYr]rrcSsg|] }|dqS)rr )rtr0r r r rusz.RegexTests.test_overlapped..cSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|dqS)rr )rtr0r r r ruscSsg|] }|qSr )r)rtr0r r r ruscSsg|] }|qSr )r)rtr0r r r rusz (?r)(.)(-)(.))rrr r)rr r r test_overlappeds(   zRegexTests.test_overlappedcCsJ|tdddddddg|ddtddDdddddgdS) Nr9za,b,,c,r5rYrerrcSsg|]}|qSr r )rtr0r r r rusz-RegexTests.test_splititer..)rrrwrx)rr r r test_splititerszRegexTests.test_splititerc Cs|tddd|tddd|tddddddd d g|td dd d g|tddddddgdS)Nz\Xr)rr%uà)rrmu aààeéér5r-r.uéz\X{3}uaààueééu ́Ár/z úuÁ)rrr*r)r )rr r r test_graphemes    zRegexTests.test_graphemecCs$d}|td|ddddddd d dd d d dddddddddddg|td|dddddddddddd dddddddddddddgd}|td|dddd dg|td|dddd dgd}|td|dd d d dd d d!dd"d d#dg |td|dddd$dd%dgdS)&Nz4The quick ("brown") fox can't jump 32.3 feet, right?z(?V1)\breZThervZquickz ("Zbrownz") ZfoxZcan'tZjumpZ32r/3Zfeetz, rightrz(?V1w)\br")zcan'tz32.3r9zThe foxz zcan't aujourd'hui l'objectifZaujourdZhuilZobjectifz aujourd'huiz l'objectif)rrrw)rtextr r r test_word_boundarys(    zRegexTests.test_word_boundarycCs|tddddg|tdddg|tddddg|td dddg|td dddg|td dddg|td d d |td d d|td dd|tdd d |tdd d|tddd|tdd d |tddd |tddd|tdd d |tddd |tddd |tdd d |tdd d|tddd|tdd d |tdd d|tddd|tdd d |tddd |tddd|tdd d |tddd |tddd dS)Nz.+zLine 1 Line 2 zLine 1zLine 2zLine 1 Line 2 zLine 1 Line 2 zLine 1 zLine 2 z(?w).+z^abcrbrz abcz abcz(?w)^abczabc$zabc zabc z(?w)abc$z(?m)^abcr%z (?mw)^abcz(?m)abc$z (?mw)abc$)rrr r(r)rr r r test_line_boundary*sH    zRegexTests.test_line_boundarycCs@|tddd|tddd|tddd|tddd|tddd |tdd d |td dd |td d d |td dd|tddd|tddd|tddd|tddd|tddd|tddd|tddd|tddd|tddd|tddd|tddd|tdddgdgd|tddd|tddd d!ggddS)"Nz(?:(a)|(b))(c)r~)r5Nrrr)NrYrrz(?:(?a)|(?b))(?c)z!(?a)(?:(?b)|(?c))(?d)r)r5rYNrZacd)r5Nrrrz(a)(?:(b)|(c))(d)z(a)(?|(b)|(b))(d))r5rYrz(?|(?a)|(?b))(c)z(?|(?a)|(?b))(c))r5rr)rYrrz$(?|(?a)(?b)|(?c)(?d))(e)Zabe)r5rYr-r)rrrr-z (?|(?a)(?b)|(?c)(d))(e)z(?|(?a)(?b)|(c)(d))(e))rrrr-z (?|(?a)(?b)|(c)(?d))(e)r5rY)r5rY)rNr-rrr)rrr*r capturesdict)rr r r test_branch_resetTsX              zRegexTests.test_branch_resetcCs|tddd|tddd|tddd|tddd|tdd d d |td d dg|tdddg|tddddg|tddddg|tddddg|tddddg|tdddddg|tdddddg|td d dg|tdd dg|tdd dg|tdd dg|dtd d!d"|dtd#d!d$|dtd%d&d'|dtd(d)d*|dtd+d)d*|dtd,d-d)dd.d/td0D}|ttd1|d2|ttd3|d4|ttd5|d6|ttd7|d8|ttd9|d8|ttd:|d6|ttd;|d<|ttd=|d>|ttd?|d@|ttdA|dB|ttdC|dB|ttdD|dE|ttdF|dG|ttdH|dG|t t t dI|j |tdJdKddLg|tdMdKddLg|tdNdKddLg|tdOdKddLgdS)PNz[a]r5)rr%z(?i)[a]r>z[a-b]z (?i)[a-b]z (?V0)([][])r]za[b]cza-b-cz [\p{Alpha}]Za0z(?i)[\p{Alpha}]ZA0z [a\p{Alpha}]Zab0rYz [a\P{Alpha}]rz(?i)[a\p{Alpha}]z(?i)[a\P{Alpha}]z[a-b\p{Alpha}]ZabC0Cz(?i)[a-b\p{Alpha}]ZAbC0z [\P{Alpha}]z [^\p{Alpha}]z [^\P{Alpha}]rez[^\d-h]za^b12c-hza^bcz[^\dh]za^bc-z [^h\s\db]z a^b 12c-hza^c-z[^b\w]za brvz[^b\S]z[^8\d]za 1b2css|]}t|VqdS)N)rB)rtrrr r r sz&RegexTests.test_set..rz \p{ASCII}rz \p{Letter}uz \p{Digit}r7z(?V1)[\p{ASCII}&&\p{Letter}]4z'(?V1)[\p{ASCII}&&\p{Alnum}&&\p{Letter}]z&(?V1)[\p{ASCII}&&\p{Alnum}&&\p{Digit}]z(?V1)[\p{ASCII}&&\p{Cc}]!z(?V1)[\p{ASCII}&&\p{Graph}]^z(?V1)[\p{ASCII}--\p{Cc}]_z[\p{Letter}\p{Digit}]rz(?V1)[\p{Letter}||\p{Digit}]z \p{HexDigit}z(?V1)[\p{HexDigit}~~\p{Digit}]r:z(?V1)[\p{Digit}~~\p{HexDigit}]z (?V0)([][-])z(?V1)[[a-z]--[aei]]rbrrz(?iV1)[[a-z]--[aei]]z (?V1)[\w--a]z (?iV1)[\w--a]) rrr*r)rAr rrlenrLrrrM)r all_charsr r r test_sets                      zRegexTests.test_setc Cs$dddtj|jfdddtj|jfdddtj|jfdddtj|jfdddtj|jfddd td fd ddtj|jfd ddtj|jfd ddtj|jfdddtj|jfdd d td fddd td fdddtdfddd td fdddtdfdddtj|jfdd d td fddd td fdd dtj|jfddtdddttddfdd dtd fddd td!fd"d#dtd#fd$d#dtd#fd%d#dtd#fd&d#dtdfd'd(dtd(fd)d(dtd(fd*d+dtd+fd,d-dttd.fd/d-dtdfd0d1dtdfd2d3dtdfd4d-dtdfd5d6dtd6fd7d6dtd6fd8d9dttd:td;td<td=td>td?fd@dAdtdAfdBdCdtdDfdEdFdtdFfdEdGdtdfdHdIdtdfdJdIdtdfdEdKdtdKfdLdGdtdGfdMdGdtdfdNdGdtdGfdOdIdtdIfdPdIdtdfdQdIdtdIfdRdIdtdIfdSddtj|j fdTdUdUdtdUfdUdVdtdfdUdWdtdfdUdXdtdfdUdYdtdUfdUdZdtdUfd[dUdtdUfd\dUdtdUfd\d]dtd]fd\d^dtd^fd_d]dtd]fd_dUdtdfd_d`dtdfd_d^dtd^fdad]dtd]fdadUdtdUfdad^dtdfdbdUdtdUfdcdUdtdUfdcdddtdfdedddtdUfdcdfdtdfdgdfdtdUfdhdUdtdfdidUdtdfdjdUdtdUfdjdWdtdWfdkdldtdlfdkdmdtdfdndUdtdfdndodtdofdpdodtdfdpdqdtdqfdrdsdtdtfdudvdtdvfdwdvdtdvfdxdvdtdvfdydzdtj|j fd{dzdtj|j fd|dzdtj|j fd}dzdtj|j fd~dzdtj|jfdddtdfdddtdfdddtdfdddtdfddodtdfdddtdfdddtdfdddtdfdddtdfddvdtd fdddtd fdddtd fdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfddvdtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfddUdtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfddUdtdfddUdtdfdddtdUfdddtdfdddtdfdddtdfddzdtj|j fdddtdfdUddtdfdddtdfdddtdfdddtdfdddtdƒfdddtdfdddtd fdddtdȃfdddtdʃfdddtdfdddtdfdddtdσfddUdtdуfddUdtdӃfdddtdՃfdddtdՃfdddtd؃fdddtdڃfdddtdfddUdtd݃fdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdd dtd fdddtdfdddtdfdddtdfdddtdfdddtdfddtdtdtfddd tdUfddd tdUfddd tdfdddtdfdddtdfdddtdfdddtdfdddtd fd ddtd fd ddtd fd d dtdfdd dtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtd fd!d"d#td$fd%d&dtd'fd%d(dtd)fd*d+dtd,fd*dUdtdfd-d+dtd.fd/dsdtd0fd1ddtj|jfd2dd3td4fd5dd3td6fd7ddtj|jfd8d9dtd9fd:d9dtj|jfd;dd?dtd?fd@d dtd fdAdBdtdBfdCd dtd fdDdEdtdEfdFdBdtdBfdUdUdtdUfdUdVdtdfdUdWdtdfdUdXdtdfdUdYdtdUfdUdZdtdUfd[dUdtdUfd\dUdtdUfd\d]dtd]fd\d^dtd^fdGd^dtd^fd_d]dtd]fd_dUdtdfd_d`dtdfdHd`dtdfd_d^dtd^fdHd^dtd^fdId^dtd^fdJd^dtd^fdKd^dtdfdad]dtd]fdadUdtdUfdLdUdtdUfdad^dtdfdbdUdtdUfdMdUdtdUfdcdUdtdUfdcdddtdfdedddtdUfdcdfdtdfdgdfdtdUfdhdUdtdfdidUdtdfdjdUdtdUfdjdWdtdWfdkdldtdlfdkdmdtdfdndUdtdfdndodtdofdpdodtdfdpdqdtdqfdrdsdtdtfdudvdtdvfdxdvdtdvfdNdzdtj|j fdydzdtj|j fd{dzdtj|j fdddtdfdddtdfdddtdfddodtdfdddtdfdddtdfdddtdfdddtdfddUdtdfdddtdfdddtdfdOdzdtj|j fdPdzdtj|j fdddtdfd|dzdtj|j fdddtdfdddtdfdddtdfdddtdfd}dzdtj|j fd~dzdtj|jfddUdtdfddUdtdfdddtdUfdQddtdUfdRdzdtj|jfdSddtdUfdddtdfdTddtdfdddtdfdUddtdfdddtdfdVddtdfddzdtj|j fdddtdfdUddtdfdddtdfdWdXdtdYfdZddtd[fdddtdfdddtdfdddtdƒfdddtdfdddtd fdddtdȃfdddtdʃfdddtdfdddtdfdddtdσfddUdtdуfddUdtdӃfdddtdՃfdddtdՃfdddtd؃fdddtdڃfdddtdfddUdtd݃fdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfd\d d]td fd^ddtdfd_ddtj|jfd`ddtj|jfdd dtd fdddtdfdddtdfdddtdfdddtdfdddtdfddtdtdtfddd tdUfddd tdUfdadbdtdbfdadcdtdfdadddtdfdadedtdfdadfdtdbfdadgdtdbfdhdbdtdbfdidbdtdbfdidjdtdjfdkdldtdlfdmdldtdlfdndjdtdjfdodbdtdfdodpdtdfdqdpdtdfdodldtdlfdrdldtdlfdsdldtdlfdtdldtdlfdudldtdfdvdjdtdjfdvdbdtdbfdwdbdtdbfdvdldtdfdxdbdtdbfdydbdtdbfdzdbdtdbfdzd{dtdfd|d{dtdbfdzd}dtdfd~d}dtdbfddbdtdfddbdtdfddbdtdbfddddtddfdddtdfdddtdfddbdtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfddzdtj|j fddzdtj|j fddzdtj|j fdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfddbdtdfdddtdfdddtdfddzdtj|j fddzdtj|j fdddtdfddzdtj|j fdddtdfdddtdfdddtdfdddtdfddzdtj|j fddzdtj|jfddbdtdfddbdtdfdddtdbfdddtdbfddzdtj|jfdddtdbfdddtdbfdddtdbfdddtdfdddtdfdddtdfdddtdfdddtdƒfdddtdƒfdddtdŃfddzdtj|j fdǐddtdȃfdaddtdfdddtdfdʐddtd̃fd͐ddtd΃fdϐddtdЃfdѐddtdӃfdԐddtdՃfd֐ddtdfd֐ddtdfdِddtdۃfdܐddtd݃fdސddtdfdߐddtdfdddtdfddbdtdfddbdtdfdddtdfdddtdfdddtdfdddtdfdddtdfddbdtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfdddtdfddd]tdfdddtdfdddtdfddd tdfddd tdfdddtdfd d dtd fd ddtd fdddtdfdddtdfdddtdfddd tdbfddd tdbfdddtdfdddtdfdddtdfddqd tdfddqd tdfddqd tdfddqdtdfd d!d td"fd#d$d td%fd&d'd td(fd)d*dtj|jfd+d,dtd,fd-d.dtd.fd/d.dtdfd-d*dtd*fd/d*dtd*fd0d.dtd.fd1d.dtd.fd2d,dtd,fded3dtdfd4d3dtdUfd5d6dtdUfdEdGdtdfdNdGdtdGfd7d8dtd9fd:d8dtd9fd;dd?dtd?fd@dAdBtdCfdDdAdBtdCfdEdFdGtdHfdIddtj|jfdJdKdtdofdLddtj|jfdMdNdtdNfdOddtdfdPdQdtdQfdRdQdtdfdSdQdtdQfdTdQdtdQfdUdQdtdQfdVdQdtdQfdWdXdtdYfdZd[dtd[fd\d]dtd]fd^d_dtd_fd^d`dtd`fdadbd tdfdcdddtddfdedddtddfdfdddtddfdgdddtddfdhdidtdifdjdkdtdfdldmdtdfdndQdtdfdoddGtdpfdqdUdtdrfdsdUdtdrfdtdUdtdrfdud dtd fdudvdtdvfdwdvdtdvfg}x|D]}d}y0t|dxk"r|\}}}}n|\}}}}}WnTtk #r dydzd{|dd|Dd}g}|d~|YnXg} |#rbxJ|dD]:} y| t| Wn tk #rZ| | YnX#q$W|dk #rtjjtjjfdk$r|j||d|||tj||WdQRXnNt||} | #r| #rt| j| } nt| dd} nt| } | | |"q|WdS(Nz (?Pa)z(?Pa)z (?Pa)z(?Pa)(?P=foo_123rz(?Pa)(?P=1)1r5z(?Pa)(?P=0)z(?Pa)(?P=-1)z(?Pa)(?P=!)z(?Pa)(?P=foo_124)z(?Pa)z(?Pa)(?P=foo_123)z(?a)\ga)\g<1>z(?a)\gz(?a)\gz (?a)z(?a)\gz\1)z[\1]rPrz'\x01'z\09r9rz\141z((a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\119abcdefghijklk9z0,11)rlkz\0rOz[\0a]z[a\0]z[^a\0]z\a[\b]\f\n\r\t\vz z[\a][\b][\f][\n][\r][\t][\v]z\c\e\g\i\j\k\o\p\q\y\zZ cegijkopqyzz\xffrarz\x00ffffffffffffffz\x00fz\x00feþz\x00ffz\t\n\v\r\f\a\gz gz \gz \t\n\v\r\f\az r6r7r8r9r:r;z[\t][\n][\v][\r][\f][\b]z z^\w+=(\\[\000-\277]|[^\n\\])*z(SRC=eval.c g.c blah blah blah \\ apes.cz SRC=eval.c g.c blah blah blah \\za.bZacbza bza.*bzacc ccbza.{4,5}bza bza.b(?s)z a.b(?sV1)z(?s)a.bza.*(?s)bz a.*(?sV1)bz(?s)a.*bz (?s)a.{4,5}brX)rererz''rbZxbcZaxcZabxxabcyZababczab*czab*bcZabbcZabbbbczab+bcZabqzab?bczab?cz^abc$Zabccz^abcZaabczabc$^r za.cza.*cZaxyzcZaxyzdza[bc]drza[b-d]eZaceza[b-d]aacr~za[-b]za-za[\-b]za[b-]za[]br]za[za\zabc)z(abcza]za[]]bza]bza[^bc]dZaedza[^-b]cZadcza-cza[^]b]cza]cz\ba\bz-az-a-z\by\br"ZyzrUzx\bzx\Brz\Bzrzz\Bz\Bxz\Ba\Bz\By\Bz\By\brz\by\Bzab|cdrrz()efdefz0,1)r>rez$brYza\(bza(b)za(bza\(*bza((bza\\bza\bz((a))z0,1,2)r5r5r5z(a)b(c))rbr5rrza+b+cZaabbabcz(a+|b)*)rrYz(a+|b)+z(a+|b)?)r5r5z)(z[^ab]*rza*z a|b|c|d|er-z (a|b|c|d|e)fr>)r>r-zabcd*efgZabcdefgzab*Z xabyabbbzZxayabbbzz(ab|cd)er=)rrz [abhgefdc]ijZhijz ^(ab|cd)ez(abc|)efrz(a|b)c*d)ZbcdrYz (ab|ab*)bc)rbr5z a([bc]*)c*)rbrz a([bc]*)(c*d))rrrz a([bc]+)(c*d)z a([bc]*)(c+d))rrYrz a[bcd]*dcdcdeZadcdcdez a[bcd]+dcdcdez (ab|a)b*c)rbrz ((a)(b)c)(d)z1,2,3,4)rbr5rYrz[a-zA-Z_][a-zA-Z0-9_]*alphaz^a(bc+|b[eh])g|.h$Zabh)ZbhNz(bc+d$|ef*g.|h?i(j|k))effgz)ruruNij)rvrvjZeffgZbcddZreffgzz(((((((((a)))))))))zmultiple words of textzuh-uhzmultiple wordszmultiple words, yeahz (.*)c(.*))r=rrz\((.*), (.*)\)z(a, b)z2,1)rYr5z[k]za[-]?cz(abc)\1rIz ([a-c]*)\1z^(.+)?BABr>z(a+).\1$rZ)rZrz ^(a+).\1$aaaa)rIrbz ([a-c]+)\1z(a)\1)rr5z(a+)\1z(a+)+\1z(a).+\1r|)r|r5z(a)ba*\1z (aa|a)a\1$r')r'r5z (a|aa)a\1$z(a+)a\1$z ([abc]*)\1z (a)(b)c|ab)rNNz(a)+xaaax)rzr5z([ac])+xaacx)r{rrz([^/]*/)*sub1/zd:msgs/tdir/sub1/trial/away.cpp)zd:msgs/tdir/sub1/ztdir/z([^.]*)\.([^:]*):[T ]+(.*)ztrack1.title:TBlah blah blahz0,1,2,3)ztrack1.title:TBlah blah blahZtrack1titlezBlah blah blahz ([^N]*N)+abNNxyzN)r}ZxyzNZabNNxyz)ZabNNNz ([abc]*)xabcx)rrbz ([xyz]*)x)rrez (a)+b|aac)rrNz (?Paaa)az (?Paaa)az0,id)ryr'z(?Paa)(?P=id))ryrz(?Paa)(?P=xd)z\ggz\g<1>z(.)\g<1>gg)rrz\Nr~z\N{LATIN SMALL LETTER A}z\prz\p{Ll}z\PPz\P{Lu}zab{0,}bczab{1,}bcz ab{1,3}bcz ab{3,4}bcz ab{4,5}bcz ab{0,1}bczab{0,1}cza[b-a]z*az(*)bz a{1,}b{1,}cza**za.+?cz (a+|b){0,}z (a+|b){1,}z (a+|b){0,1}z ([abc])*dabbbcd)rrrz ([abc])*bcd)rr5z((((((((((a))))))))))10z((((((((((a))))))))))\10z((((((((((a))))))))))\41z(?i)((((((((((a))))))))))\41z(?i)abcrZXBCZAXCZABXZXABCYZABABCz(?i)ab*cz (?i)ab*bcZABBCz (?i)ab*?bcZABBBBCz (?i)ab{0,}?bcz (?i)ab+?bcz (?i)ab+bcZABQz (?i)ab{1,}bcz (?i)ab{1,}?bcz(?i)ab{1,3}?bcz(?i)ab{3,4}?bcz(?i)ab{4,5}?bcz (?i)ab??bcz(?i)ab{0,1}?bcz (?i)ab??cz (?i)ab{0,1}?cz (?i)^abc$ZABCCz(?i)^abcZAABCz(?i)abc$z(?i)^z(?i)$z(?i)a.cz (?i)a.*?cZAXYZCz(?i)a.*cZAXYZDz (?i)a[bc]dZABDz (?i)a[b-d]eZACEz (?i)a[b-d]ZAACZACz (?i)a[-b]zA-z (?i)a[b-]z (?i)a[b-a]z(?i)a[]bz(?i)a[z(?i)a]zA]z (?i)a[]]bzA]Bz (?i)a[^bc]dZAEDz (?i)a[^-b]cZADCzA-Cz (?i)a[^]b]czA]Cz (?i)ab|cdABCDz(?i)()efZDEF)EFrez(?i)*az(?i)(*)bz(?i)$br?z(?i)a\z(?i)a\(bzA(B)zA(Bz (?i)a\(*bzA((Bz(?i)a\\bzA\Bz(?i)abc)z(?i)(abcz (?i)((a)))r>r>r>z (?i)(a)b(c))rr>r_z (?i)a+b+cZAABBABCz(?i)a{1,}b{1,}cz(?i)a**z (?i)a.+?cZABCABCz (?i)a.{0,5}?cz (?i)(a+|b)*)rxr?z(?i)(a+|b){0,}z (?i)(a+|b)+z(?i)(a+|b){1,}z (?i)(a+|b)?)r>r>z(?i)(a+|b){0,1}z(?i)(a+|b){0,1}?)reNz(?i))(z (?i)[^ab]*CDEz(?i)a*z (?i)([abc])*dABBBCD)rr_z(?i)([abc])*bcd)rr>z (?i)a|b|c|d|eEz(?i)(a|b|c|d|e)fr)rrz (?i)abcd*efgZABCDEFGz(?i)ab*Z XABYABBBZZXAYABBBZz (?i)(ab|cd)eABCDE)rCDz(?i)[abhgefdc]ijZHIJz (?i)^(ab|cd)ez (?i)(abc|)efrBz (?i)(a|b)c*d)ZBCDr?z(?i)(ab|ab*)bc)rr>z(?i)a([bc]*)c*)rBCz(?i)a([bc]*)(c*d))rrDz(?i)a([bc]+)(c*d)z(?i)a([bc]*)(c+d))rr?rz(?i)a[bcd]*dcdcdeZADCDCDEz(?i)a[bcd]+dcdcdez (?i)(ab|a)b*c)rrxz(?i)((a)(b)c)(d))rr>r?rz(?i)[a-zA-Z_][a-zA-Z0-9_]*ZALPHAz(?i)^a(bc+|b[eh])g|.h$ZABH)ZBHNz(?i)(bc+d$|ef*g.|h?i(j|k))EFFGZ)rrNIJ)rrJZEFFGZBCDDZREFFGZz(?i)((((((((((a))))))))))z(?i)((((((((((a))))))))))\10ZAAz(?i)(((((((((a)))))))))z+(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))z/(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))r_z(?i)multiple words of textzUH-UHz(?i)multiple wordszMULTIPLE WORDS, YEAHzMULTIPLE WORDSz (?i)(.*)c(.*))rrxZDEz(?i)\((.*), (.*)\)z(A, B))r?r>z(?i)[k]z (?i)a[-]?cz (?i)(abc)\1z(?i)([a-c]*)\1za(?!b).Zabadrza(?=d).z a(?=c|d).z a(?:b|c|d)(.)za(?:b|c|d)*(.)za(?:b|c|d)+?(.)za(?:b|(c|e){1,2}?|d)+?(.)z1,2)rrr-z(?]*?bza>bz^a*?$z ^((a)c)?(ab)$)NNrz^([ab]*?)(?=(b)?)c)rNz^([ab]*?)(?!(b))cz^([ab]*?)(?.r&z...z%Incorrect number of test fields: ({})r9)r&rn)rGr)!rrVrfriMISSING_RPARENr% UNKNOWN_GROUPrWrBTRAILING_CHARSr BAD_ESCAPEBAD_CHAR_RANGENOTHING_TO_REPEATMULTIPLE_REPEAT OPEN_GROUPrgrIrr!r$rwappendr,r^r_majorminorZsubTestrHr(rcr) rr5rTZexcvalrGrrr7fieldsZ group_listrcr0rr r r test_variouss       2             ,   zRegexTests.test_variouscCs||tdddd|tdddd|tdtddd|tdddd|tdd d dddS) Nztest\?zresult\?\.\q\m ztest?z(.)z\1\1rr4z\\1\\1cSsdS)Nz\1\1r )r0r r r r1 r2z-RegexTests.test_replacement..)rrrAr)rr r r test_replacement s zRegexTests.test_replacementcCsNtjtjtj}|d}d|d|d}|ttt||j dS)NrnrrrX) rascii_lowercasedigitsascii_uppercaserrLrrrrM)rallZsideregexpr r r test_common_prefix szRegexTests.test_common_prefixc Cs*|tddddddg|tddd ddgdd gf|td d dd dgdddgf|tdddd ddddgdddddgf|tdddd dd gd!d"d#d$gd%gf|td&d'ddg|td(d)dddg|td*dddgdS)+Nz(\w)+rbr%r5rYrrz(\w{3})+rrrsz^(\d{1,3})(?:\.(\d{1,3})){3}$z 192.168.0.1rmZ192Z168rrjz^([0-9A-F]{2}){4} ([a-z]\d){5}$z3FB52A0C a2c4g3k9d3Z3FZB5Z2AZ0CZa2Zc4Zg3Zk9Zd3z([a-z]W)([a-z]X)+([a-z]Y)Z aWbXcXdXeXfYr&ZaWZbXZcXZdXZeXZfYz .*?(?=(.)+)brz.*?(?>(.){0,2})drz(.)+)rrr(capturesr*)rr r r test_captures s"     zRegexTests.test_capturescCstdd}||ddddtdd}||ddddtd d }||dddd td d }||dddtdd}||dtdd}||ddS)Nz(X.*?Y\s*){3}(X\s*)+AB:zXY X Y X Y XY XX AB:rr%rm))r&)r:)rz(X.*?Y\s*){3,}(X\s*)+AB:))rr)r:r)rrz\d{4}(\s*\w)?\W*((?!\d)\w){2}Z9999XX))rr)rr)rzA\s*?.*?(\n+.*?\s*?){0,2}\(Xz A 1 S 1 (X))rr7)rrz Derde\s*:zaaaaaa: Derde:)rz aaaaa: Derde:)r;r9)rr(rr))rr0r r r test_guards s    zRegexTests.test_guardsc Csd}t}t}xf|dD]X}|d\}}|||f|||f|||f|||f|||fqWx|D]x}xr|D]j}td|d|}|r||f|kr|dt|t|q||f|kr|dt|t|qWq~WdS)Nu I=i;I=ı;i=İ;=z(?i)\Az\Zz{} matching {}z{} not matching {}) r3rwupdateaddrr*r!r$r%)rpairsrhZmatchingpairrrr0r r r test_turkic s(    zRegexTests.test_turkicc Csdddg}|tjdd|dd|tjdd|dd|tjdd |ddd d d g}|tjd d|dd|tjdd|dd|tjd d|dd|tttjddddgd|j|tjddt dddgdg|tjddt dddgddgdg}|tjdd|d ddd g}|tjdd|d ddg}|tjdd|d d!d"g}|tj d#d$|d d%|tj d#d&|d d%|t d'd( d)|t d'd* d)|tj d+d,gd d-dS).NZoneZtwoZthreez 333\L444Z 333one444)rz(?i)333\L444Z 333TWO444Z 333four444sonestwosthrees 333\L444s 333one444s(?i)333\L444s 333TWO444s 333four444z3\L4\L+5z ^\Lz solid QWERTZgoodZ brilliantz +s\ol[i}d)rz +solid QWERTz+solidZSTRASSEz(?fi)\Lustraße)words)rrZstress)rr;Zkitz (?i)\LZSKITS)r%rnuSKİTSz(?fi)\b(\w+) +\1\bu straße STRASSE )r%ru STRASSE straße z ^\L$re)rr) rrr*rcrLrrrMr r3r)r()rrr r r test_named_lists sR                   zRegexTests.test_named_listscCsP|tttd|j|tttd|j|tttd|j|tttd|j|tttd|j|tttd|jd}|td|d|td |d d d |td |d|td|d d|td|d dd}|td|d d d|td|d d d|td|d d d|td|d d d|td|d d d|td|d d d|tttd|j|tddd d d|tddd d d |td!dd d d"|td#d$d d d%|td#d&d|td'd(d d d)|td*d+d d d,|td*d-d d d|td.d-d d d/|td0d1d d d|td0d2d d d3|td0d4d d d3|td0d5d d d3|td0d6d d d|td0d7d d d|td0d8d d d|td0d9d d d:|td0d;d d d:|td0d<d d d:|td0d=d|td0d>d|td0d?d|td0d@d|td0dAd|tdBdCd d dD|tdEdCd d dF|tdGdHd d dI|tdGdJd|tdGdKd d dLdM}|tdN|d d dO|tdP|d d dQ|tdR|d d dS|tjdTdUdV dWdXdYg|tjdTdZdV dWd[dXg|tjd\dZdV dWdYdXg|tjd]dUdV dWd^dXg|tjd_dUdV dWdYdXg|tjd]dZdV dWdXdYg|tjd`dadb dWdcddg|tjd`dedb dWdfdcg|tjdgdedb dWdddcg|tjdhdadb dWdidcg|tjdjdadb dWdddcg|tjdhdedb dWdcddg|tdkdl dm|tdndl dm|tdodp dq|tdrdsdsdtg|tdudvdvdtg|t dwdxdy|t dwdzd{|t dwd|d}|t dwd~d|t dwdd|t ddj d|t ddj d|t ddj d|t ddj d|t ddj d|tddjd dddgdggf|tt ddddS)Nz (fou){s,e<=1}z(fuu){s}z (fuu){s,e}z(anaconda){1i+1d<1,s<=1}z(anaconda){1i+1d<1,s<=1,e<=10}z(anaconda){s<=1,e<=1,1i+1d<1}z-molasses anaconda foo bar baz smith anderson z(znacnda){s<=1,e<=3,1i+1d<1}z(znacnda){s<=1,e<=3,1i+1d<2}rr%))r6)r6rz(ananda){1i+1d<2}z(?:\bznacnda){e<=2}Zanacondaz(?:\bnacnda){e<=2}z#anaconda foo bar baz smith andersonz(fuu){i<=3,d<=3,e<=5}))rr)rrz(?b)(fuu){i<=3,d<=3,e<=5}))r6r7)r6r7z(fuu){i<=2,d<=2,e<=5}))r;r7)r;r7z(?e)(fuu){i<=2,d<=2,e<=5}z(fuu){i<=3,d<=3,e}z(?b)(fuu){i<=3,d<=3,e}z(approximate){s<=3,1i+1d<3}z (foobar){e}Zxirefoabralfobarxie))rr)rrz(?e)(foobar){e}))rr&)rr&z(?b)(foobar){e}))r8r)r8rz(foobar){e<=2}Z xirefoabrzlfd))rnr6)rnr6Z xirefoabzlfdz(foobar){i<=2,s<=2,e<=2}Zoobargoobaploowap))rr8)rr8z\b(foobar){e}\bZzfoobarz))rr)rrzboing zfoobarz goobar woopz(?b)\b(foobar){e}\b))rr)rrz^(foobar){e<=1}$ZfoobarZxfoobar))rr;)rr;ZfoobarxZfooxbarZfoxbarZxoobarZfoobaxZoobar))rr)rrZfobarZfoobaZxfoobarxZfoobarxxZxxfoobarZxfoxbarZfoxbarxz (foobar){i<=1,d<=2,s<=3,2d+1s<4}Z(3oifaowefbaoraofuiebofasebfaobfaorfeoaro))rr9)rr9z$(?b)(foobar){i<=1,d<=2,s<=3,2d+1s<4}))"')rrzfoo(bar){e<=1}zapZ foobarzap))rr6)r&rZfobarzapZfoobrzap))rr)r&rzxwww.cnn.com 64.236.16.20 www.slashdot.org 66.35.250.150 For useful information, use www.slashdot.org this is demo data! z(?s)^.*(dot.org){e}.*$))rx)rrz(?es)^.*(dot.org){e}.*$))rr)]dz^.*(dot.org){e}.*$))rw)ez\b\L{e<=1}\bz book cot dog desk zcat dog)rZcotZdogz book dog cot desk z dogz(?e)\b\L{e<=1}\bz(?r)\b\L{e<=1}\bzdog z(?er)\b\L{e<=1}\bs\b\L{e<=1}\bs book cot dog desk scat dogscotsdogs book dog cot desk s dogs(?e)\b\L{e<=1}\bs(?r)\b\L{e<=1}\bsdog s(?er)\b\L{e<=1}\bz(\w+) (\1{e<=1})zfoo fou)rZfouz(?r)(\2{e<=1}) (\w+)s(\w+) (\1{e<=1})sfoo fou)sfoosfouz(?:(?:QR)+){e}r=rez (?:Q+){e}rbz(?:service detection){0[^()]+)|(?R))*\)z (ab(cd)ef))z (ab(cd)ef)r>r%rrz(cd)r>z(?r)\(((?R)|(?>[^()]+))*\))z (ab(cd)ef)rz\(([^()]+|(?R))*\)zsome text (a(b(c)d)e) more text)z (a(b(c)d)e)r-z(?r)\(((?R)|[^()]+)*\))z (a(b(c)d)e)r5z!(foo(\(((?:(?>[^()]+)|(?2))*)\)))zfoo(bar(baz)+baz(bop)))zfoo(bar(baz)+baz(bop))zfoo(bar(baz)+baz(bop))z(bar(baz)+baz(bop))zbar(baz)+baz(bop)z%(?r)(foo(\(((?:(?2)|(?>[^()]+))*)\)))zv^\s*(<\s*([a-zA-Z:]+)(?:\s*[a-zA-Z:]*\s*=\s*(?:'[^']*'|"[^"]*"))*\s*(/\s*)?>(?:[^<>]*|(?1))*(?(3)|<\s*/\s*\2\s*>))\s*$zTzFzzzzzz< fooo / >z foozfoozfooz)rrr(rrr)rZrgxr r r test_recursive sj          zRegexTests.test_recursivecCstd}|t||k|t||k|d}|t||k |t||k ||jdk t|}|||jdk ||jdktdd}t|}| t | d| t | dtdd}t|}| t | d| t | dt dd}t|}| t |d| t |dt dd}t|}| t |d| t |ddS)Nr5r/rrYrvza b) rr assertTruecopydeepcopyr*rZ detach_stringrrrrcrx)rrr0m2rZit2r r r test_copyR s6           zRegexTests.test_copycCsv|tdddd|tdddd|tdddd|tdddd |tdddddS) Nz (\w+) (\w+)z{0} => {2} {1}zfoo barzfoo bar => bar fooz(?\w+) (?\w+)z{word2} {word1}zbar foo)zfoo bar => bar foor%)zbar foor%)rrsubfZsubfnr*expandf)rr r r test_format} s         zRegexTests.test_formatc CsH|ttddd|ttddd|ttjddddd|ttjdddd d|ttjdd dd d|ttjdd dd d d|ttd dd|ttd dd|ttjd dddd|ttjd ddd d|ttjd d dd d|ttjd d dd d ddS)NrbTrFr&)rZxabcr%)rrprn)rrz(?r)abc)rrrr)rr r r test_fullmatch s"zRegexTests.test_fullmatchcCstjjtjjfdkrdS|tdddd|tdtdtdd|tdddd |tdtdtdd |tdt dt dd |tdt dt dd xd td fD]}|t d |d dd d dgtjdkrP|t d|d d dd d d dd g|t d|d d d d dd d d d dd d dd d gq|t d|d dd dg|t d|d d dd d ddgqWxdtdt dt dfD]}|t d|dddddgtjdkr2|t d|ddddddddg|t d|dddddddddddddddgn>|t d|ddddg|t d|dddddddgqWxddtdfD]T}|t d|d ddg|t d|d ddg|t d|d d!d"gqWxpd#td#t d#t d#fD]T}|t d$|ddd%g|t d&|ddd%g|t d'|d(d)d*gqWxdtdfD]}| td|d+| td,|d-| td,|d.d| td,|d/d| td,|d/d/d0q\Wxdtdt dt dfD]}| td|d+| td1|d2| td1|d.d| td1|d/d| td1|d/d/d3qWdS)4N)r&rnrr5rUZxazyr+sxyzsxazz:a:b::crqrerYrr)r&r;rz:*z(:*)z::s:a:b::c:r2rrs:*s(:*)s::z a:b::c:::dz:+z:::z(:+)z(:)(:*))rqre)rqrq)rqz::s a:b::c:::ds:+s:::s(:+)s(:)(:*))rr2)rr)rs::r z(a))r5rr%)r5r5s(a))r+)r+r+)r^r_rrrrrArr bytearray memoryviewrwr rr*rrc)rrr r r test_issue_18468 s "      "zRegexTests.test_issue_18468cCs|tjddddjd|tjddddd|tjddddjd|tjddddd|tjdd ddd|tjd d ddjd |tjd d ddd |tjd dddjd|tjd dddd|tjddddjd |tjddddgdjd |tjddddgdd|tjddddgdjd|tjddddgdd|tjddddgdjd |tjddddgdd|tjddddgdjd|tjddddgdd|tjddddgdd|tjddddd|tjddddd|tjddddd|tjddddd|tjddddd|tjdd ddd|tjdd!ddddS)"Nrr5T)partial)rr%rr)rr&Zcatchzabc\w{3}rF)rrr=)rrz\d{4}$Z1234z \Lpost)rr)rrnrz(?fi)\LPOSTupostPOSz [a-z]*4R$)rrmZab4Za4Za4RZ4aZa44)rrr*rr))rr r r test_partial s\     zRegexTests.test_partialc Cs/|ttjdtjdd|ttjdtjdd|tddddg|td dddg|tdd d g|tdd d g|tdd d g|ddtddDdg|tddtjtjB dd|tddtjtjB dd|tddtjtjB dd|tdd d|ttj ddtj dd|tdd  dd!d"|td#d$ dd!d%|td&d' dd'|td(d) dd!d*|td+d)d|td,d- dd|td.d/ d!d0|td.d1 d!d2|td.d3 d!d4|td5d3 d3|td6d7 d8|td9d/ d:|td9d1 d;|tdd? dd!d@|tdAd? dd!dB|tdCd? dd!dD|tdEd? dd!dF|tdGdH dd/|tjdIdJdKdLgdMdNdOdKdPdQdRg|tdSdJdTdUdLdVdQdRg|tdWdJdNdOdKdPdQdRg|tdXdJdNdOdKdPdQdRg|tdYd/ dd!dZd[|td\d] dd!d^|td_d/ dd!d`|tdadbd|tdcddd|tj|jdedf|tdgdh ddi|tdjdk ddk|tdldmd|tdndod|tdpdq dd!dZdr|tdsdtd$dug|tdvdtd$dug|tdwdtd$dug|tdxdtd$dug|tdydz dz|d{dtd|d}Dd~dg|tddddddg|tj|jddfd}d}|t||tjdd|tdddg|ttdddtjtd|t ddd|t ddddd;g|tdddfddtjdtjd}||dd||dg|tj|jddf|tjdddd|tjdddd|tdd|tjdddd|tjdddd|tdd|tdd d|tdd d|tdd dtjdtjtjBd}|dd|dDdg||ddgd}|dd||Ddg|||dgtjdtjtjBtjBd}|dd|dDdg||ddgd}|dd||Ddg|||dgtjdkr|tdddd]n|tdddd|tdddd]tjdk r |tddddn|tdddd|tdddd|tjdddtjdd|t ddj d|t ddj d|t ddj d|t ddj d|t ddj d|t ddj d|t ddǡj dȡ|t ddǡj dʡ|t ddǡj dʡ|t dd̡j d͡|t dd̡j d͡|t dd̡j d͡|t ddǡj dʡ|t ddǡj dʡ|t ddǡj dʡ|tddҡg|tdddd|tt d/d/tj!d|tddաd dg|tddաd dg|tddաd dg|tddաd dg|tjdddf|t dd/ dd!dZdܡ|t dd/ dd!dZdܡdޠ"ddt#dD}|tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td||tdޠ"td|tdޠ"td|t$t#d}|td"td|td"td||td"td|td"td||td"td|td"td||td"td|td"td||td"td|td"td ||td"td |td"td ||td"td |td"td ||td"td|td"td||td"td|td"td||td"td|td"td||td"td|td"td||td"td|td"td||td"td|td"td||td"td|td"td||ttdd td|tdd  d!|td"d#dd$|td%d#dd$|t%d"d&dd$|t%d%d&dd$|tj&d'ddd( d;|tj&d'ddd(j'd|tjd)d*dd( d+|tjd,d*dd( d+|tjd-d*dd( d.|t d/d0 d:|t d1d2d|td3d4d5d6d7g|td8d4d5d6d7g|d9dtd:d;Dd<d=d>d?g|d@dtdAd;Dd<d=d>d?g|tdBdCddC|tdBdDddD|tdEdFddF|tdGdHddH|tdId dd!dJ|tdKdLdMdNg|tdOdLddPg|tdQd dd!dR|tdSdLdTdg|tdUdLdPdg|tdVdWddW|tdXdYddZ|td[dYddZ|td\dYd|td]dYddY|td^d_dd_|td^d`dda|tdbd_ddc|tdbd`dda|tddd`dd`|tdddedda|tdfdedda|tdgdedda|tdhdYd|tdidYddY|tdjd_dd_|tdjd`dda|tdkd`dd`|tdkdedda|tdldedda|tdmdedda|tdnd_dd_|tdnd`dda|tdod_ddc|tdod`dda|tdpd`dd`|tdpdedda|tdqdedda|tdrdedda|tdsd_dd_|tdsd`dda|tdtd`dd`|tdtdedda|tdudedda|tdvdeddadw}|t(tdx|d!|t dydz d;|t d{d|dd|td}}d~} |dd|| Dddg|tddtj d|tddtj d|t dd d|t ddd|tdd d|tddddg|tdd dd!d|tdd dd!d|tdddd|tdddd|tj dddgd d|tj dddgd d|tdd d|tdd d|tdd d|tdd d|tdd dtjdddgd} t)*| } t)+| } || d d8|tj ddtjd d|tj ddtjd d<|tj ddtjdd|tj ddtjd d|tj ddtjd d<|tj ddtjdd|,tjddf|,tjddf|ttdd|ttdd|tddtj-ddg|tjdddd( dd} d} |tt d| | d|tt d| | d|tt d| | d|tt d| | d|tt d| | d|tt d| | d|ttjddddgdd|ttjddddgdd|ttjddddgdd|ttjdÐdddgdd|tjdĐdŐdƐdgd dȡ|tjdɐdŐdƐdgd dȡ|tdʐdˡ d̡|td͐dˡ d̡|t dΐdϡ d<|t dΐdСd|t dѐdҡ dӡ|t dԐdա d֡d}d}|tt||d|tt dِdd|tt dڐdd|tt dېdd|tt dܐdd|tt dݐdޡd|t dߐd d|tddtj d<|tddtjj dʡ|tddtj d<|tddtjj dʡ|tddtj d|tddtjj d|tjddtjtjBd d|tddLdPg|tddLdPg|tddddg|tddg|tdddg|tdddddg|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tdd d|tjddddd |tjddddd |tjddddd |tjddddd |tdd |td dm d:|td d d:|tdd d|tddޡ d|tddޡ d|tdd$ d|tdd$.ddi|tdd$/dd/gi|tdd$ d|tdd$.ddi|tdd$/dd/gi|tdd$ d|tdd$.ddi|tdd$/dd/gi|tt ddd|tjdddd( dȡ|tjdddd( dȡ|tt ddd|tt ddd|tt ddd|tt d dd|tt d!dd|tt d"dd|tt d#d$d|tt d%d$d|tt d&d'd|tt d(d'd|tt d)d*d|tt d+d*d|tt d,d-d|tt d.d-d|t&d/d$dd/d d0g|t&d/d$ dd |t&d1d$dd/d d0g|t&d1d$ dd0|tj d2ddd(j'd|tj d2d3dd(j'd|tj d4ddd(j'd|tj d5ddd(j'd|tj d5d3dd(j'd|tj d6ddd(j'd|tj d6d3dd(j'd|tj d7ddd(j'd|tj d8ddd(j'd|tj d8d3dd(j'd|tj d9ddd(j'd|tj d9d3dd(j'd|tj d:ddd(j'd|tj d;ddd(j'd|tj d;d3dd(j'd|tj dddd(j'd|tj d>d3dd(j'd|tj d?ddd(j'd|tj d@ddd(j'd|tj dAddd(j'd|tj dBddd(j'd|tj dCddd(j'd|tj dDddd(j'd|tj dBd/dd(j'd|tj dCd/dd(j'd|tj dDd/dd(j'd|tj dEddd(j'd|tj dFddd(j'd|tj dGddd(j'd|tj dHddd(j'd|tj dIddd(j'd|tj dJddd(j'd|tj dHd/dd(j'd|tj dId/dd(j'd|tj dJd/dd(j'd|tj dKdLdd(j'ddM}dN}tj||tjd}||j dʡ||j0gdOggf|tdPdQj dR|tdPdSj d|tdTdUdUg|ttdVd/d|ttdWd/d|t&dXdY d8|tdYdZ/d[ggd[gd\|td]d^j0ggdd!d_d`gf|t dad0j db|t dad0j0dggd!gf|t dcd0j dd|t dcd0j0ggdgf|t ded0j dd|t ded0j0ggdgf|t dfdgj dh|t didgj d|t djdgj d|t dkdlj dm|t dndlj dm|t&dodpj d|t&dqdpj d|tdrdsd|ttdtd|ttdud|tdvdwdYd'dxg|tdydwdYd'dxgdS(zNz(?>b))rTz^((?>\w+)|(?>\s+))*$z\((?:(?>[^()]+)|(?R))*\)za(bcd(e)f)g(h)z (bcd(e)f)z(h)z\((?:(?:[^()]+)|(?R))*\)za(b(cd)e)f)g)hz(b(cd)e)z a(bc(d(e)f)ghz(d(e)f)z(?r)\((?:(?>[^()]+)|(?R))*\)cSsg|] }|qSr )rc)rtr0r r r ru; sz+RegexTests.test_hg_bugs..z\((?:[^()]*+|(?0))*\)z a(b(c(de)fg)hz (c(de)fg)za(bc)drrz ([\da-f:]+)$rr-z^(?=ab(de))(abd)(e)Zabde)rrr-z\ rvz ^(a|)\1{2}brYr%)rYrez ^(a){0,0}rb)reNz(?>.*/)bza/bz(?V0)((?i)blah)\s+\1z blah BLAH)z blah BLAHZblahz(?V1)((?i)blah)\s+\1z(\()?[^()]+(?(1)\)|)z(abcdz(a*)*r5)r%r%r)rmrmr')r&r&z a(?#xxx)*z (?=abc){3}abcZ abcabcabc)rr&z^(?:a(?:(?:))+)+)rr%)rrmz a(?x: b c )dz a#comment *z(?V1)(a(?(1)\1)){1}Z aaaaaaaaaa))rr%)rr%z(?V1)(a(?(1)\1)){2}))rr&)r%r&z(?V1)(a(?(1)\1)){3}))rr)r&rz(?V1)(a(?(1)\1)){4}))rr7)rr7z(?V1)(a)(?<=b(?1))Zbazz(?fi)\Lu)POST, Post, post, poſt, post, and poſtrr)keywordsrZPostupoſtupostupoſtz (?fi)pos|postrZPosupoſz (?fi)post|posz(?fi)post|anotherz(?V1)((a)(?1)|(?2))rm)r5r5Nz(?V1)(\1xx|){6}r4))rrm)rmrmz(a|)+)r5rez(a|)*\dZPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz ^(?:a?b?)*$r~cSs tdS)Nz\N{1})rrr r r r r1 sz)RegexTests.test_hg_bugs..z\Zza a )rnrnz(q1|.)*(q2|.)*(x(a|bc)*y){2,}Zxayxayz(?i)[^a]r>z(?i)[[:ascii:]]uKz((a|b(?1)c){3,5})Zbaaaaca)ryryr5z (?<=:\S+ )\w+z:9 abc :10 defrsz (?<=:\S* )\w+z(?<=:\S+? )\w+z(?<=:\S*? )\w+z (?:fe)?maleZfemalecSsg|] }|qSr )rc)rtr0r r r ru sz!(fe)?male: h(?(1)(er)|(is)) (\w+)z(female: her dog; male: his cat. asdsasdazfemale: her dogz male: his catz (?\((?:[^()]++|(?&rec))*\))zaaa(((1+0)+1)+1)bbbZrecz(1+0)z ((1+0)+1)z (((1+0)+1)+1)cSstdddS)Nr\)rrAr r r r r1 sz%(CAGCCTCCCATTTCAGAATATACATCC){1a(?b))rr)r%rmz(-)cSs |dS)Nr)r)r0r r r r1 r2za-b-cZaxbxcz \bt(est){i<2}z Some textcSs tdS)Nz.???)rrr r r r r1 szfoo!?F) special_onlyzfoo\!\?zfoo!\?sfoo!?sfoo\!\?sfoo!\?z^([^z]*(?:WWWi|W))?$WWWi)rz^([^z]*(?:WWWi|w))?$z^([^z]*?(?:WWWi|W))?$r$cSsg|] }|qSr )rc)rtrr r r ru. sZyxxxcSsg|] }|qSr )rc)rtrr r r ru2 scSsg|] }|qSr )rc)rtrr r r ru7 scSsg|] }|qSr )rc)rtrr r r ru; s)r&r;rz(?V0).*r=z(?V1).*z(?V0).*?rz |||||||||z |t|e|s|t|z(?V1).*?z^(@)\n(?!.*?@)(.*)z\1\n==========\n\2z@ z @ ========== z(?:cats|cat){e<=1}Zcaz)r%rrz(?e)(?:cats|cat){e<=1}z(?b)(?:cats|cat){e<=1}z (?:cat){e<=1}z(?e)(?:cat){e<=1}z(?b)(?:cat){e<=1}z(?:cats){e<=2}zc ats)r%r%rz(?e)(?:cats){e<=2})rr%rz(?b)(?:cats){e<=2}zc a ts)rrmrz(?:cats){e<=1}z(?e)(?:cats){e<=1}z(?b)(?:cats){e<=1}z\bof ([a-z]+) of \1\bz#To make use of one of these modulesz\g<0>z(?V1)[[b-e]--cd]rz(?V1)[b-e--cd]z(?V1)[[bcde]--cd]z(?V1)[bcde--cd]z ^unknown property at position 4$cSs tdS)Nz\p{})rrr r r r r1 r2z(?:()|(?(1)()|z)){2}(?(2)a|z))r5rerez(?:()|(?(1)()|z)){0,2}(?(2)a|z)recss|]}t|VqdS)N)rB)rtrrr r r r` sz*RegexTests.test_hg_bugs..iz [[:alnum:]]+z[\p{Alpha}\p{PosixDigit}]+z [[:alpha:]]+z \p{Alpha}+z [[:ascii:]]+z[\p{InBasicLatin}]+z [[:blank:]]+z[\p{gc=Space_Separator}\t]+z [[:cntrl:]]+z\p{gc=Control}+z [[:digit:]]+z[0-9]+z [[:graph:]]+z<[^\p{Space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]+z [[:lower:]]+z \p{Lower}+z [[:print:]]+z%(?V1)[\p{Graph}\p{Blank}--\p{Cntrl}]+z [[:punct:]]+z2(?V1)[\p{gc=Punctuation}\p{gc=Symbol}--\p{Alpha}]+z [[:space:]]+z\p{Whitespace}+z [[:upper:]]+z \p{Upper}+z [[:word:]]+zL[\p{Alpha}\p{gc=Mark}\p{Digit}\p{gc=Connector_Punctuation}\p{Join_Control}]+z [[:xdigit:]]+z [0-9A-Fa-f]+rr2s(?a)[[:alnum:]]+s(?a)[\p{Alpha}\p{PosixDigit}]+s(?a)[[:alpha:]]+s(?a)\p{Alpha}+s(?a)[[:ascii:]]+s(?a)[\x00-\x7F]+s(?a)[[:blank:]]+s(?a)[\p{gc=Space_Separator}\t]+s(?a)[[:cntrl:]]+s(?a)\p{gc=Control}+s(?a)[[:digit:]]+s (?a)[0-9]+s(?a)[[:graph:]]+s@(?a)[^\p{Space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]+s(?a)[[:lower:]]+s(?a)\p{Lower}+s(?a)[[:print:]]+s&(?aV1)[\p{Graph}\p{Blank}--\p{Cntrl}]+s(?a)[[:punct:]]+s3(?aV1)[\p{gc=Punctuation}\p{gc=Symbol}--\p{Alpha}]+s(?a)[[:space:]]+s(?a)\p{Whitespace}+s(?a)[[:upper:]]+s(?a)\p{Upper}+s(?a)[[:word:]]+sP(?a)[\p{Alpha}\p{gc=Mark}\p{Digit}\p{gc=Connector_Punctuation}\p{Join_Control}]+s(?a)[[:xdigit:]]+s(?a)[0-9A-Fa-f]+z\X$uab℃u℃z([^L]*)([^R]*R)LtR)rerz(.)zx\1yZxayxbyz(?r)(.)zx{1}yz(a)*abc)rZOXRGZOOGOX)r&rz.XRGz .{1,3}XRG)r%rzR|RRz (.)(?(1)(?!))r"z(y)?(\d)(?(1)\b\B)Zax1y2z3b)rerj)re2)rerUz(y)?+(\d)(?(1)\b\B)cSsg|] }|qSr )r))rtr0r r r rusz(?i)(?:error){e}z regex failure)rr)rr7)r7r9)r9r9cSsg|] }|qSr )r))rtr0r r r rusz(?fi)(?:error){e}z(?p)\d+(\w(\d*)?|[eE]([+-]\d+))Z10b12z10E+12z(?p)(\w|ae|oe|ue|ss)aez(?p)one(self)?(selfsufficient)?Zoneselfsufficientz(ab\Kcd))rrz \w\w\K\w\wZabcdefghrZghz (\w\w\K\w\w)Zefghz (?r)(ab\Kcd))rrz(?r)\w\w\K\w\wr>z(?r)(\w\w\K\w\w)z6(?(DEFINE)(?\d+)(?\w+))(?&quant) (?&item)z 5 elephantsz 12(*FAIL)|3Z123rUz(?r)12(*FAIL)|3z \d+(*PRUNE)\dz\d+(?=(*PRUNE))\dz\d+(*PRUNE)bcd|[3d]Z123bcdZ123zzdrz\d+?(*PRUNE)bcd|[3d]Z3bcdz\d++(?<=3(*PRUNE))zzd|[4d]$Z124zzdz\d++(?<=(*PRUNE)3)zzd|[4d]$z\d++(?<=2(*PRUNE)3)zzd|[3d]$z(?r)\d(*PRUNE)\d+z(?r)\d(?<=(*PRUNE))\d+z(?r)\d+(*PRUNE)bcd|[3d]z(?r)\d++(?<=3(*PRUNE))zzd|[4d]$z(?r)\d++(?<=(*PRUNE)3)zzd|[4d]$z (?r)\d++(?<=2(*PRUNE)3)zzd|[3d]$z\d+(*SKIP)bcd|[3d]z\d+?(*SKIP)bcd|[3d]z\d++(?<=3(*SKIP))zzd|[4d]$z\d++(?<=(*SKIP)3)zzd|[4d]$z\d++(?<=2(*SKIP)3)zzd|[3d]$z(?r)\d+(*SKIP)bcd|[3d]z(?r)\d++(?<=3(*SKIP))zzd|[4d]$z(?r)\d++(?<=(*SKIP)3)zzd|[4d]$z(?r)\d++(?<=2(*SKIP)3)zzd|[3d]$zJune 30, December 31, 2013 2012 some words follow: more words and numbers 1,234,567 9,876,542 more words and numbers 1,234,567 9,876,542z(?2014|2013 ?2012)z1(?>2)Z12zn(?V1w)(?=(?=[^A-Z]*+[A-Z])(?=[^a-z]*+[a-z]))(?=\D*+\d)(?=\p{Alphanumeric}*+\P{Alphanumeric})\A(?s:.){8,255}+\ZzAAaa11!!z(?smx) (?(DEFINE) (? ^,[^,]+, ) ) # Group 2 is defined on this line ^,([^,]+), (?:(?!(?&subcat)[\r\n]+(?&subcat)).)+ zP ,Cat 1, ,Brand 1, some thing ,Brand 2, other things ,Cat 2, ,Brand, Some thing cSsg|]}|ddqS)r%rm)r))rtr0r r r rus))rr)rmr;))rr)6;z (abcdefgh){e}z******abcdefghijklmnopqrtuvwxyz)rrz(abcdefghi){e})rrz(?:(?=\d)\d+\b|\w+)r)rrz(?(?=\d)\d+\b|\w+)z (?(?<=love\s)you|(?<=hate\s)her)z I love you)r;r7z&I love you but I don't hate her eitherZyouZherz (?p)a*(.*?)aaabbb)rbbbz (?p)a*(.*)z\1rz (?irV0)\LZ21rj)kwz (?irV1)\Lza|bZ111a222)r&rnz(?r)a|bz(?if)<(CLI)><\1>z )rr7z z(?ifr)<\1><(CLI)>z \Lrr)rz (x{6}){e<=1}ZxxxxxxZxxxxxz(?r)(x{6}){e<=1}cSs tdS)Ns00000\0\00\^(\00\U05000000)rrr r r r r1scSs tdS)Ns{eZ22Z121)rz (?ri)\Lz (?fi)\Lz (?fri)\Lz(?r)\1dog..(?<=(\L))$ZccdogccZbcbcc)rr;z(?ir)\1dog..(?<=(\L))$z(2)(?:\1{5}){e<=1}Z3222212)r%r;z(\d)(?:\1{5}){e<=1}z&\A(?P(?>\((?&whole)\)|[+\-]))\Zz((-))z((-)+)zx.*? (.).*\1(.*)\1z x |y| z|)rr6z\.sr (.*?) (.)(.*)\2(.*)\2(.*)z#.sr h |||)r#z"\xF9\x80\xAEqdz\x95L\xA7\x89[\xFE \x91)\xF9]\xDB'\x99\x09=\x00\xFD\x98\x22\xDD\xF1\xB6\xC3 Z\xB6gv\xA5x\x93P\xE1r\x14\x8Cv\x0C\xC0w\x15r\xFFc%" z(?P((?>(?"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``)))) (?P((?>(?"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))))z foo(?<=foo)z foo(?.*\!\w*\:.*)|(?P.*))rz\w*(ea)\w*|\w*e(?!a)\w*Zeasier)eaz (^1234$){i,d}Z12234z(^1234$){s,i,d}z(^123$){s,i,d}Z xxxxxxxx123)rr8)rrrza?yzZxxxxyz)rnrz(?:(?![a-d]).)+z.(?(DEFINE)(?P(?:(?![a-d]).)))(?&mydef)+z((\w{1,3})(\.{2,10})){1,3}z("Erm....yes. T..T...Thank you for that.")zErm....ZErmz....)zT...Tz...z((\w{1,3})(\.{2,10})){3}z((\w{1,3})(\.{2,10})){2}z((\w{1,3})(\.{2,10})){1})zT..rz..z(?:ESTONIA(?!\w)){e<=1}zESTONIAN WORKERSZESTONIANz(?:ESTONIA(?=\W)){e<=1}z(?:(?.))(?&func))Nfuncz!(?(DEFINE)(?.))(?=(?&func))z#(?(DEFINE)(?.)).(?<=(?&func))zab(?#comment\))cdz[a-z]+ [a-z]*?:zfoo barz(?r):[a-z]*? [a-z]+z(?u)\p{Script:Beng}u৯z(?u)\p{Script:Bengali}z!(?u)\p{Script_Extensions:Bengali}z(?u)\p{Script_Extensions:Beng}z(?u)\p{Script_Extensions:Cakm}z(?u)\p{Script_Extensions:Sylo}z(?u)\p{scx:Latin}rz(?u)\p{scx:Ahom}z(?u)\p{scx:Common}4z(?u)\p{scx:Caucasian_Albanian}z(?u)\p{scx:Arabic}uتz(?u)\p{scx:Balinese}z(?u)\p{scx:Devanagari}uजz(?u)\p{scx:Batak}z(?P.)*(?&x)rrz(?P.)(?P.)(?P.)z(?:ab)*Zababz(?:ab)*?z(?:ab)*+z(?:ab)+z(?:ab)+?z(?:ab)++z (?r)(?:ab)*z (?r)(?:ab)*?z (?r)(?:ab)*+z (?r)(?:ab)+z (?r)(?:ab)+?z (?r)(?:ab)++za*za*?za*+za+za+?za++z(?r)a*z(?r)a*?z(?r)a*+z(?r)a+z(?r)a+?z(?r)a++z (?:\s*\w+'*)+Zwhateveraz(?PGGCGTCACACTTTGCTATGCCATAGCAT[AG]TTTATCCATAAGATTAGCGGATCCTACCTGACGCTTTTTATCGCAACTCTCTACTGTTTCTCCATAACAGAACATATTGACTATCCGGTATTACCCGGCATGACAGGAGTAAAA){e<=1}(?P[ACGT]{1059}){e<=2}(?PTAATCGTCTTGTTTGATACACAAGGGTCGCATCTGCGGCCCTTTTGCTTTTTTAAGTTGTAAGGATATGCCATTCTAGA){e<=0}(?P[ACGT]{18}){e<=0}(?PAGATCGG[CT]AGAGCGTCGTGTAGGGAAAGAGTGTGG){e<=1}A?GCACGGCGTCACACTTTGCTATGCCATAGCATATTTATCCATAAGATTAGCGGATCCTACCTGACGCTTTTTATCGCAACTCTCTACTGTTTCTCCATAACAGAACATATTGACTATCCGGTATTACCCGGCATGACAGGAGTAAAAATGGCTATCGACGAAAACAAACAGAAAGCGTTGGCGGCAGCACTGGGCCAGATTGAGAAACAATTTGGTAAAGGCTCCATCATGCGCCTGGGTGAAGACCGTTCCATGGATGTGGAAACCATCTCTACCGGTTCGCTTTCACTGGATATCGCGCTTGGGGCAGGTGGTCTGCCGATGGGCCGTATCGTCGAAATCTACGGACCGGAATCTTCCGGTAAAACCACGCTGACGCTGCAGGTGATCGCCGCAGCGCAGCGTGAAGGTAAAACCTGTGCGTTTATCGATGCTGAACACGCGCTGGACCCAATCTACGCACGTAAACTGGGCGTCGATATCGACAACCTGCTGTGCTCCCAGCCGGACACCGGCGAGCAGGCACTGGAAATCTGTGACGCCCTGGCGCGTTCTGGCGCAGTAGACGTTATCGTCGTTGACTCCGTGGCGGCACTGACGCCGAAAGCGGAAATCGAAGGCGAAATCGGCGACTCTCATATGGGCCTTGCGGCACGTATGATGAGCCAGGCGATGCGTAAGCTGGCGGGTAACCTGAAGCAGTCCAACACGCTGCTGATCTTCATCAACCCCATCCGTATGAAAATTGGTGTGATGTTCGGCAACCCGGAAACCACTTACCGGTGGTAACGCGCTGAAATTCTACGCCTCTGTTCGTCTCGACATCCGTTAAATCGGCGCGGTGAAAGAGGGCGAAAACGTGGTGGGTAGCGAAACCCGCGTGAAAGTGGTGAAGAACAAAATCGCTGCGCCGTTTAAACAGGCTGAATTCCAGATCCTCTACGGCGAAGGTATCAACTTCTACCCCGAACTGGTTGACCTGGGCGTAAAAGAGAAGCTGATCGAGAAAGCAGGCGCGTGGTACAGCTACAAAGGTGAGAAGATCGGTCAGGGTAAAGCGAATGCGACTGCCTGGCTGAAATTTAACCCGGAAACCGCGAAAGAGATCGAGTGAAAAGTACGTGAGTTGCTGCTGAGCAACCCGAACTCAACGCCGGATTTCTCTGTAGATGATAGCGAAGGCGTAGCAGAAACTAACGAAGATTTTTAATCGTCTTGTTTGATACACAAGGGTCGCATCTGCGGCCCTTTTGCTTTTTTAAGTTGTAAGGATATGCCATTCTAGACAGTTAACACACCAACAAAGATCGGTAGAGCGTCGTGTAGGGAAAGAGTGTGGTACCiz)(?e)(dogf(((oo){e<1})|((00){e<1}))d){e<2}Zdogfood)rrrZdogfootz\Xu👨‍👩‍👧‍👦z(?=a)az(?!b)az ((\d)*?)*?zX(?(DEFINE)(?(?THIS_SHOULD_NOT_MATCHx?)|(?right))).*(?<=(?&mydef).*)zx rightrV)ZmydefZwrongrVz?(?be)(AGTGTTCCCCGCGCCAGCGGGGATAAACCG){s<=5,i<=5,d<=5,s+i+d<=10}ZTTCCCCGCGCCAGCGGGGATAAACCGr&rz (?:bc){e})r%rr%z (?e)(?:bc){e})rrr%z (?b)(?:bc){e}z,(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){e}z$ 10,112.111.12)rrrz/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=1}z9(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=1,i<=1,d<=1}z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=3}z$ 10,1a2.111.12)rmrrz/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=2}z(?e)(?:0?,0(?:,0)?){s<=1,d<=1}z,0;0z(?e)(?:0??,0(?:,0)?){s<=1,d<=1}z#\b(?e)(?:\d{6,20}){i<=5:[\-\\\/]}\bz-cat dog starting at 00:01132.000. hello worldz(?#)z(?x)(?#)z(\d+){i<=2:[ab]}Z123X4Y55z(?i)(\d+){i<=2:[ab]})1rrrrZV1r rr(rFrcrr*r<r)rHrVUNDEF_CHAR_NAMErrZ BESTMATCHr%rAZWORDZspansrrZFULLCASErrr^r_rrDEBUGrrrrrrrgpickledumpsloadsrZ ENHANCEMATCHrr]r)rZfzseqrxrrawr6rZZ TEST_REGEXZ TEST_DATArrZupper_iZlower_ir5Zpy_regex_patternrGr0r r r test_hg_bugs& s                                                                                        ""  """" """"                                                                                                                 zRegexTests.test_hg_bugscCs|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttd dd|ttd dd|ttd dd|ttd dd|ttd dd|ttd d d|ttd dd|ttd dd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttddd|ttdd d|ttd!d"d|ttd!d#d|ttdd$d|ttdd%d|ttd&d'd|ttd&d(ddS))Nz(?r)(?:a){e<=1:[a-z]}r-Tz(?:a){e<=1:[a-z]}r]Frza-z(?:ab){e<=1:[a-z]}z(?r)(?:ab){e<=1:[a-z]}z(a)\1{e<=1:[a-z]}z(?r)\1{e<=1:[a-z]}(a)rz-az4(?fiu)(?:\N{LATIN SMALL LETTER SHARP S}){e<=1:[a-z]}tsstz5(?firu)(?:\N{LATIN SMALL LETTER SHARP S}){e<=1:[a-z]}z-szs-z4(?fiu)(\N{LATIN SMALL LETTER SHARP S})\1{e<=1:[a-z]}ZssstZsstsz5(?firu)\1{e<=1:[a-z]}(\N{LATIN SMALL LETTER SHARP S})ZstssZtssszss-szsss-z5(?firu)(\N{LATIN SMALL LETTER SHARP S})\1{e<=1:[a-z]}z(?fiu)(ss)\1{e<=1:[a-z]}ußtsußstz(?firu)\1{e<=1:[a-z]}(ss)ustßutsßuß-sußs-z(?firu)(ss)\1{e<=1:[a-z]}us-ßu-sß)rrrr)rr r r test_fuzzy_exts                                                           zRegexTests.test_fuzzy_extcCs|tdddd|tdddd|tdddd|tdddd|tdddd|tdddddS)Nz (?P.)+rbz{0} {0[0]} {0[-1]}z abc abc abcz0{1} {1[0]} {1[1]} {1[2]} {1[-1]} {1[-2]} {1[-3]}z c a b c c b az0{x} {x[0]} {x[1]} {x[2]} {x[-1]} {x[-2]} {x[-3]})rrr*rr)rr r r test_subscripted_capturess          z$RegexTests.test_subscripted_capturesc Cstjdkr|tddddddddg|tdddd|tddddd ddg|d d tddDd d dddg|dd tddDdddgdS)N)r&r;rz\b|:+za::bcrer5rr]z-a---bc-z::cSsg|] }|qSr )r))rtr0r r r ru sz2RegexTests.test_more_zerowidth..)rr)r%r%)r%r&)r&r&)rrcSsg|] }|qSr )r))rtr0r r r rusz (?m)^\s*?$z foo bar)rnrn)rnr)r^r_rrrwrAr r)rr r r test_more_zerowidths   zRegexTests.test_more_zerowidth)N)r r r rMrJrWrfrirgrhrkrrrrrrrrrrrrrrrrZDUPLICATE_GROUPrGrrr#r+r.rCrDrErKrNrXr[r\r`rdrlrpryrzr{r}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrr!r&r(r8r:r;rCrDrErFrHrJrKrLrOrPrQrRr[r\r^rirrrrrrrrrrrrrrrr r r r r r r rs   %  9 3 %!X        " 9 b: 0 *6Mp 6BG+P5|Xr)r&rmrcCstjdddS)Nrm) verbosity)unittestmainr r r r test_mainsr__main__)weakrefrrrrrr^r r-rrrZTestCaserr_ZassertRaisesRegexprHrr r r r r s` !