o
    	YÝ^Â@ ã                   @   sž   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZG dd„ deƒZ	G dd„ de
ƒZG dd„ dejƒZejd	k r@eje_d
d„ ZedkrMeƒ  dS dS )é    )ÚproxyNc                       ó   e Zd Z‡ fdd„Z‡  ZS )ÚStrSubclassc                    ó   t tƒ  |¡ƒS ©N)r   ÚsuperÚ__getitem__©ÚselfÚindex©Ú	__class__© úB/var/www/html/env/lib/python3.10/site-packages/regex/test_regex.pyr      ó   zStrSubclass.__getitem__©Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__r   r   r   r   r   
   ó    r   c                       r   )ÚBytesSubclassc                    r   r   )r   r   r   r	   r   r   r   r      r   zBytesSubclass.__getitem__r   r   r   r   r   r      r   r   c                   @   sª  e Zd ZdZdZdZdZdZdZdZ	dZ
dZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdèdd„Zdd„ Zd d!„ Z d"d#„ Z!d$d%„ Z"d&d'„ Z#d(d)„ Z$d*d+„ Z%d,d-„ Z&d.d/„ Z'd0d1„ Z(d2d3„ Z)d4d5„ Z*d6d7„ Z+d8d9„ Z,d:d;„ Z-d<d=„ Z.d>d?„ Z/d@dA„ Z0dBdC„ Z1dDdE„ Z2dFdG„ Z3dHdI„ Z4dJdK„ Z5dLdM„ Z6dNdO„ Z7dPdQ„ Z8dRdS„ Z9dTdU„ Z:dVdW„ Z;dXdY„ Z<dZd[„ Z=d\d]„ Z>d^d_„ Z?d`da„ Z@dbdc„ ZAddde„ ZBdfdg„ ZCdhdi„ ZDdjdk„ ZEdldm„ ZFdndo„ ZGdpdq„ ZHdrds„ ZIdtdu„ ZJdvdw„ ZKdxdy„ ZLdzd{„ ZMd|d}„ ZNd~d„ ZOd€d�„ ZPd‚dƒ„ ZQd„d…„ ZRd†d‡„ ZSdˆd‰„ ZTdŠd‹„ ZUdŒd�„ ZVdŽd�„ ZWd�d‘„ ZXd’d“„ ZYd”d•„ ZZd–d—„ Z[d˜d™„ Z\dšd›„ Z]dœd�„ Z^dždŸ„ Z_d d¡„ Z`d¢d£„ Zad¤d¥„ Zbd¦d§„ Zcd¨d©„ Zddªd«„ Zed¬d­„ Zfd®d¯„ Zgd°d±„ Zhd²d³„ Zid´dµ„ Zjd¶d·„ Zkd¸d¹„ Zldºd»„ Zmd¼d½„ Znd¾d¿„ ZodÀdÁ„ ZpdÂdÃ„ ZqdÄdÅ„ ZrdÆdÇ„ ZsdÈdÉ„ ZtdÊdË„ ZudÌdÍ„ ZvdÎdÏ„ ZwdÐdÑ„ ZxdÒdÓ„ ZydÔdÕ„ ZzdÖd×„ Z{dØdÙ„ Z|dÚdÛ„ Z}dÜdÝ„ Z~dÞdß„ Zdàdá„ Z€dâdã„ Z�dädå„ Z‚dædç„ ZƒdS )éÚ
RegexTestsz<class '_regex.Pattern'>z5cannot process flags argument with a compiled patternzinvalid group referencez	missing >zbad character in group namezmissing group namez	missing <zunknown groupzbad escape \(end of pattern\)zbad escape \\zunterminated character setz2cannot use a string pattern on a bytes-like objectz2cannot use a bytes pattern on a string-like objectz"expected str instance, bytes foundz'expected a bytes-like object, str foundz,cannot use UNICODE flag with a bytes patternz9ASCII, LOCALE and UNICODE flags are mutually incompatiblez
missing \)zunbalanced parenthesiszbad character rangeznothing to repeatzmultiple repeatzcannot refer to an open groupzduplicate groupz'bad inline flags: cannot turn flags offzundefined character nameNc                    s,   ˆ  ||ˆ ¡ ‡ ‡‡fdd„‰ˆ||ƒ d S )Nc                    sJ   t |ttfƒrt| |ƒD ]	\}}ˆ||ƒ qd S ˆ t| ƒt|ƒˆ ¡ d S r   )Ú
isinstanceÚtupleÚlistÚzipÚassertIsÚtype)ÚactualÚexpectÚxÚy©ÚmsgÚrecurser
   r   r   r%   2   s
   ÿz,RegexTests.assertTypedEqual.<locals>.recurse)ÚassertEqual)r
   r   r    r$   r   r#   r   ÚassertTypedEqual/   s   zRegexTests.assertTypedEqualc                 C   s:   d}t  d¡}t|ƒ}| d¡| d¡kr|  ¡  d S d S )NÚQabbbcRzab+c)ÚregexÚcompiler   ÚfindallÚfail)r
   Úsr!   r"   r   r   r   Útest_weakref;   s   
ÿzRegexTests.test_weakrefc                 C   sô   |   t dd¡ d¡d¡ |   t dd¡ ¡ d¡ |   t dd¡ d¡d¡ |   t dd¡ ¡ d¡ |   t d	d
¡d ¡ |   t dd¡ d¡d¡ |   t dd¡ ¡ d¡ |   t dd¡ d¡d¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ d S )Núa*Úxxxr   ©r   r   zx*Úaxxúx+©é   é   r!   ÚaaaÚxxxa©r   r6   úa+)r&   r)   ÚsearchÚspanÚmatch©r
   r   r   r   Útest_search_star_plusB   s   z RegexTests.test_search_star_plusc                 C   s   t |d ƒ}t|d ƒS )Nr   r5   )ÚintÚstr)r
   ÚmatchobjÚ	int_valuer   r   r   Úbump_numN   s   zRegexTests.bump_numc                 C   s  |   t ddd¡d¡ |   t d| jd¡d¡ |   t d| jdd¡d	¡ |   t d
dd„ d¡d¡ |   t d
dd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡tdƒtdƒ tdƒ tdƒ tdƒ td ƒ ¡ |   t d!d"d#¡d$¡ |   t dd%d¡d¡ |   t dd&d¡d¡ |   t dd'd¡d¡ |   t dd(d¡d)¡ |   t d*d+d*¡d,¡ |   t d*d-d*¡d-¡ |   t d*d.d*¡d.¡ |   t d*d/d*¡d/¡ d S )0Nú(?i)b+r!   ú	bbbb BBBBúx xú\d+z08.2 -2 23x99yz9.3 -3 24x100yr6   z9.3 -3 23x99yÚ.c                 S   ó   dS )Nú\nr   ©Úmr   r   r   Ú<lambda>Y   ó    z1RegexTests.test_basic_regex_sub.<locals>.<lambda>rK   Ú
ú(?P<a>x)z
\g<a>\g<a>ÚxxÚxxxxz
\g<a>\g<1>ú
(?P<unk>x)z\g<unk>\g<unk>z
\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\Dú	
é	   é
   é   é   é   é   z^\s*ÚXÚtestÚXtestz\x0Az\u000Az
\U0000000Az\N{LATIN CAPITAL LETTER A}ÚAó   xs   \x0Aó   
s   \u000As
   \U0000000As   \N{LATIN CAPITAL LETTER A})r&   r)   ÚsubrD   Úchrr>   r   r   r   Útest_basic_regex_subR   sb   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_basic_regex_subc                 C   ó   |   t ddd¡d¡ d S )NrT   z\g<1>\g<1>\brR   zxxxx©r&   r)   rc   r>   r   r   r   Útest_bug_449964w   s   ÿzRegexTests.test_bug_449964c                 C   s\   |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ d S )Nz\r\nrK   z
abc
def
zabc
def
ú
rP   rg   r>   r   r   r   Útest_bug_449000|   s   ÿÿÿÿzRegexTests.test_bug_449000c                    sn   t  d¡‰ |  t| j‡ fdd„¡ |  t| j‡ fdd„¡ |  t| j‡ fdd„¡ |  t| j‡ fdd„¡ d S )NrI   c                      ó   t  ˆ dt j¡S ©Nr`   )r)   r=   ÚIr   ©Úpatternr   r   rN   ‹   ó    z*RegexTests.test_bug_1661.<locals>.<lambda>c                      rk   rl   ©r)   r;   rm   r   rn   r   r   rN   �   rp   c                      rk   rl   )r)   r+   rm   r   rn   r   r   rN   �   rp   c                      s   t  ˆ t j¡S r   )r)   r*   rm   r   rn   r   r   rN   ‘   ó    )r)   r*   ÚassertRaisesRegexÚ
ValueErrorÚFLAGS_WITH_COMPILED_PATr>   r   rn   r   Útest_bug_1661‡   s   


ÿ

ÿ

ÿ

ÿzRegexTests.test_bug_1661c                 C   s    |   ttt d¡ƒƒ| j¡ d S )Nz(?P<quote>)(?(quote)))r&   Úreprr   r)   r*   ÚPATTERN_CLASSr>   r   r   r   Útest_bug_3629“   s   ÿzRegexTests.test_bug_3629c                 C   sÚ  |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t dd	d¡d
¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d
¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d ¡ |  tj| jd!d"„ ¡ |  tj| jd#d"„ ¡ |  tj| jd$d"„ ¡ |  tj| jd%d"„ ¡ |  tj| jd&d"„ ¡ |  tj| jd'd"„ ¡ |  tj| jd(d"„ ¡ |  tj| jd)d"„ ¡ |  tj| jd*d"„ ¡ |  tj| jd+d"„ ¡ |  tj| jd,d"„ ¡ |  tj| jd-d"„ ¡ |   t d.d/d¡d¡ |   t d0d1d2¡d3¡ |   t d0d4d2¡d5¡ d S )6Nr!   ú\0ú z\000z\001úz\008z 8z\009z 9z\111rm   z\117ÚOz\1111ÚI1z\00z\07úz\08ú\09z\0az az\400u   Ä€z\777u   Ç¿ra   s   \400ó    s   \777ó   ÿc                   S   ó   t  ddd¡S )Nr!   ú\1©r)   rc   r   r   r   r   rN   °   ó   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>c                   S   rƒ   )Nr!   z\8r…   r   r   r   r   rN   ²   r†   c                   S   rƒ   )Nr!   z\9r…   r   r   r   r   rN   ´   r†   c                   S   rƒ   )Nr!   ú\11r…   r   r   r   r   rN   ¶   r†   c                   S   rƒ   )Nr!   z\18r…   r   r   r   r   rN   ¸   r†   c                   S   rƒ   )Nr!   z\1ar…   r   r   r   r   rN   º   r†   c                   S   rƒ   )Nr!   z\90r…   r   r   r   r   rN   ¼   r†   c                   S   rƒ   )Nr!   z\99r…   r   r   r   r   rN   ¾   r†   c                   S   rƒ   )Nr!   ú\118r…   r   r   r   r   rN   À   r†   c                   S   rƒ   )Nr!   ú\11ar…   r   r   r   r   rN   Â   r†   c                   S   rƒ   )Nr!   z\181r…   r   r   r   r   rN   Ä   r†   c                   S   rƒ   )Nr!   z\800r…   r   r   r   r   rN   Æ   r†   z(((((((((((x)))))))))))r‡   z((((((((((y))))))))))(.)rˆ   ÚxyzÚxz8r‰   Úxza)r&   r)   rc   rs   ÚerrorÚINVALID_GROUP_REFr>   r   r   r   Ú test_sub_template_numeric_escape˜   sN   ÿÿÿz+RegexTests.test_sub_template_numeric_escapec                 C   s2   |   t ddd¡d¡ |   t dddd¡d¡ d S )NrU   ÚbÚaaaaaÚbbbbbr5   Úbaaaarg   r>   r   r   r   Útest_qualified_re_subÑ   s   z RegexTests.test_qualified_re_subc                 C   rf   )Nz(\S)\s+(\S)z\1 \2zhello  therezhello thererg   r>   r   r   r   Útest_bug_114660Õ   s   ÿzRegexTests.test_bug_114660c                 C   sh   t jdkr|  t ddd¡d¡ n|  t ddd¡d¡ |  t ddd¡d¡ |  t ddd¡d	¡ d S )
N©r6   r\   r   z(?V0)x*ú-Úabxdz-a-b--d-z-a-b-d-z(?V1)x*r3   zab-d©ÚsysÚversion_infor&   r)   rc   r>   r   r   r   Útest_bug_462270Ù   s
   
zRegexTests.test_bug_462270c                 C   s*   d}|   t d| d d¡ |¡d¡ d S )Nõ   Ã¿z(?P<z>a)ÚabcrU   )r&   r)   r;   Úgroup)r
   Ú
group_namer   r   r   Útest_bug_14462â   s   ÿÿzRegexTests.test_bug_14462c                 C   sÈ   |   tj| jdd„ ¡ |   tj| jdd„ ¡ |   tj| jdd„ ¡ |   tj| jdd„ ¡ |   tj| jdd„ ¡ |   t| jdd„ ¡ |  	t 
dd	d
¡d¡ |  	t 
ddd
¡d¡ |   tj| jdd„ ¡ d S )Nc                   S   ó   t  ddd¡S )NrQ   z\g<arR   r…   r   r   r   r   rN   é   r†   z/RegexTests.test_symbolic_refs.<locals>.<lambda>c                   S   r¢   )NrQ   z\g<rR   r…   r   r   r   r   rN   ë   r†   c                   S   r¢   )NrQ   ú\grR   r…   r   r   r   r   rN   í   r†   c                   S   r¢   )NrQ   z\g<a a>rR   r…   r   r   r   r   rN   ï   r†   c                   S   r¢   )NrQ   z\g<1a1>rR   r…   r   r   r   r   rN   ñ   r†   c                   S   r¢   )NrQ   z\g<ab>rR   r…   r   r   r   r   rN   ó   r†   z(?P<a>x)|(?P<b>y)z\g<b>rR   Ú z\2c                   S   r¢   )NrQ   z\g<-1>rR   r…   r   r   r   r   rN   ü   r†   )rs   r)   r�   Ú
MISSING_GTÚMISSING_GROUP_NAMEÚ
MISSING_LTÚBAD_GROUP_NAMEÚ
IndexErrorÚUNKNOWN_GROUP_Ir&   rc   r>   r   r   r   Útest_symbolic_refsè   s   zRegexTests.test_symbolic_refsc                 C   st   |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t d	dd¡d
¡ |   t d	ddd¡d¡ d S )NrE   r!   rF   )rG   é   zb+)zx BBBBr5   rŠ   )rŠ   r   zb*)Úxxxyxzxé   r¬   )Úxxxyzr¬   )r&   r)   Úsubnr>   r   r   r   Útest_re_subnÿ   s
   zRegexTests.test_re_subnc                 C   s`  |   t dd¡g d¢¡ tjdkrB|   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t d	d¡g d¢¡ |   t d
d¡g d¢¡ n0|   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t d	d¡g d¢¡ |   t d
d¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   t dd¡g d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   t dd¡g d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   t dd¡g d ¢¡ |   d!d„ t dd¡D ƒg d ¢¡ |   t d"d#¡g d$¢¡ |   t d%d#¡g d&¢¡ |   t d'd#¡g d(¢¡ d S ))Nú:ú:a:b::c©r¤   rU   r�   r¤   Úcr–   ú:*©r¤   r¤   rU   r¤   r�   r¤   rµ   r¤   ú(:*)©r¤   r²   r¤   r¤   rU   r²   r¤   r¤   r�   ú::r¤   r¤   rµ   r¤   r¤   z(?::*)z(:)*)r¤   r²   r¤   NrU   r²   r¤   Nr�   r²   r¤   Nrµ   Nr¤   ©r¤   rU   r�   rµ   ©r¤   r²   rU   r²   r�   rº   rµ   )r¤   r²   rU   r²   r�   r²   rµ   z([b:]+))r¤   r²   rU   z:b::rµ   z(b)|(:+))r¤   Nr²   rU   Nr²   r¤   r�   Nr¤   Nrº   rµ   z(?:b)|(?::+))r¤   rU   r¤   r¤   rµ   r!   Úxaxbxcc                 S   ó   g | ]}|‘qS r   r   ©Ú.0rM   r   r   r   Ú
<listcomp>!  rp   z,RegexTests.test_re_split.<locals>.<listcomp>z(?r)x)rµ   r�   rU   r¤   c                 S   r¾   r   r   r¿   r   r   r   rÁ   %  rp   z(x)|(y))
r¤   r!   NrU   r!   Nr�   r!   Nrµ   c                 S   r¾   r   r   r¿   r   r   r   rÁ   *  rp   z(?r)(x)|(y))
rµ   r!   Nr�   r!   NrU   r!   Nr¤   c                 S   r¾   r   r   r¿   r   r   r   rÁ   /  rp   ú(?V1)\bza b c)r¤   rU   ú r�   rÃ   rµ   r¤   z(?V1)\m)r¤   úa zb rµ   z(?V1)\M)rU   ú bz cr¤   )r&   r)   Úsplitrš   r›   Ú	splititerr>   r   r   r   Útest_re_split  s8   
""ÿÿzRegexTests.test_re_splitc                 C   s”   |   t ddd¡g d¢¡ |   t ddd¡g d¢¡ |   t ddd¡g d¢¡ tjd	kr;|   t d
dd¡g d¢¡ d S |   t d
dd¡g d¢¡ d S )Nr²   r³   r¬   )r¤   rU   úb::cza:b:c:d)rU   r�   zc:dz(:))r¤   r²   rU   r²   rÉ   r–   r¸   )r¤   r²   r¤   r¤   za:b::c)r&   r)   rÆ   rš   r›   r>   r   r   r   Útest_qualified_re_split9  s   
z"RegexTests.test_qualified_re_splitc                 C   s  |   t dd¡g ¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd	¡d
g¡ |   t dd	¡d
g¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ d S )Nú:+rž   ú
a:b::c:::d©r²   rº   z:::ú(:+)ú(:)(:*)©)r²   r¤   )r²   r²   )r²   rº   z\((?P<test>.{0,5}?TEST)\)z	(MY TEST)zMY TESTz\((?P<test>.{0,3}?TEST)\)z\((?P<test>.{0,3}?T)\)z(MY T)zMY Tz[^a]{2}[A-Z]z
  Sz  Sz[^a]{2,3}[A-Z]z
   Sz   SzX(Y[^Y]+?){1,2}( |Q)+DEFzXYABCYPPQ
Q DEF)zYPPQ
rÃ   z(\nTest(\n+.+?){0,2}?)?\n+Endz
Test
xyz
xyz
End)z
Test
xyz
xyzz
xyz©r&   r)   r+   r>   r   r   r   Útest_re_findallF  s<   
ÿÿ
ÿÿÿ
ÿÿ
ÿÿzRegexTests.test_re_findallc                 C   s   |   t dd¡g d¢¡ d S )Nz(a|(b))Úaba)©rU   r¤   )r�   r�   rÔ   rÑ   r>   r   r   r   Útest_bug_117612_  ó   zRegexTests.test_bug_117612c                 C   sÆ  |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡ dd¡d¡ t d¡}|   | d¡d d … d¡ |   | d	¡d d … d
¡ |   | d¡d d … d¡ |   | d¡d d … d¡ |   | d¡d d … d¡ t dd¡}|   | ¡ d¡ |   | d¡d¡ |   | d¡d¡ |   | dd¡d¡ t d¡}|   | d¡ ddd¡d¡ |   | d	¡ ddd¡d¡ |   | d¡ ddd¡d¡ d S )NrU   ©rU   ú(a)©rU   rU   r   r5   z((a)|(b))(c)?)rU   rU   rU   NNr�   )r�   r�   Nr�   NÚac)rÚ   rU   rU   Nrµ   Úbc)rÛ   r�   Nr�   rµ   z!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?r¬   r6   )rU   NNÚa1Úb2Úc3)Nr�   N©rU   Nrµ   )r&   r)   r=   rŸ   r*   )r
   ÚpatrM   r   r   r   Útest_re_matchc  s(   

 zRegexTests.test_re_matchc                 C   s6  |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd	¡d d … d
¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ t d¡}|   | d¡d d … d¡ |   | d¡d d … d¡ |   | d¡d ¡ |   | d¡d ¡ d S )Nz^(\()?([^()]+)(?(1)\))$rØ   )rØ   ú(rU   rU   ©rU   NrU   za)z(az^(?:(a)|c)((?(1)b|d))$Úab)rä   rU   r�   Úcd)rå   NÚdz^(?:(a)|c)((?(1)|d))$)rU   rU   r¤   z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))rž   )rž   rU   r�   rµ   Úad)rç   rU   Nræ   ÚabdrÚ   )r&   r)   r=   r*   ©r
   Úpr   r   r   Útest_re_groupref_exists~  s   ÿ
z"RegexTests.test_re_groupref_existsc                 C   s²   |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t d	d
¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡dg¡ d S )Nz^(\|)?([^()]+)\1$ú|a|)rì   ú|rU   z^(\|)?([^()]+)\1?$rU   rã   za|z|az^(?:(a)|c)(\1)$Úaa)rî   rU   rU   z^(?:(a)|c)(\1)?$rµ   )rµ   NNzE(?i)(.{1,40}?),(.{1,40}?)(?:;)+(.{1,80}).{1,40}?\3(\ |;)+(.{1,80}?)\1z&TEST, BEST; LEST ; Lest 123 Test, Best)ÚTESTz BESTz LESTrÃ   z123 )r&   r)   r=   r+   r>   r   r   r   Útest_re_groupref•  s   
ÿÿzRegexTests.test_re_grouprefc                 C   s"   |   t dd¡ ¡ dddœ¡ d S )Nú#(?P<first>first) (?P<second>second)úfirst secondÚfirstÚsecond©ró   rô   )r&   r)   r=   Ú	groupdictr>   r   r   r   Útest_groupdict¥  s
   
ÿÿzRegexTests.test_groupdictc                 C   s   |   t dd¡ d¡d¡ d S )Nrñ   rò   z\2 \1 \g<second> \g<first>zsecond first second first)r&   r)   r=   Úexpandr>   r   r   r   Útest_expand©  s   
ÿþzRegexTests.test_expandc                 C   s°  |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d d¡ |   t d	d¡d d¡ |   t d
d¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt d d¡ƒd¡ |   tt d!d¡ƒd¡ |   tt d"d¡ƒd¡ |   tt dd¡ƒd¡ |   t d#d¡d ¡ |   tt d#d$¡ƒd¡ d S )%Nz	^(\w){1}$rž   z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r5   rµ   z^(\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}$r0   z^x{1}?$z^x{1,2}$z	^x{1,2}?$z^x{1}r   r!   z^x{1}?z^x{0,1}z^x{0,1}?r¤   z^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{}$zx{})r&   r)   r=   Úboolr>   r   r   r   Útest_repeat_minmax®  s<   zRegexTests.test_repeat_minmaxc                 C   sš  |   t d¡jd¡ |   t d¡jtjtjB tjB ¡ |   t d¡jtjtjB tjB ¡ |   t d¡j	d¡ |   t d¡j
i ¡ |   t d¡j
dddœ¡ |   t dd¡jd	¡ |   t dd¡jd¡ |   t d
d¡jd	¡ |   t d
d¡jd¡ |   t d
d¡ ¡ d¡ |   t d
d¡ d¡d¡ |   t dd¡jd¡ |   t dd¡jd¡ |   ttt dd¡jƒƒ| j¡ t d¡}d	|j
d< |   |j
d d¡ d S )Nz
(?i)(a)(b)s
   (?i)(a)(b)r¬   z(?i)(?P<first>a)(?P<other>b)r5   )ró   ÚotherrØ   rU   r   zb(c)Úabcdefé   r4   )r¬   r6   ©©r   r5   r   zabc(?P<n>def)Ún)r&   r)   r*   ro   Úflagsrm   ÚUÚDEFAULT_VERSIONr`   ÚgroupsÚ
groupindexr=   ÚposÚendposr;   r<   ÚstringÚregsrw   r   Úrerx   ré   r   r   r   Útest_getattrÓ  s4   ÿÿÿÿ

zRegexTests.test_getattrc                 C   sÄ  |   t dd¡d d¡ |   t dd¡d d¡ |   t ddtj¡d d	¡ |   t d
dtj¡d d	¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d ¡ |   t dd¡d d	¡ |   t d
d¡d d	¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d ¡ |   t dd¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ d S )Nz\b(b.)\bzabcd abc bcd bxr5   Úbxz\B(b.)\Bzabc bcd bc abxds   \b(b.)\bs   abcd abc bcd bxs   bxs   \B(b.)\Bs   abc bcd bc abxdú^abc$z
abc
r   rž   z	^\Aabc\Z$s   ^abc$s   
abc
ó   abcs	   ^\Aabc\Z$z\d\D\w\W\s\Sz1aa! as   \d\D\w\W\s\Ss   1aa! a)r&   r)   r;   ÚLOCALEÚUNICODEÚMr>   r   r   r   Útest_special_escapesñ  s~   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_special_escapesc              	   C   s˜   |   t dd¡d d¡ |   t ddtj¡d d¡ |   d tjddtjd�¡d¡ |   d tjddtjd�¡d¡ |   d tjd	dtjd�¡d¡ d S )
Nz([\u2222\u2223])u   âˆ¢r5   r¤   rI   u   eÃ¨Ã©ÃªÃ«Ä“Ä›Ä—©r  z%[e\xe8\xe9\xea\xeb\u0113\u011b\u0117]z*e|\xe8|\xe9|\xea|\xeb|\u0113|\u011b|\u0117)r&   r)   r=   r  Újoinr+   r>   r   r   r   Útest_bigcharset  s2   ÿÿÿÿÿþÿþÿþzRegexTests.test_bigcharsetc                 C   s<   |   t ddtj¡d d¡ |   t ddtj¡d d¡ d S )Núa.búa
br   úa.*bza

b)r&   r)   r=   ÚDOTALLr>   r   r   r   Útest_anyall!  s   ÿzRegexTests.test_anyallc                 C   s  |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t d	d
¡d d¡ |   t dd¡d d¡ |   t dd
¡d d¡ |   t dd
¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ |   t dd¡d d¡ d S )Nz(a(?=\s[^a]))úa br5   rU   z(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))za bcz(a)(?=\s\1)úa az(a)(?=\s\1*)úa aaz(a)(?=\s(abc|a))z(a(?!\s[^a]))z(a(?!\s[abc]))za dz(a)(?!\s\1)z(a)(?!\s(abc|a))©r&   r)   r=   r>   r   r   r   Útest_non_consuming&  s   zRegexTests.test_non_consumingc                 C   s�  |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t d	d
tj¡d d
¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t ddtj¡d d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ d S )Nrž   ÚABCr   r  s   ABCz
(a\s[^a]*)za bbr5   z
(a\s[abc])r  z(a\s[abc]*)z	((a)\s\2)r  z
((a)\s\2*)r  z((a)\s(abc|a))z((a)\s(abc|a)*)z[Z-a]Ú_r   z	(?i)[Z-a]z(?i)naoÚnAoTz
(?i)n\xE3ou   nÃƒou   NÃƒOz(?i)su   Å¿)r&   r)   r=   rm   r<   rú   r>   r   r   r   Útest_ignore_case4  s2   ÿÿÿÿÿzRegexTests.test_ignore_casec                 C   s¸  |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t d	d
¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t d	d¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ d}|D ]}|D ]}t d| |¡sî|  ¡  qàqÜ|   tt dd ¡ƒd!¡ |   tt dd"¡ƒd!¡ |   tt d#d ¡ƒd!¡ |   tt d#d"¡ƒd!¡ |   tt d$d ¡ƒd!¡ |   tt d%d ¡ƒd!¡ |   tt dd ¡ƒd!¡ |   tt d#d ¡ƒd!¡ |   tt d$d ¡ƒd!¡ |   tt d%d ¡ƒd!¡ |   tt d&d¡ƒd!¡ |   tt d&d¡ƒd!¡ |   t d'd(¡d)d*g¡ |   t d+d(¡d)d*g¡ |   t d,d-¡ ¡ d.¡ |   t d/d-¡ ¡ d.¡ |   t d0d-¡ ¡ d.¡ |   tjd1d2dgd3� ¡ d4¡ |   tjd1d5d6gd3� ¡ d7¡ d S )8Nz(?fi)ssÚSS©r   r¬   z(?fi)SSÚssõ   ÃŸr   z#(?fi)\N{LATIN SMALL LETTER SHARP S}z (?fi)\N{LATIN SMALL LIGATURE ST}ÚSTz(?fi)STu   ï¬†u   ï¬…z(?fi)SSTu   ÃŸtu   sï¬…u   sï¬†ÚSSTr4   z(?fi)FFIu   ï¬ƒu   ï¬€iu   fï¬�z!(?fi)\N{LATIN SMALL LIGATURE FFI}ÚFFIr9   z!(?fi)\N{LATIN SMALL LIGATURE FF}iz!(?fi)f\N{LATIN SMALL LIGATURE FI}u   Î£ÏƒÏ‚z(?fi)z(?iV1)ffu   ï¬€ï¬�Tu   ï¬�ï¬€z(?iV1)fiz
(?iV1)fffiz(?iV1)f\uFB03z(?iV1)f\uFB01z/(?iV0)\m(?:word){e<=3}\M(?<!\m(?:word){e<=1}\M)z.word word2 word word3 word word234 word23 wordÚword234Úword23z/(?iV1)\m(?:word){e<=3}\M(?<!\m(?:word){e<=1}\M)z$(?fi)a\N{LATIN SMALL LIGATURE FFI}nez
  affine  )r¬   é   z*(?fi)a(?:\N{LATIN SMALL LIGATURE FFI}|x)nez+(?fi)a(?:\N{LATIN SMALL LIGATURE FFI}|xy)nez(?fi)a\L<options>neÚaffine©Úoptions©r   rþ   u   aï¬ƒneÚffi©r   r®   )r&   r)   r;   r<   r=   r,   rú   r+   )r
   ÚsigmaÚch1Úch2r   r   r   Útest_case_foldingN  sP  
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ€þÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿ
ÿÿ
ÿÿÿÿ
ÿÿzRegexTests.test_case_foldingc                 C   s   |   t dd¡d d¡ d S )Nz(\s)rÃ   r5   r  r>   r   r   r   Útest_category¦  rÖ   zRegexTests.test_categoryc                 C   s4   |   t dd¡d d¡ |   t dd¡d d¡ d S )Nz\s([^a])rÅ   r5   r�   z	\s([^a]*)z bbÚbb©r&   r)   r;   r>   r   r   r   Útest_not_literal©  ó   zRegexTests.test_not_literalc                 C   s4   |   t dd¡d d¡ |   t dd¡d d¡ d S )Nz\s(b)rÅ   r5   r�   za\srÄ   r   r;  r>   r   r   r   Útest_search_coverage­  r=  zRegexTests.test_search_coveragec              
   C   s¨   d}|   t |¡|¡ tddƒD ].}|t|ƒ7 }|   tt t t|ƒ¡t|ƒ¡ƒd¡ |   t t t|ƒ¡t|ƒ¡ ¡ d¡ qt t |¡¡}|   | |¡ ¡ d¡ d S )Nr¤   r   é   Tr   ©r   r?  )	r&   r)   ÚescapeÚrangerd   rú   r=   r<   r*   )r
   rê   Úirà   r   r   r   Útest_re_escape±  s    ÿ ÿzRegexTests.test_re_escapec              	   C   sž   d}|   t |¡|¡ tddƒD ])}t|gƒ}||7 }|   tt t |¡|¡ƒd¡ |   t t |¡|¡ ¡ d¡ qt t |¡¡}|   | |¡ ¡ d¡ d S )Nó    r   r?  Tr   r@  )	r&   r)   rA  rB  Úbytesrú   r=   r<   r*   )r
   rê   rC  r�   rà   r   r   r   Útest_re_escape_byte¾  s   
 zRegexTests.test_re_escape_bytec                 C   sl   t jt jkr
|  ¡  t jt jkr|  ¡  t jt jkr|  ¡  t jt j	kr(|  ¡  t j
t jkr4|  ¡  d S d S r   )r)   rm   Ú
IGNORECASEr,   ÚLr  r  Ú	MULTILINEÚSr  r]   ÚVERBOSEr>   r   r   r   Útest_constantsÊ  s   ÿzRegexTests.test_constantsc              	   C   s@   t jt jt jt jt jfD ]}|  ttt  	d|¡ƒƒ| j
¡ qd S )Nz	^pattern$)r)   rm   r  r]   rK  rI  r&   rw   r   r*   rx   )r
   Úflagr   r   r   Ú
test_flagsÖ  s
   ÿÿzRegexTests.test_flagsc              	   C   sô   dD ]j}|   tt d| t|ƒ¡ƒd¡ |   tt d| t|ƒd ¡ƒd¡ |   tt d| t|ƒd ¡ƒd¡ |   tt d| t|ƒ¡ƒd¡ |   tt d	| t|ƒd ¡ƒd¡ |   tt d
| t|ƒd ¡ƒd¡ q|  tj| jdd„ ¡ d S )N©r   r.  é   é    é@   é   é€   éÿ   z\%03oTz\%03o0Ú0z\%03o8Ú8z\x%02xz\x%02x0z\x%02xzÚzc                   S   ó   t  dd¡S )Nz\911r¤   ©r)   r=   r   r   r   r   rN   è  ó   z8RegexTests.test_sre_character_literals.<locals>.<lambda>)r&   rú   r)   r=   rd   rs   r�   rŽ   ©r
   rC  r   r   r   Útest_sre_character_literalsÛ  s     ÿÿ ÿÿz&RegexTests.test_sre_character_literalsc              	   C   sä   dD ]b}|   tt d| t|ƒ¡ƒd¡ |   tt d| t|ƒ¡ƒd¡ |   tt d| t|ƒ¡ƒd¡ |   tt d| t|ƒ¡ƒd¡ |   tt d| t|ƒ¡ƒd¡ |   tt d| t|ƒ¡ƒd¡ q|  tj| jd	d
„ ¡ d S )NrP  z[\%03o]Tz[\%03o0]z[\%03o8]z[\x%02x]z	[\x%02x0]z	[\x%02xz]c                   S   rZ  )Nz[\911]r¤   r[  r   r   r   r   rN   ô  r\  z>RegexTests.test_sre_character_class_literals.<locals>.<lambda>)r&   rú   r)   r=   rd   rs   r�   ÚBAD_OCTAL_ESCAPEr]  r   r   r   Ú!test_sre_character_class_literalsë  s        "z,RegexTests.test_sre_character_class_literalsc                 C   sR   |   t dd¡ d¡d¡ |   t dd¡ d¡d¡ |   t dd¡ d¡d¡ d S )Nz(a)|(b)r�   r5   éÿÿÿÿ©ra  ra  )r&   r)   r=   ÚstartÚendr<   r>   r   r   r   Útest_bug_113254÷  s   zRegexTests.test_bug_113254c                 C   sr   |   t dd¡jd ¡ |   t dd¡jd¡ |   t dd¡jd¡ |   t dd¡jd¡ |   t dd¡jd¡ d S )	Nz(a)?arU   z(a)(b)?brä   r5   z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))ú((a)))r&   r)   r=   Ú	lastindexÚ	lastgroupr>   r   r   r   Útest_bug_527371ü  s   ÿzRegexTests.test_bug_527371c                 C   s   |   tj| jdd„ ¡ d S )Nc                   S   ó
   t  d¡S )Nzfoo[a-©r)   r*   r   r   r   r   rN     ó   
z,RegexTests.test_bug_545855.<locals>.<lambda>)rs   r)   r�   ÚBAD_SETr>   r   r   r   Útest_bug_545855  s   zRegexTests.test_bug_545855c                 C   s˜   |   t ddd d ¡ d¡d¡ |   t ddd d	 dd  d
 ¡ d¡d¡ |   t ddd d ¡ d¡d¡ |   t ddd d ¡ d¡d¡ d S )Nz.*?ci'  rä   rå   r   i!N  z.*?cdiˆ  rµ   Úcdei#N  i N  rž   Údeiaê  z(a|b)*?c)r&   r)   r=   rd  r;   r>   r   r   r   Útest_bug_418626  s   ÿÿÿÿÿzRegexTests.test_bug_418626c                 C   s,   dt  d¡ d }|  t  |¡odd¡ d S )Nú[u   â€¹ú]r5   )r)   rA  r&   r*   ©r
   rà   r   r   r   Útest_bug_612074  s   zRegexTests.test_bug_612074c                 C   s`   |   t ddd ¡d d¡ |   t ddd d ¡d d¡ |   t ddd d ¡d d¡ d S )Nz(x)*iPÃ  r!   r5   z(x)*yr"   z(x)*?yr  r>   r   r   r   Útest_stack_overflow  s    $zRegexTests.test_stack_overflowc                 C   s‚   dd„ }dd„ }dd„ }dd„ }t  d	|fd
|fd|fd|fdg¡}|  tt|j d¡jƒƒ| j¡ |  | d¡g d¢df¡ d S )Nc                 S   s   |S r   r   ©ÚscannerÚtokenr   r   r   Ús_ident&  rO   z(RegexTests.test_scanner.<locals>.s_identc                 S   s   d| S )Nzop%sr   rw  r   r   r   Ú
s_operator'  ó    z+RegexTests.test_scanner.<locals>.s_operatorc                 S   ó   t |ƒS r   )Úfloatrw  r   r   r   Ús_float(  r|  z(RegexTests.test_scanner.<locals>.s_floatc                 S   r}  r   )r@   rw  r   r   r   Ús_int)  r|  z&RegexTests.test_scanner.<locals>.s_intz[a-zA-Z_]\w*z\d+\.\d*rH   z=|\+|-|\*|/)z\s+Nr¤   zsum = 3*foo + 312.50 + bar)	Úsumzop=r6   zop*Úfooúop+g     ˆs@rƒ  Úbar)	r)   ÚScannerr&   rw   r   rx  ro   rx   Úscan)r
   rz  r{  r  r€  rx  r   r   r   Útest_scanner%  s   ÿÿÿ
ÿzRegexTests.test_scannerc                 C   sN   dD ]"}|   t d| d¡d d … d¡ |   t d| d¡d d … d¡ qd S )N)r¤   ú?Ú*z
((.%s):)?zrY  )rY  NNúa:z)rŠ  za:rU   r  )r
   Úopr   r   r   Útest_bug_4489515  s    "ýzRegexTests.test_bug_448951c                 C   sä   |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t d	d¡d d … d
¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ d S )Nz	^((a)|b)*rž   )rä   r�   rU   z^(([ab])|c)*)rž   rµ   r�   z^((d)|[ab])*)rä   r�   Nz^((a)c|[ab])*z^((a)|b)*?c)rž   r�   rU   z^(([ab])|c)*?dÚabcd)r�  rµ   r�   z^((d)|[ab])*?c)rž   r�   Nz^((a)c|[ab])*?cr  r>   r   r   r   Útest_bug_725106>  s    zRegexTests.test_bug_725106c                 C   s<   |   t dd¡d d … d¡ |   t dd¡d d … d¡ d S )Nz(a)(?:(?=(b)*)c)*Úabb©rU   rU   Nz(a)((?!(b)*))*)rU   rU   NNr  r>   r   r   r   Útest_bug_725149P  s    zRegexTests.test_bug_725149c                 C   s4   G dd„ dt ƒ}t |dƒ¡}|  | d¡d ¡ d S )Nc                   @   s   e Zd ZdS )z.RegexTests.test_bug_764548.<locals>.my_unicodeN)r   r   r   r   r   r   r   Ú
my_unicodeY  s    r’  rž   rŠ   )rA   r)   r*   r&   r=   )r
   r’  rà   r   r   r   Útest_bug_764548W  s   zRegexTests.test_bug_764548c                 C   s*   t  dd¡}|  dd„ |D ƒg d¢¡ d S )NrË   rÌ   c                 S   ó   g | ]}|d  ‘qS ©r   r   )rÀ   Úitemr   r   r   rÁ   _  ó    z,RegexTests.test_finditer.<locals>.<listcomp>rÍ   )r)   Úfinditerr&   )r
   Úitr   r   r   Útest_finditer]  s   zRegexTests.test_finditerc                 C   s$   t  d¡t  d¡u r|  ¡  d S d S )NÚ
bug_926075s
   bug_926075)r)   r*   r,   r>   r   r   r   Útest_bug_926075a  s   ÿzRegexTests.test_bug_926075c                 C   s$   d}|   t |¡ d¡g d¢¡ d S )Nu   [.ã€‚ï¼Žï½¡]za.b.c©rU   r�   rµ   )r&   r)   r*   rÆ   ©r
   ro   r   r   r   Útest_bug_931848e  s    zRegexTests.test_bug_931848c                    sl   t  dd¡‰ |  tˆ ƒ ¡ d¡ |  t‡ fdd„¡ t  d¡ d¡}|  | 	¡  ¡ d¡ |  | 	¡ d ¡ d S )Nú\sr  ©r5   r¬   c                      ó   t ˆ ƒS r   ©Únextr   ©r™  r   r   rN   m  r|  z,RegexTests.test_bug_581080.<locals>.<lambda>)
r)   r˜  r&   r¤  r<   ÚassertRaisesÚStopIterationr*   rx  r;   )r
   rx  r   r¥  r   Útest_bug_581080j  s   zRegexTests.test_bug_581080c                    sL   t  dd¡‰ |  tˆ ƒ ¡ d¡ |  tˆ ƒ ¡ d¡ |  t‡ fdd„¡ d S )Nz.*Úasdfr4  ©r®   r®   c                      r¢  r   r£  r   r¥  r   r   rN   w  r|  z,RegexTests.test_bug_817234.<locals>.<lambda>)r)   r˜  r&   r¤  r<   r¦  r§  r>   r   r¥  r   Útest_bug_817234s  s   zRegexTests.test_bug_817234c                 C   sX   dd l }dD ]#}|  |¡}|  t d¡ |¡d ¡ |  t d¡ |¡dd … d¡ qd S )Nr   ÚbBuhHiIlLfds   blarE  r5   r   )Úarrayr&   r)   r*   r=   )r
   r­  ÚtypecoderU   r   r   r   Útest_empty_arrayy  s   
"ýzRegexTests.test_empty_arrayc                 C   s\  t dƒ}t dƒ}t |tjtjB ¡}|  t| |¡ƒd¡ t |tjtjB ¡}|  t| |¡ƒd¡ t d| tj¡}|  t| |¡ƒd¡ t d| tj¡}|  t| |¡ƒd¡ t d| ¡}|  t| |¡ƒd¡ t d| ¡}|  t| |¡ƒd¡ |  tt dd¡ƒd¡ |  tt dd¡ƒd¡ |  tt d	d¡ƒd¡ |  t d
d¡d ¡ d S )Ni   i¡  Tz(?i)z(?iu)ú(?i)ar`   za(?i)z(?iV1)aza(?iV1))rd   r)   r*   rm   r  r&   rú   r=   )r
   Ú
upper_charÚ
lower_charrê   r   r   r   Útest_inline_flags�  s$   zRegexTests.test_inline_flagsc                 C   s”   t  d¡}|  | dd¡d¡ |  | dd¡d¡ |  | dd¡d¡ t  dt j¡}|  | dd¡d	¡ |  | dd¡d
¡ |  | dd¡d¡ d S )Nú$ú#za
b
za
b#
#za
b
cza
b
c#rP   z#
#za#
b#
#za#
b#
c#)r)   r*   r&   rc   rJ  rž  r   r   r   Útest_dollar_matches_twice�  s   
z$RegexTests.test_dollar_matches_twicec                    sP  t  d¡‰t  d¡‰ |  t| j‡fdd„¡ |  t| j‡ fdd„¡ |  t| j‡fdd„¡ |  t| j‡fdd„¡ |  t| j‡fdd„¡ |  t| j‡ fd	d„¡ |  t| j‡ fd
d„¡ |  t| j‡ fdd„¡ |  t| j	dd„ ¡ |  t| j	dd„ ¡ |  t| j
dd„ ¡ |  t| j
dd„ ¡ |  t| j
dd„ ¡ |  t| j
dd„ ¡ d S )NrI   ó   .c                      ó
   ˆ   d¡S )Nó   b©r=   r   ©rà   r   r   rN   ­  rl  z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>c                      r¸  )Nr�   rº  r   ©Úbpatr   r   rN   ¯  rl  c                      ó   ˆ   dd¡S ©Nr¹  rµ   ©rc   r   r»  r   r   rN   ±  r\  c                      r¾  ©Nr�   ó   crÀ  r   r»  r   r   rN   ³  r\  c                      r¾  )Nr¹  rÂ  rÀ  r   r»  r   r   rN   µ  r\  c                      r¾  r¿  rÀ  r   r¼  r   r   rN   ·  r\  c                      r¾  rÁ  rÀ  r   r¼  r   r   rN   ¹  r\  c                      r¾  ©Nr�   rµ   rÀ  r   r¼  r   r   rN   »  r\  c                   S   ó   t  dt j¡S )Nó   \w©r)   r*   r  r   r   r   r   rN   ¾  r†   c                   S   rj  )Ns   (?u)\wrk  r   r   r   r   rN   À  rl  c                   S   s   t  dt jt jB ¡S )Nú\w)r)   r*   r  ÚASCIIr   r   r   r   rN   Â  s   c                   S   rÄ  )Nz(?u)\w)r)   r*   rÈ  r   r   r   r   rN   Ä  r†   c                   S   rÄ  )Nú(?a)\wrÆ  r   r   r   r   rN   Æ  r†   c                   S   rj  ©Nz(?au)\wrk  r   r   r   r   rN   È  rl  )r)   r*   rs   Ú	TypeErrorÚSTR_PAT_ON_BYTESÚBYTES_PAT_ON_STRÚSTR_PAT_BYTES_TEMPLÚBYTES_PAT_STR_TEMPLrt   ÚBYTES_PAT_UNI_FLAGÚMIXED_FLAGSr>   r   )r½  rà   r   Útest_bytes_str_mixing©  s    

z RegexTests.test_bytes_str_mixingc                 C   sD  dt jfD ]'}t  d|t jB ¡}|  t| d¡ƒd¡ t  d|¡}|  t| d¡ƒd¡ qt  dt jt jB ¡}|  | d¡d ¡ t  dt j¡}|  | d¡d ¡ t  dt j¡}|  | d¡d ¡ t  d¡}|  | d¡d ¡ dt jfD ]"}t  d|t jB ¡}|  | d	¡d ¡ t  d
¡}|  | d	¡d ¡ qs|  t	| j
dd„ ¡ d S )Nr   õ   Ã€õ   Ã TrÇ  u   (?a)Ã€rÉ  ó   Àó   àrÅ  c                   S   rj  rÊ  rk  r   r   r   r   rN   ã  rl  z8RegexTests.test_ascii_and_unicode_flag.<locals>.<lambda>)r)   r  r*   rH  r&   rú   r=   rÈ  rs   rt   rÑ  )r
   r  rà   r   r   r   Útest_ascii_and_unicode_flagË  s&   

z&RegexTests.test_ascii_and_unicode_flagc                 C   s”   t  dd¡}|s|  d¡ n|r"|d | d¡ks"|d | d¡kr'|  d¡ |s0|  d¡ d S |d d … dkrH|  d t|d d … ƒ¡¡ d S d S )	Nú(?<a>\w)Úxyz(Failed: expected match but returned Noner   r5   ÚFailed)r!   r!   z0Failed: expected "('x', 'x')" but got {} instead)r)   r=   r,   rŸ   ÚformatÚascii©r
   rM   r   r   r   Útest_subscripting_matchæ  s   (
 ÿz"RegexTests.test_subscripting_matchc                 C   sJ   t  dd¡}t  dd¡}|r|r|d d … |d d … ks#|  d¡ d S d S )Nz	(?P<a>\w)r!   rØ  rÚ  )r)   r=   r,   )r
   Úm0Úm1r   r   r   Útest_new_named_groupsñ  s
    ÿz RegexTests.test_new_named_groupsc           	      C   sØ  |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   tt dd	¡ƒd¡ |   tt d
d¡ƒd¡ |   tt dd¡ƒd¡ |   t dd¡d ¡ |   t d
d¡d ¡ |   t dd¡d ¡ |   t dd	¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt d d¡ƒd¡ |   tt d!d¡ƒd¡ |   tt d"d¡ƒd¡ |   tt d#d¡ƒd¡ |   tt d$d¡ƒd¡ |   tt d%d¡ƒd¡ |   tt d&d¡ƒd¡ |   tt d'd¡ƒd¡ |   tt d(d¡ƒd¡ |   tt d)d¡ƒd¡ |   tt d*d¡ƒd¡ |   tt d+d¡ƒd¡ |   tt d,d¡ƒd¡ |   tt d-d¡ƒd¡ |   tt d.d/¡ƒd¡ |   tt d0d1¡ƒd¡ |   tt dd¡ƒd¡ |   t d.d2¡d ¡ |   t d0d2¡d ¡ |   t dd2¡d ¡ |   t d3d/¡d ¡ |   t d4d1¡d ¡ |   t d5d¡d ¡ |   tt d3d2¡ƒd¡ |   tt d4d2¡ƒd¡ |   tt d5d2¡ƒd¡ |   tt d6d¡ƒd¡ |   tt d6d7¡ƒd¡ |   tt d8d¡ƒd¡ |   tt d9d7¡ƒd¡ |   tt d:d7¡ƒd¡ |   tt d:d¡ƒd¡ |   tt dd/¡ƒd¡ |   tt dd7¡ƒd¡ |   tt dd;¡ƒd¡ |   t d<d¡ ¡ d=¡ |   t d<d>¡ ¡ d?¡ |   t d<d@¡g dA¢¡ |   t dBd@¡dCdDg¡ |   t d<dE¡g dF¢¡ |   tt d9d7¡ƒd¡ dG}dH}tdI ¡ ƒ}g d|dJf‘dK|dJf‘d5|dLf‘dM|dLf‘d.|dNf‘dO|dNf‘d3|dPf‘dQ|dPf‘dR|dSf‘dT|dUf‘dV|dWf‘dX|dYf‘dZ|d[f‘d\|d]f‘d^‘d_‘d`‘da‘d|dbf‘dc|dbf‘d|ddf‘de|ddf‘d|dff‘dg|dff‘d|dhf‘di|dhf‘dj|dkf‘dl|dmf‘dn|dof‘dp|dqf‘dr|dsf‘dt|duf‘d|dbf‘dv|dbf‘dw|ddf‘dx|ddf‘dy|dff‘dz|dff‘d{|dhf‘d||dhf‘d}|dkf‘d~|dmf‘d|dof‘d€|dqf‘d�|dsf‘d‚|duf‘}|D ]?\}}}z|d dƒ…  t ||¡¡|k�r$|  	d„ 
|¡¡ W �q t�yE } z|  	d… 
|t|ƒ¡¡ W Y d }~�qd }~ww |   tt d†d/¡ƒd¡ |   tt d‡dˆ¡ƒd¡ |   tt d‰dˆ¡ƒd¡ d S )ŠNs   (?ai)ÀrÖ  s	   (?ai)\xC0s   (?a)\wrÇ  rÔ  Ts   (?L)\dó   0s   (?L)\só    s   (?L)\wó   aó   ?s   (?L)\Ds   (?L)\Ss   (?L)\Wz\p{Cyrillic}u   Ð�z(?i)\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\P{Cyrillic}r`   z\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\drW  r   rÃ   rˆ  z\Dz\Sz\Wz\p{L}rU   z\p{Lu}ú\p{Ll}r°  r"  ú\Xr   õ   aÌ€r&  õ   aÃ aÌ€eÃ©eÌ�©rU   rÔ  rè  Úeõ   Ã©u   eÌ�ú\X{3}õ   aÃ aÌ€õ   eÃ©eÌ�õ   
Ì�AÌ�©úri   u   Ì�u   AÌ�u   -09AZaz_Î“Î³s   -09AZaz_z#Ll Lm Lo Lt Lu Mc Me Mn Nd Nl No Pcu   09AZaz_Î“Î³z
[[:word:]]r—   z[[:^word:]]Ú09z[[:digit:]]u
   -AZaz_Î“Î³z[[:^digit:]]z[[:alpha:]]u   AZazÎ“Î³z[[:^alpha:]]z-09_z[[:alnum:]]u
   09AZazÎ“Î³z[[:^alnum:]]z-_z[[:xdigit:]]Ú09Aaz[[:^xdigit:]]u   -Zz_Î“Î³)z\p{InBasicLatin}õ   aÃ¡rU   )z\P{InBasicLatin}rõ  õ   Ã¡)z(?i)\p{InBasicLatin}rõ  rU   )z(?i)\P{InBasicLatin}rõ  rö  s   09AZaz_s   (?L)[[:word:]]ó   -s   (?L)[[:^word:]]s   09s   (?L)[[:digit:]]s   -AZaz_s   (?L)[[:^digit:]]s   (?L)[[:alpha:]]s   AZazs   (?L)[[:^alpha:]]s   -09_s   (?L)[[:alnum:]]s   09AZazs   (?L)[[:^alnum:]]s   -_s   (?L)[[:xdigit:]]s   09Aas   (?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:]]r   z
Failed: {}zFailed: {} raised {}z\p{NumericValue=0}z\p{NumericValue=1/2}õ   Â½z\p{NumericValue=0.5})r&   r)   r=   rú   r<   r+   ÚsetrÆ   r  r,   rÛ  Ú	ExceptionrÜ  )	r
   Úchars_uÚchars_bÚword_setÚtestsro   ÚcharsÚexpectedrë  r   r   r   Útest_properties÷  sZ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿÿÿþýüûúùø	÷
öõôóòñðïîìëêéèçæåäãâá à!ß#Ý$Ü%Û&Ú'Ù(Ø)×*Ö+Õ,Ô-Ó.Ò/Ñ0Ð2 €$€ÿÿÿÿÿÿzRegexTests.test_propertiesc                 C   sb   |   t dd¡dg¡ |   t dd¡ddg¡ |   t dd¡g d¢¡ |   t d	d¡g d
¢¡ d S )Nú\w+u    à¤¹à¤¿à¤¨à¥�à¤¦à¥€,õ   à¤¹à¤¿à¤¨à¥�à¤¦à¥€z\W+rÃ   ú,rÂ   )rÃ   r  r  z(?V1)\B)r¤   u    à¤¹u   à¤¿u   à¤¨u   à¥�u   à¤¦u   à¥€,r¤   )r&   r)   r+   rÆ   r>   r   r   r   Útest_word_class¯  s(   
ÿþ
ÿÿ
ÿÿ
ÿÿzRegexTests.test_word_classc                 C   s   |   t dd¡ddg¡ d S )Nú\G\w{2}úabcd efrä   rå   rÑ   r>   r   r   r   Útest_search_anchor¼  rÖ   zRegexTests.test_search_anchorc              	   C   s‚  |   t dd¡g d¢¡ |   tjdddd�g d¢¡ |   t dd¡dd	g¡ |   tjdddd�g d
¢¡ |   tjdddd�ddg¡ |   dd„ t dd¡D ƒg d¢¡ |   dd„ tjdddd�D ƒg d
¢¡ |   dd„ t dd¡D ƒg d¢¡ |   dd„ tjdddd�D ƒg d
¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   dd„ t dd¡D ƒg d¢¡ |   t dd ¡d!d"g¡ |   t d#d$¡d!d"g¡ |   t d%d ¡g ¡ |   t d&d ¡d'g¡ |   t d(d)¡g d*¢¡ |   t d+d)¡g d*¢¡ |   t d,d)¡g d-¢¡ |   t d.d)¡g d-¢¡ |   tjd/d$d0d1d2�d3d4g¡ |   tjd/d$d0d5d2�d3d4g¡ |   d6d„ tjd/d$d0d1d2�D ƒd3d4g¡ |   d7d„ tjd/d$d0d5d2�D ƒd3d4g¡ |   d8d„ tjdd$d0d1d2�D ƒd4d3g¡ |   d9d„ tjdd$d0d5d2�D ƒd4d3g¡ |   tjdd$d0d1d2�d4d3g¡ |   tjdd$d0d5d2�d4d3g¡ |   t d:d;tj¡d<d=g¡ |   t d>d;tj¡d=d<g¡ |   t d?d¡d	g¡ |   tjd?ddd�d	d!g¡ |   t d@dA¡dBdCg¡ |   t dDdA¡dEdFg¡ |   dGd„ t d?d¡D ƒd	g¡ |   dHd„ tjd?ddd�D ƒd	d!g¡ |   dId„ t d@dA¡D ƒdJdKg¡ |   dLd„ t dDdA¡D ƒdMdNg¡ |   t dOdO¡ ¡ dP¡ |   t dQdO¡ ¡ dP¡ |   t dRdS¡ ¡ dP¡ |   t dTdS¡ ¡ dP¡ |   t dUdVd¡d¡ |   t dWdVd¡d¡ d S )XNz(?r).rž   )rµ   r�   rU   T©Ú
overlappedú(?r)..Úabcderp  rÛ   ©rp  rå   rÛ   rä   ú(?r)(.)(-)(.)úa-b-c©r�   r—   rµ   ©rU   r—   r�   c                 S   r”  r•  r   r¿   r   r   r   rÁ   É  r—  z2RegexTests.test_search_reverse.<locals>.<listcomp>c                 S   r”  r•  r   r¿   r   r   r   rÁ   Ë  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   Í  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   Ï  r—  ú^|\w+úfoo bar©r¤   r‚  r„  ú
(?V1)^|\w+ú	(?r)^|\w+©r„  r‚  r¤   ú(?rV1)^|\w+c                 S   r”  r•  r   r¿   r   r   r   rÁ   Û  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   Ý  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ß  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   á  r—  r  r  rä   rå   z.{2}(?<=\G.*)r�  z(?r)\G\w{2}z(?r)\w{2}\GÚefzq*Úqqwe)Úqqr¤   r¤   r¤   z(?V1)q*z(?r)q*)r¤   r¤   r  r¤   z(?rV1)q*rI   r5   r6   ©r  r  r�   rµ   ra  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ó  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   õ  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ø  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ú  r—  z[ab]ÚaBrU   ÚBz(?r)[ab]z(?r).{2}ú(\w+) (\w+)zfirst second third fourth fifthrõ   )ÚthirdÚfourthz(?r)(\w+) (\w+))r!  Úfifth)rô   r   c                 S   r”  r•  r   r¿   r   r   r   rÁ     r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ     r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ     r—  rò   zthird fourthc                 S   r”  r•  r   r¿   r   r   r   rÁ     r—  zfourth fifthzsecond thirdrý   r2  z
(?r)abcdefz
(?i)abcdefÚABCDEFz(?ir)abcdefú(.)r„   ú(?r)(.))r&   r)   r+   r˜  rm   r;   r<   rc   r>   r   r   r   Útest_search_reverse¿  s  ÿÿÿ"ÿÿ"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_search_reversec                 C   s   |   t dd¡d ¡ d S )Nz(?>a*)arî   r;  r>   r   r   r   Útest_atomic!  s   zRegexTests.test_atomicc                 C   sd  |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t d	d
¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd
¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ d S )Nza?arU   r   za*ar7   r9   za+aza{1,3}az	(?:ab)?abrä   r&  z	(?:ab)*abÚabababr2  z	(?:ab)+abz(?:ab){1,3}abza?+aza*+aza++aza{1,3}+az
(?:ab)?+abz
(?:ab)*+abz
(?:ab)++abz(?:ab){1,3}+ab©r&   r)   r;   r<   r>   r   r   r   Útest_possessive%  s    zRegexTests.test_possessivec                 C   sª  t jdkr|  t dd¡g d¢¡ n|  t dd¡dg¡ |  t dd¡g d¢¡ |  t dd¡g d¢¡ |  d	d
„ t dd¡D ƒg d¢¡ |  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ |  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ |  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ t jdkrÀ|  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ n|  t dd¡dg¡ |  dd
„ t dd¡D ƒdg¡ t jdkrþ|  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ n|  t dd¡dg¡ |  dd
„ t dd¡D ƒdg¡ |  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ |  t dd¡g d¢¡ |  dd
„ t dd¡D ƒg d¢¡ d S )Nr–   z\br  )r¤   rU   rÃ   r�   r¤   rÂ   r  r  r  c                 S   r”  r•  r   r¿   r   r   r   rÁ   L  r—  z-RegexTests.test_zerowidth.<locals>.<listcomp>r  r  c                 S   r”  r•  r   r¿   r   r   r   rÁ   P  r—  r  c                 S   r”  r•  r   r¿   r   r   r   rÁ   T  r—  r  c                 S   r”  r•  r   r¿   r   r   r   rÁ   X  r—  r¤   r½   )r¤   r!   rU   r!   r�   r!   rµ   r¤   c                 S   r¾   r   r   r¿   r   r   r   rÁ   ^  rp   c                 S   r¾   r   r   r¿   r   r   r   rÁ   b  rp   z(?r))r¤   rµ   r!   r�   r!   rU   r!   r¤   c                 S   r¾   r   r   r¿   r   r   r   rÁ   h  rp   c                 S   r¾   r   r   r¿   r   r   r   rÁ   l  rp   z(?V1)c                 S   r¾   r   r   r¿   r   r   r   rÁ   q  rp   z(?rV1)c                 S   r¾   r   r   r¿   r   r   r   rÁ   v  rp   )rš   r›   r&   r)   rÆ   r+   r˜  rÇ   r>   r   r   r   Útest_zerowidth?  s\   
ÿÿÿÿÿÿÿ
$ÿ
ÿÿ"&zRegexTests.test_zerowidthc                 C   sð   |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ |  tj| jdd„ ¡ |   t d	d¡d ¡ |   t d
d¡d ¡ |   tjddtjd�d ¡ |   tjddtjd�d ¡ |   tjddtjd� ¡ d¡ d S )Nz(?i)Abrä   r&  z(?i:A)bzA(?i)bzA(?iV1)bc                   S   s   t jddt jd�S )Nz	(?V0-i)Abrä   r  rq   r   r   r   r   rN   €  s   z9RegexTests.test_scoped_and_inline_flags.<locals>.<lambda>z(?V0)Abz(?V1)Abz	(?V1-i)Abr  z(?-i:A)bz	A(?V1-i)b)r&   r)   r;   r<   rs   r�   ÚCANT_TURN_OFFrm   r>   r   r   r   Útest_scoped_and_inline_flagsy  s   ÿÿz'RegexTests.test_scoped_and_inline_flagsc                 C   sL   |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ d S )Nz(?:a+)+r7   r9   z(?:(?:ab)+c)+Úabcabcr2  z
(?:a+){2,}r)  r>   r   r   r   Útest_repeated_repeatsŠ  s   z RegexTests.test_repeated_repeatsc                 C   sD  |   t dd¡ ¡ d¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡ ¡ d¡ |   tt dd¡ƒd¡ |   t d	d¡d ¡ |   tt d
d¡ƒd¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   t dd¡d ¡ |   tt dd¡ƒd¡ |   ttt d¡ƒƒ| j	¡ d S )Nz123(?<=a\d+)Úa123©r5   r®   Úb123z123(?<!a\d+)z(a)b(?<=b)(c)rž   Tz(a)b(?<=c)(c)z(a)b(?=c)(c)z(a)b(?=b)(c)z(?:(a)|(x))b(?<=(?(2)x|c))cz(?:(a)|(x))b(?<=(?(2)b|x))cz(?:(a)|(x))b(?<=(?(2)x|b))cz(?:(a)|(x))b(?<=(?(1)c|x))cz(?:(a)|(x))b(?<=(?(1)b|x))cz(?:(a)|(x))b(?=(?(2)x|c))cz(?:(a)|(x))b(?=(?(2)c|x))cz(?:(a)|(x))b(?=(?(1)b|x))cz(?:(a)|(x))b(?=(?(1)c|x))cz(a)b(?<=(?(2)x|c))(c)z(a)b(?<=(?(2)b|x))(c)z(a)b(?<=(?(1)c|x))(c)z(a)b(?<=(?(1)b|x))(c)z(a)b(?=(?(2)x|c))(c)z(a)b(?=(?(2)b|x))(c)z(a)b(?=(?(1)c|x))(c)z(a)\2(b))
r&   r)   r;   r<   rú   r=   rw   r   r*   rx   r>   r   r   r   Útest_lookbehind“  s€   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_lookbehindc                 C   sî   t jdkr|  t ddd¡d¡ n|  t ddd¡d¡ |  t ddd¡d¡ t jdkr8|  t ddd¡d	¡ n|  t ddd¡d
¡ |  t ddd¡d	¡ t jdkr_|  t ddd¡d¡ n|  t ddd¡d¡ |  t ddd¡d¡ d S )Nr–   z(?V0)(x)?(y)?z\2-\1rÙ  zy-x-zy-xz(?V1)(x)?(y)?r!   z-x-z-xr"   zy--zy-r™   r>   r   r   r   Útest_unmatched_in_subÃ  s    
ÿÿ

z RegexTests.test_unmatched_in_subc                 C   s¬   t  d¡}tjdkr|  | dd„ d¡d¡ n|  | dd„ d¡d¡ |  d	d
„ | d¡D ƒddg¡ t  d¡}|  | dd„ d¡d¡ |  dd
„ | d¡D ƒddg¡ d S )NzD(?mV0)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)r–   c                 S   ó   d| j  d S ©Nú<ú>©rh  rL   r   r   r   rN   Ü  rr   z+RegexTests.test_bug_10328.<locals>.<lambda>zfoobar )z%foobar<trailing_ws><no_final_newline>r¬   c                 S   r5  r6  r9  rL   r   r   r   rN   ß  rr   )zfoobar<trailing_ws>r5   c                 S   ó   g | ]}|  ¡ ‘qS r   ©rŸ   r¿   r   r   r   rÁ   á  r—  z-RegexTests.test_bug_10328.<locals>.<listcomp>rÃ   r¤   zD(?mV1)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)c                 S   r5  r6  r9  rL   r   r   r   rN   ä  rr   c                 S   r:  r   r;  r¿   r   r   r   rÁ   æ  r—  )r)   r*   rš   r›   r&   r°   r˜  rt  r   r   r   Útest_bug_10328Ø  s0   

ÿÿÿÿÿ
ÿÿ
ÿzRegexTests.test_bug_10328c                 C   sd  |   t dd¡ddg¡ |   tjdddd�g d¢¡ |   t dd¡d	d
g¡ |   tjdddd�g d¢¡ |   tjdddd�ddg¡ |   dd„ t dd¡D ƒddg¡ |   dd„ tjdddd�D ƒg d¢¡ |   dd„ t dd¡D ƒd	d
g¡ |   dd„ tjdddd�D ƒg d¢¡ |   dd„ tjdddd�D ƒddg¡ |   dd„ tjdddd�D ƒddg¡ d S )Nú..r  rä   rå   Tr	  )rä   rÛ   rå   rp  r  rp  rÛ   r  z	(.)(-)(.)r  r  r  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ó  r—  z.RegexTests.test_overlapped.<locals>.<listcomp>c                 S   r”  r•  r   r¿   r   r   r   rÁ   õ  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ÷  r—  c                 S   r”  r•  r   r¿   r   r   r   rÁ   ù  r—  c                 S   r:  r   ©r  r¿   r   r   r   rÁ   ü  r—  c                 S   r:  r   r>  r¿   r   r   r   rÁ   þ  r—  r  )r&   r)   r+   r˜  r>   r   r   r   Útest_overlappedé  sF   ÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_overlappedc                 C   s>   |   t dd¡g d¢¡ |   dd„ t dd¡D ƒg d¢¡ d S )Nr  za,b,,c,)rU   r�   r¤   rµ   r¤   c                 S   r¾   r   r   r¿   r   r   r   rÁ     rp   z-RegexTests.test_splititer.<locals>.<listcomp>)r&   r)   rÆ   rÇ   r>   r   r   r   Útest_splititer  s   &zRegexTests.test_splititerc                 C   s|   |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡g d¢¡ |   t dd¡d	d
g¡ |   t dd¡g d¢¡ d S )Nrç  rÔ  r   rè  r&  ré  rê  rí  rî  rï  rð  rñ  )r&   r)   r=   r<   r+   r>   r   r   r   Útest_grapheme  s   
ÿÿ
ÿÿÿzRegexTests.test_graphemec                 C   s    d}|   t d|¡g d¢¡ |   t d|¡g d¢¡ d}|   t d|¡g d¢¡ |   t d|¡g d¢¡ d}|   t d|¡g d	¢¡ |   t d|¡g d
¢¡ d S )Nz4The quick ("brown") fox can't jump 32.3 feet, right?rÂ   )r¤   ÚTherÃ   Úquickz ("Úbrownz") ÚfoxrÃ   Úcanú'ÚtrÃ   ÚjumprÃ   Ú32rI   Ú3rÃ   Úfeetú, Úrightrˆ  z(?V1w)\b)r¤   rB  rÃ   rC  rÃ   râ   ú"rD  rO  ú)rÃ   rE  rÃ   úcan'trÃ   rI  rÃ   z32.3rÃ   rL  r  rÃ   rN  rˆ  r¤   zThe  fox)r¤   rB  z  rE  r¤   zcan't aujourd'hui l'objectif)r¤   rF  rG  rH  rÃ   ÚaujourdrG  ÚhuirÃ   ÚlrG  Úobjectifr¤   )r¤   rQ  rÃ   zaujourd'huirÃ   z
l'objectifr¤   )r&   r)   rÆ   ©r
   Útextr   r   r   Útest_word_boundary  s   zRegexTests.test_word_boundaryc                 C   s¶  |   t dd¡ddg¡ |   t dd¡dg¡ |   t dd¡ddg¡ |   t d	d¡ddg¡ |   t d	d¡ddg¡ |   t d	d¡ddg¡ |   t d
d¡ ¡ d¡ |   t d
d¡d ¡ |   t d
d¡d ¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ |   t dd¡d ¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡d ¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ d S )Nz.+zLine 1
Line 2
zLine 1zLine 2zLine 1Line 2zLine 1
Line 2
zLine 1zLine 2z(?w).+ú^abcrž   r   z
abczabcz(?w)^abcúabc$zabc
zabcz(?w)abc$ú(?m)^abcr5   z	(?mw)^abcú(?m)abc$z	(?mw)abc$)r&   r)   r+   r;   rc  r>   r   r   r   Útest_line_boundary*  sT   ÿÿÿÿÿÿzRegexTests.test_line_boundaryc                 C   s@  |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d	¡ |   t dd
¡ ¡ d¡ |   t dd¡ ¡ d	¡ |   t dd
¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ dgdgdœ¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d d!gg dœ¡ d S )"Nz(?:(a)|(b))(c)rÚ   rß   rÛ   rÃ  z(?:(?<a>a)|(?<b>b))(?<c>c)z!(?<a>a)(?:(?<b>b)|(?<c>c))(?<d>d)rè   )rU   r�   Nræ   Úacd)rU   Nrµ   ræ   z(a)(?:(b)|(c))(d)z(a)(?|(b)|(b))(d))rU   r�   ræ   z(?|(?<a>a)|(?<b>b))(c)z(?|(?<a>a)|(?<a>b))(c))rU   rµ   )r�   rµ   z$(?|(?<a>a)(?<b>b)|(?<b>c)(?<a>d))(e)Úabe)rU   r�   rë  ro  )ræ   rµ   rë  z (?|(?<a>a)(?<b>b)|(?<b>c)(d))(e)z(?|(?<a>a)(?<b>b)|(c)(d))(e))rµ   ræ   rë  z (?|(?<a>a)(?<b>b)|(c)(?<a>d))(e)rU   r�   )rU   r�   )ræ   Nrë  rµ   ræ   )r&   r)   r=   r  Úcapturesdictr>   r   r   r   Útest_branch_resetT  sº   
ÿÿ
ÿÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿzRegexTests.test_branch_resetc                 C   s  |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd¡ ¡ d¡ |   t dd	d
¡d¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡ddg¡ |   t dd¡ddg¡ |   t dd¡ddg¡ |   t dd¡ddg¡ |   t dd¡g d¢¡ |   t dd¡g d¢¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ |   d  t d!d"¡¡d#¡ |   d  t d$d"¡¡d%¡ |   d  t d&d'¡¡d(¡ |   d  t d)d*¡¡d+¡ |   d  t d,d*¡¡d+¡ |   d  t d-d.¡¡d*¡ d  d/d0„ td1ƒD ƒ¡}|   tt d2|¡ƒd3¡ |   tt d4|¡ƒd5¡ |   tt d6|¡ƒd7¡ |   tt d8|¡ƒd9¡ |   tt d:|¡ƒd9¡ |   tt d;|¡ƒd7¡ |   tt d<|¡ƒd=¡ |   tt d>|¡ƒd?¡ |   tt d@|¡ƒdA¡ |   tt dB|¡ƒdC¡ |   tt dD|¡ƒdC¡ |   tt dE|¡ƒdF¡ |   tt dG|¡ƒdH¡ |   tt dI|¡ƒdH¡ |   t	t
t dJ¡ƒƒ| j¡ |   t dKdL¡ddMg¡ |   t dNdL¡ddMg¡ |   t dOdL¡ddMg¡ |   t dPdL¡ddMg¡ d S )QNz[a]rU   r   z(?i)[a]r`   z[a-b]z	(?i)[a-b]z(?V0)([][])r—   za[b]cr  z[\p{Alpha}]Úa0z(?i)[\p{Alpha}]ÚA0z[a\p{Alpha}]Úab0r�   z[a\P{Alpha}]rW  z(?i)[a\p{Alpha}]z(?i)[a\P{Alpha}]z[a-b\p{Alpha}]ÚabC0)rU   r�   ÚCz(?i)[a-b\p{Alpha}]ÚAbC0)r`   r�   rf  z[\P{Alpha}]z[^\p{Alpha}]z[^\P{Alpha}]r¤   z[^\d-h]za^b12c-hza^bcz[^\dh]za^bc-z	[^h\s\db]z	a^b 12c-hza^c-z[^b\w]r  rÃ   z[^b\S]z[^8\d]za 1b2c                 s   ó   � | ]}t |ƒV  qd S r   ©rd   ©rÀ   rµ   r   r   r   Ú	<genexpr>°  ó   € z&RegexTests.test_set.<locals>.<genexpr>r?  z	\p{ASCII}rU  z
\p{Letter}éu   z	\p{Digit}rX   z(?V1)[\p{ASCII}&&\p{Letter}]é4   z'(?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}]rT  z(?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]]rž   rµ   z(?iV1)[[a-z]--[aei]]z(?V1)[\w--a]z(?iV1)[\w--a])r&   r)   r=   r<   rc   r+   r  rB  Úlenrw   r   r*   rx   )r
   Ú	all_charsr   r   r   Útest_setŠ  sÎ   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_setc              
   C   s@(  g dddt j| jf‘dddt j| jf‘dddt j| jf‘dddt j| jf‘dddt j| jf‘ddd	td
ƒf‘dddt j| jf‘dddt j| jf‘dddt j| jf‘dddt j| jf‘dd
d	td
ƒf‘ddd	td
ƒf‘dddtd ƒf‘ddd	td
ƒf‘dddtd ƒf‘dddt j| jf‘dd
d	td
ƒf‘ddd	td
ƒf‘dd
dt j| jf‘d‘dtdƒd dttdƒd ƒf‘dd
dtd
ƒf‘ddd td!ƒf‘d"d#dtd#ƒf‘d$d#dtd#ƒf‘d%d#dtd#ƒf‘d&d#dtd ƒf‘d'd(dtd(ƒf‘d)d(dtd(ƒf‘d*d+dtd+ƒf‘d,d-dttd.ƒƒf‘d/d-dtd ƒf‘d0d1dtd ƒf‘d2d3dtd ƒf‘d4d-dtd ƒf‘d5d6dtd6ƒf‘d7d6dtd6ƒf‘d8d9dttd:ƒtd;ƒ td<ƒ td=ƒ td>ƒ td?ƒ ƒf‘d@dAdtdAƒf‘dBdCdtdDƒf‘dEdFdtdFƒf‘dEdGdtd ƒf‘dHdIdtd ƒf‘dJdIdtd ƒf‘dEdKdtdKƒf‘dLdGdtdGƒf‘dMdGdtd ƒf‘dNdGdtdGƒf‘dOdIdtdIƒf‘dPdIdtd ƒf‘dQdIdtdIƒf‘dRdIdtdIƒf‘dSddt j| j	f‘dT‘dUdUdtdUƒf‘dUdVdtd ƒf‘dUdWdtd ƒf‘dUdXdtd ƒf‘dUdYdtdUƒf‘dUdZdtdUƒf‘d[dUdtdUƒf‘d\dUdtdUƒf‘d\d]dtd]ƒf‘d\d^dtd^ƒf‘d_d]dtd]ƒf‘d_dUdtd ƒf‘d_d`dtd ƒf‘d_d^dtd^ƒf‘dad]dtd]ƒf‘dadUdtdUƒf‘dad^dtd ƒf‘dbdUdtdUƒf‘dcdUdtdUƒf‘dcdddtd ƒf‘dedddtdUƒf‘dcdfdtd ƒf‘dgdfdtdUƒf‘dhdUdtdƒf‘didUdtdƒf‘djdUdtdUƒf‘djdWdtdWƒf‘dkdldtdlƒf‘dkdmdtd ƒf‘dndUdtd ƒf‘dndodtdoƒf‘dpdodtd ƒf‘dpdqdtdqƒf‘drdsdtdtƒf‘dudvdtdvƒf‘dwdvdtdvƒf‘dxdvdtdvƒf‘dydzdt j| j
f‘d{dzdt j| j
f‘d|dzdt j| jf‘d}dzdt j| j	f‘d~dzdt j| jf‘dddtdƒf‘d€d�dtd�ƒf‘d€d�dtd�ƒf‘d‚dƒdtdƒƒf‘d‚dodtd ƒf‘d„d…dtd…ƒf‘d„d†dtd ƒf‘d‡dˆdtd ƒf‘d‡d…dtd…ƒf‘d‰dvdtd
ƒf‘d‰dŠdtd
ƒf‘d‰d‹dtd
ƒf‘dŒd�dtd ƒf‘dŒdŽdtd ƒf‘dŒd�dtd ƒf‘d�d�dtd ƒf‘d‘d�dtd’ƒf‘d“d�dtd”ƒf‘d•d�dtd ƒf‘d–d�dtd ƒf‘d—dvdtd ƒf‘d—dŠdtd ƒf‘d—d‹dtd ƒf‘d˜d�dtd ƒf‘d˜dŽdtd ƒf‘d™d�dtdšƒf‘d›dŽdtdšƒf‘d˜d�dtdšƒf‘dœdUdtd�ƒf‘dœdždtd�ƒf‘dŸd d¡td¢ƒf‘d£d¤dtd ƒf‘d¥d¦dtd§ƒf‘d¨d�dtd�ƒf‘d¨d©dtd©ƒf‘dªd«dtd«ƒf‘d¬dUd­td®ƒf‘d¯dUd­td°ƒf‘d±d²dtdUƒf‘d³d�d¡td´ƒf‘dµd�d¡td´ƒf‘d¶d�d¡td·ƒf‘d¸dzdt j| j	f‘d¹dºdtdºƒf‘dUddtd ƒf‘d»ddtdƒf‘d¼d½dtd½ƒf‘d¾d¿d¡tdÀƒf‘dÁdÂdtdÂƒf‘dÃdÄdtd�ƒf‘dÃdÅdtd
ƒf‘dÆdÇd¡tdÈƒf‘dÉdÊdtdÊƒf‘dËdÇdtd ƒf‘dÌdÍd¡td¢ƒf‘dÎdžd¡tdÏƒf‘dÐdUd¡tdÑƒf‘dÒdUd¡tdÓƒf‘dÔdžd­tdÕƒf‘dÖdžd­tdÕƒf‘d×džd­tdØƒf‘dÙdÚdtdÚƒf‘dÛdÚdtd ƒf‘dÜdUd¡tdÝƒf‘dÞdždßtdàƒf‘dádâdtdâƒf‘dãdäd¡tdåƒf‘dædçd­tdèƒf‘dædéd­tdêƒf‘dædëdtd ƒf‘dædìdtd ƒf‘dædíd­tdèƒf‘dîd
dtd
ƒf‘dïdðdtd ƒf‘dñdòdtdñƒf‘dódÇd­tdôƒf‘dõdöd÷tdøƒf‘dùd�dtd ƒf‘dúdtdtdtƒf‘dûdüd	tdUƒf‘dýdüd	tdUƒf‘dþdÿd	t�d ƒf‘�d�dd¡t�dƒf‘�d�ddtd ƒf‘dûdüd¡t�dƒf‘�ddüd¡t�dƒf‘�ddd¡t�d	ƒf‘�d
dd¡t�d	ƒf‘�ddd¡t�d	ƒf‘�d�dd¡t�dƒf‘�d�dd¡t�dƒf‘�d�dd¡t�dƒf‘�d�dd¡t�dƒf‘�d�dd¡t�dƒf‘�ddüd¡t�dƒf‘�dd�d­t�dƒf‘�d�dd¡t�dƒf‘�d�dd¡t�dƒf‘�d�dd¡t�d ƒf‘�d!�d"�d#t�d$ƒf‘�d%�d&d¡t�d'ƒf‘�d%�d(d¡t�d)ƒf‘�d*�d+d¡t�d,ƒf‘�d*dUdtd ƒf‘�d-�d+d¡t�d.ƒf‘�d/dsd¡t�d0ƒf‘�d1�ddt j| jf‘�d2�d�d3t�d4ƒf‘�d5�d�d3t�d6ƒf‘�d7�ddt j| jf‘�d8�d9dt�d9ƒf‘�d:�d9dt j| jf‘�d;�d<dt�d<ƒf‘�d;�d<dt�d=ƒf‘�d>�d?dt�d?ƒf‘�d@d
dtd
ƒf‘�dA�dBdt�dBƒf‘�dCd
dtd
ƒf‘�dD�dEdt�dEƒf‘�dF�dBdt�dBƒf‘dUdUdtdUƒf‘dUdVdtd ƒf‘dUdWdtd ƒf‘dUdXdtd ƒf‘dUdYdtdUƒf‘dUdZdtdUƒf‘d[dUdtdUƒf‘d\dUdtdUƒf‘d\d]dtd]ƒf‘d\d^dtd^ƒf‘�dGd^dtd^ƒf‘d_d]dtd]ƒf‘d_dUdtd ƒf‘d_d`dtd ƒf‘�dHd`dtd ƒf‘d_d^dtd^ƒf‘�dHd^dtd^ƒf‘�dId^dtd^ƒf‘�dJd^dtd^ƒf‘�dKd^dtd ƒf‘dad]dtd]ƒf‘dadUdtdUƒf‘�dLdUdtdUƒf‘dad^dtd ƒf‘dbdUdtdUƒf‘�dMdUdtdUƒf‘dcdUdtdUƒf‘dcdddtd ƒf‘dedddtdUƒf‘dcdfdtd ƒf‘dgdfdtdUƒf‘dhdUdtdƒf‘didUdtdƒf‘djdUdtdUƒf‘djdWdtdWƒf‘dkdldtdlƒf‘dkdmdtd ƒf‘dndUdtd ƒf‘dndodtdoƒf‘dpdodtd ƒf‘dpdqdtdqƒf‘drdsdtdtƒf‘dudvdtdvƒf‘dxdvdtdvƒf‘�dNdzdt j| jf‘dydzdt j| j
f‘d{dzdt j| j
f‘dddtdƒf‘d€d�dtd�ƒf‘d‚dƒdtdƒƒf‘d‚dodtd ƒf‘d„d…dtd…ƒf‘d„d†dtd ƒf‘d‡dˆdtd ƒf‘d‡d…dtd…ƒf‘dœdUdtd�ƒf‘dœdždtd�ƒf‘dŸd d¡td¢ƒf‘�dOdzdt j| jf‘�dPdzdt j| jf‘d£d¤dtd ƒf‘d|dzdt j| jf‘d¥d¦dtd§ƒf‘d¨d�dtd�ƒf‘d¨d©dtd©ƒf‘dªd«dtd«ƒf‘d}dzdt j| j	f‘d~dzdt j| jf‘d¬dUd­td®ƒf‘d¯dUd­td°ƒf‘d±d²dtdUƒf‘�dQd²dtdUƒf‘�dRdzdt j| jf‘�dSdüdtdUƒf‘d³d�d¡td´ƒf‘�dTd�d¡td´ƒf‘dµd�d¡td´ƒf‘�dUd�d¡td´ƒf‘d¶d�d¡td·ƒf‘�dVd�d¡td·ƒf‘d¸dzdt j| j	f‘d¹dºdtdºƒf‘dUddtd ƒf‘d»ddtdƒf‘�dW�dXd¡t�dYƒf‘�dZdžd¡t�d[ƒf‘d¼d½dtd½ƒf‘d¾d¿d¡tdÀƒf‘dÁdÂdtdÂƒf‘dÃdÄdtd�ƒf‘dÃdÅdtd
ƒf‘dÆdÇd¡tdÈƒf‘dÉdÊdtdÊƒf‘dËdÇdtd ƒf‘dÌdÍd¡td¢ƒf‘dÎdžd¡tdÏƒf‘dÐdUd¡tdÑƒf‘dÒdUd¡tdÓƒf‘dÔdžd­tdÕƒf‘dÖdžd­tdÕƒf‘d×džd­tdØƒf‘dÙdÚdtdÚƒf‘dÛdÚdtd ƒf‘dÜdUd¡tdÝƒf‘dÞdždßtdàƒf‘dádâdtdâƒf‘dãdäd¡tdåƒf‘dædçd­tdèƒf‘dædéd­tdêƒf‘dædëdtd ƒf‘dædìdtd ƒf‘dædíd­tdèƒf‘�d\d
�d]td
ƒf‘�d^ddtdƒf‘�d_ddt j| jf‘�d`ddt j| jf‘dîd
dtd
ƒf‘dïdðdtd ƒf‘dñdòdtdñƒf‘dódÇd­tdôƒf‘dõdöd÷tdøƒf‘dùd�dtd ƒf‘dúdtdtdtƒf‘dûdüd	tdUƒf‘dýdüd	tdUƒf‘�da�dbdt�dbƒf‘�da�dcdtd ƒf‘�da�dddtd ƒf‘�da�dedtd ƒf‘�da�dfdt�dbƒf‘�da�dgdt�dbƒf‘�dh�dbdt�dbƒf‘�di�dbdt�dbƒf‘�di�djdt�djƒf‘�dk�dldt�dlƒf‘�dm�dldt�dlƒf‘�dn�djdt�djƒf‘�do�dbdtd ƒf‘�do�dpdtd ƒf‘�dq�dpdtd ƒf‘�do�dldt�dlƒf‘�dr�dldt�dlƒf‘�ds�dldt�dlƒf‘�dt�dldt�dlƒf‘�du�dldtd ƒf‘�dv�djdt�djƒf‘�dv�dbdt�dbƒf‘�dw�dbdt�dbƒf‘�dv�dldtd ƒf‘�dx�dbdt�dbƒf‘�dy�dbdt�dbƒf‘�dz�dbdt�dbƒf‘�dz�d{dtd ƒf‘�d|�d{dt�dbƒf‘�dz�d}dtd ƒf‘�d~�d}dt�dbƒf‘�d�dbdtdƒf‘�d€�dbdtdƒf‘�d��dbdt�dbƒf‘�d��dddt�ddƒf‘�d‚�dƒdt�dƒƒf‘�d„�d…dtd ƒf‘�d†�dbdtd ƒf‘�d†�d‡dt�d‡ƒf‘�dˆ�d‡dtd ƒf‘�dˆ�d‰dt�d‰ƒf‘�dŠ�d‹dt�dŒƒf‘�d��dŽdt�dŽƒf‘�d��dŽdt�dŽƒf‘�d�dzdt j| jf‘�d‘dzdt j| j
f‘�d’dzdt j| j
f‘�d“�d”dt�d”ƒf‘�d•�d–dt�d–ƒf‘�d—�d˜dt�d˜ƒf‘�d—�d‡dtd ƒf‘�d™�dšdt�dšƒf‘�d™�d›dtd ƒf‘�dœ�d�dtd ƒf‘�dœ�dšdt�dšƒf‘�dž�dbdtdÿƒf‘�dž�dŸdtdÿƒf‘�d �d¡d¡t�d¢ƒf‘�d£dzdt j| jf‘�d¤dzdt j| jf‘�d¥�d¦dtd ƒf‘�d§dzdt j| jf‘�d¨�d©dt�dªƒf‘�d«dÿdtdÿƒf‘�d«�d¬dt�d¬ƒf‘�d­�d®dt�d®ƒf‘�d¯dzdt j| j	f‘�d°dzdt j| jf‘�d±�dbd­t�d²ƒf‘�d³�dbd­t�d´ƒf‘�dµ�d¶dt�dbƒf‘�d·�d¶dt�dbƒf‘�d¸dzdt j| jf‘�d¹�dºdt�dbƒf‘�d‚�dºdt�dbƒf‘�d»�dºdt�dbƒf‘�d¼dÿd¡t�d½ƒf‘�d¾dÿd¡t�d½ƒf‘�d¿dÿd¡t�d½ƒf‘�dÀdÿd¡t�d½ƒf‘�dÁdÿd¡t�dÂƒf‘�dÃdÿd¡t�dÂƒf‘�dÄdÿd¡t�dÅƒf‘�dÆdzdt j| j	f‘�dÇ�dÈdt�dÈƒf‘�daddtd ƒf‘�dÉddtdƒf‘�dÊ�dËd¡t�dÌƒf‘�dÍ�dŸd¡t�dÎƒf‘�dÏ�dÐdt�dÐƒf‘�dÑ�dÒd¡t�dÓƒf‘�dÔ�dÕdt�dÕƒf‘�dÖ�d×dtdÿƒf‘�dÖ�dØdt�d ƒf‘�dÙ�dÚd¡t�dÛƒf‘�dÜ�dÝdt�dÝƒf‘�dÞ�dÚdtd ƒf‘�dß�dàd¡t�d¢ƒf‘�dá�dŸd¡t�dâƒf‘�dã�dbd¡t�däƒf‘�då�dbd¡t�dæƒf‘�dç�dŸd­t�dèƒf‘�dé�dŸd­t�dèƒf‘�dê�dŸd­t�dëƒf‘�dì�dídt�díƒf‘�dî�dídtd ƒf‘�dï�dbd¡t�dðƒf‘�dñ�dŸdßt�dòƒf‘�dó�dôdt�dôƒf‘�dõ�död¡t�d÷ƒf‘�dø�dùd­t�dúƒf‘�dø�dûd­t�düƒf‘�dø�dýdtd ƒf‘�dø�dþdtd ƒf‘�dø�dÿd­t�dúƒf‘�d �d �d]t�d ƒf‘�d�ddt�dƒf‘�d�d dt�d ƒf‘�d�d d	t�d ƒf‘�d�dd	t�dƒf‘�d�ddtd ƒf‘�d	�d
dt�dƒf‘�d�dÚd­t�dƒf‘�d�dd÷t�dƒf‘�ddÿdtd ƒf‘�d�dŒdt�dŒƒf‘�d�dºd	t�dbƒf‘�d�dºd	t�dbƒf‘�d�ddt�dƒf‘�d�ddt�dƒf‘�d�ddt�dƒf‘�ddqd	td½ƒf‘�ddqd	td½ƒf‘�ddqd	td½ƒf‘�ddq�dt�dƒf‘�d �d!d	t�d"ƒf‘�d#�d$d	t�d%ƒf‘�d&�d'd	t�d(ƒf‘�d)�d*dt j| jf‘�d+�d,dt�d,ƒf‘�d-�d.dt�d.ƒf‘�d/�d.dtd ƒf‘�d-�d*dt�d*ƒf‘�d/�d*dt�d*ƒf‘�d0�d.dt�d.ƒf‘�d1�d.dt�d.ƒf‘�d2�d,dt�d,ƒf‘de�d3dtd ƒf‘�d4�d3dtdUƒf‘�d5�d6dtdUƒf‘dEdGdtd ƒf‘dNdGdtdGƒf‘�d7�d8dt�d9ƒf‘�d:�d8dt�d9ƒf‘�d;�d<dtdUƒf‘�d=�d<dtdUƒf‘�d>�d?dt�d?ƒf‘�d@�dA�dBt�dCƒf‘�dD�dA�dBt�dCƒf‘�dE�dF�dGt�dHƒf‘�dIddt j| jf‘�dJ�dKdtdoƒf‘�dLddt j| jf‘�dM�dNdt�dNƒf‘�dOd’dtd’ƒf‘�dP�dQdt�dQƒf‘�dR�dQdtd ƒf‘�dS�dQdt�dQƒf‘�dT�dQdt�dQƒf‘�dU�dQdt�dQƒf‘�dV�dQdt�dQƒf‘�dW�dXdt�dYƒf‘�dZ�d[dt�d[ƒf‘�d\�d]dt�d]ƒf‘�d^�d_dt�d_ƒf‘�d^�d`dt�d`ƒf‘�da�dbd	tdƒf‘�dc�dddt�ddƒf‘�de�dddt�ddƒf‘�df�dddt�ddƒf‘�dg�dddt�ddƒf‘�dh�didt�diƒf‘�dj�dkdtd ƒf‘�dl�dmdtd ƒf‘�dn�dQdtd ƒf‘�dod��dGt�dpƒf‘�dqdU�dt�drƒf‘�dsdU�dt�drƒf‘�dtdU�dt�drƒf‘�dud
dtd
ƒf‘�du�dvdt�dvƒf‘�dw�dvdt�dvƒf‘}|D ]Í}d }zt|ƒ�dxk�rd|\}}}}n|\}}}}}W n* t�y–   �dy �dz�d{„ |d �d|… D ƒ�d}g ¡}|  �d~ |¡¡ Y �qPw g }	|�r¿| �d¡D ]}
z
|	 t|
ƒ¡ W �q¢ t�y¾   |	 |
¡ Y �q¢w |d u�rõtjjtjjf�d€k�ró| j||�d��� |  ||t j||¡ W d   ƒ n	1 �sîw   Y  �qPt  ||¡}|�r|	�r	t|j|	Ž ƒ}nt|d d … ƒ}nt|ƒ}|   ||¡ �qPd S (‚  Nz(?P<foo_123r¤   z(?P<1>a)z(?P<!>a)z(?P<foo!>a)z(?P<foo_123>a)(?P=foo_123rî   z(?P<foo_123>a)(?P=1)Ú1rU   z(?P<foo_123>a)(?P=0)z(?P<foo_123>a)(?P=-1)z(?P<foo_123>a)(?P=!)z(?P<foo_123>a)(?P=foo_124)z(?P<foo_123>a)z(?P<foo_123>a)(?P=foo_123)z(?<foo_123>a)\g<foo_123z(?<foo_123>a)\g<1>z(?<foo_123>a)\g<!>z(?<foo_123>a)\g<foo_124>z(?<foo_123>a)z(?<foo_123>a)\g<foo_123>r„   )ú[\1]r|   rW  z'\x01'r€   r   Ú9rW  z\141z((a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\119Úabcdefghijklk9z0,11)ry  Úkrz   r{   z[\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\h\i\j\k\o\p\q\y\zÚceghijkopqyzz\xffr�   rV  z\x00ffffffffffffffz\x00fúz\x00feõ   Ã¾z\x00ffz\t\n\v\r\f\a\gz	
gz	
\gz\t\n\v\r\f\arV   rW   rX   rY   rZ   r[   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 \\r  Úacbr  r  zacc
ccbza.{4,5}bzabza.b(?s)z	a.b(?sV1)z(?s)a.bza.*(?s)bz
a.*(?sV1)bz(?s)a.*bz(?s)a.{4,5}brP  )r¤   r¤   rW  z''rž   ÚxbcÚaxcÚabxÚxabcyÚababczab*czab*bcÚabbcÚabbbbczab+bcÚabqzab?bczab?cr  ÚabccrY  ÚaabcrZ  ú^r´  za.cza.*cÚaxyzcÚaxyzdza[bc]drè   za[b-d]eÚaceza[b-d]ÚaacrÚ   za[-b]úa-za[\-b]za[b-]za[]br—   za[za\zabc)z(abcza]za[]]bza]bza[^bc]dÚaedza[^-b]cÚadcza-cza[^]b]cza]cz\ba\bú-az-a-z\by\brÙ  ÚyzrŠ   zx\bzx\Br!   z\BzrY  zz\Bz\Bxz\Ba\Bz\By\Bz\By\br"   z\by\Bzab|cdrä   r�  z()efÚdefz0,1)r  r¤   z$br�   za\(búa(b)r”  za\(*bza((bza\\bza\brf  z0,1,2)rU   rU   rU   z(a)b(c))rž   rU   rµ   za+b+cÚaabbabcz(a+|b)*)rä   r�   z(a+|b)+z(a+|b)?rÙ   z)(z[^ab]*ro  r/   z	a|b|c|d|erë  z(a|b|c|d|e)fr  )r  rë  zabcd*efgÚabcdefgzab*Ú	xabyabbbzÚxayabbbzz(ab|cd)er  )ro  rå   z[abhgefdc]ijÚhijz	^(ab|cd)ez(abc|)efrý   z(a|b)c*d)Úbcdr�   z
(ab|ab*)bc)rž   rU   z
a([bc]*)c*)rž   rÛ   za([bc]*)(c*d))r�  rÛ   ræ   za([bc]+)(c*d)za([bc]*)(c+d))r�  r�   rå   za[bcd]*dcdcdeÚadcdcdeza[bcd]+dcdcdez	(ab|a)b*c)rž   rä   z((a)(b)c)(d)z1,2,3,4)rž   rU   r�   ræ   z[a-zA-Z_][a-zA-Z0-9_]*Úalphaz^a(bc+|b[eh])g|.h$Úabh)ÚbhNz(bc+d$|ef*g.|h?i(j|k))Úeffgz)rŸ  rŸ  NÚij)r   r   ÚjÚeffgÚbcddÚreffgzz(((((((((a)))))))))zmultiple words of textzuh-uhzmultiple wordszmultiple words, yeahz	(.*)c(.*))r  rä   rp  z\((.*), (.*)\)z(a, b)z2,1)r�   rU   z[k]za[-]?cz(abc)\1r.  z
([a-c]*)\1z^(.+)?BÚABr`   z(a+).\1$r‘   )r‘   rî   z	^(a+).\1$Úaaaa)r.  rž   z
([a-c]+)\1z(a)\1)rî   rU   z(a+)\1z(a+)+\1z(a).+\1rÓ   )rÓ   rU   z(a)ba*\1z
(aa|a)a\1$r7   )r7   rU   z
(a|aa)a\1$z(a+)a\1$z
([abc]*)\1z
(a)(b)c|ab)rä   NNz(a)+xÚaaax)r§  rU   z([ac])+xÚaacx)r¨  rµ   z([^/]*/)*sub1/zd:msgs/tdir/sub1/trial/away.cpp)zd:msgs/tdir/sub1/ztdir/z([^.]*)\.([^:]*):[T ]+(.*)útrack1.title:TBlah blah blahz0,1,2,3)r©  Útrack1ÚtitlezBlah blah blahz	([^N]*N)+ÚabNNxyzN)r¬  ÚxyzNÚabNNxyz)ÚabNNÚNz	([abc]*)xÚabcx)r±  rž   z	([xyz]*)x)r!   r¤   z	(a)+b|aac)r�  Nz(?P<i d>aaa)az(?P<id>aaa)az0,id)r¦  r7   z(?P<id>aa)(?P=id))r¦  rî   z(?P<id>aa)(?P=xd)r£   Úgz\g<1>z(.)\g<1>Úgg)r³  r²  z\Nr°  z\N{LATIN SMALL LETTER A}z\prê   ræ  z\PÚPz\P{Lu}zab{0,}bczab{1,}bcz	ab{1,3}bcz	ab{3,4}bcz	ab{4,5}bcz	ab{0,1}bczab{0,1}cza[b-a]z*az(*)bza{1,}b{1,}cza**za.+?cz
(a+|b){0,}z
(a+|b){1,}z(a+|b){0,1}z	([abc])*dÚabbbcd)rµ  rµ   z([abc])*bcd)r�  rU   z((((((((((a))))))))))Ú10z((((((((((a))))))))))\10z((((((((((a))))))))))\41z(?i)((((((((((a))))))))))\41z(?i)abcr!  ÚXBCÚAXCÚABXÚXABCYÚABABCz(?i)ab*cz	(?i)ab*bcÚABBCz
(?i)ab*?bcÚABBBBCz(?i)ab{0,}?bcz
(?i)ab+?bcz	(?i)ab+bcÚABQz(?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$ÚABCCz(?i)^abcÚAABCz(?i)abc$z(?i)^z(?i)$z(?i)a.cz	(?i)a.*?cÚAXYZCz(?i)a.*cÚAXYZDz
(?i)a[bc]dÚABDz(?i)a[b-d]eÚACEz
(?i)a[b-d]ÚAACÚACz	(?i)a[-b]zA-z	(?i)a[b-]z
(?i)a[b-a]z(?i)a[]bz(?i)a[z(?i)a]zA]z	(?i)a[]]bzA]Bz(?i)a[^bc]dÚAEDz(?i)a[^-b]cÚADCzA-Cz(?i)a[^]b]czA]Cz	(?i)ab|cdÚABCDz(?i)()efÚDEF)ÚEFr¤   z(?i)*az(?i)(*)bz(?i)$br  z(?i)a\z(?i)a\(búA(B)rÌ  z	(?i)a\(*bzA((Bz(?i)a\\bzA\Bz(?i)abc)z(?i)(abcz	(?i)((a)))r`   r`   r`   z(?i)(a)b(c))r!  r`   rf  z	(?i)a+b+cÚAABBABCz(?i)a{1,}b{1,}cz(?i)a**z	(?i)a.+?cÚABCABCz(?i)a.{0,5}?cz(?i)(a+|b)*)r¥  r  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}?©r¤   Nz(?i))(z
(?i)[^ab]*ÚCDEz(?i)a*z(?i)([abc])*dÚABBBCD)rÑ  rf  z(?i)([abc])*bcd)rÉ  r`   z(?i)a|b|c|d|eÚEz(?i)(a|b|c|d|e)frË  )rË  rÒ  z(?i)abcd*efgÚABCDEFGz(?i)ab*Ú	XABYABBBZÚXAYABBBZz(?i)(ab|cd)eÚABCDE)rÐ  ÚCDz(?i)[abhgefdc]ijÚHIJz(?i)^(ab|cd)ez(?i)(abc|)efr#  z(?i)(a|b)c*d)ÚBCDr  z(?i)(ab|ab*)bc)r!  r`   z(?i)a([bc]*)c*)r!  ÚBCz(?i)a([bc]*)(c*d))rÉ  rÚ  ÚDz(?i)a([bc]+)(c*d)z(?i)a([bc]*)(c+d))rÉ  r  r×  z(?i)a[bcd]*dcdcdeÚADCDCDEz(?i)a[bcd]+dcdcdez(?i)(ab|a)b*c)r!  r¥  z(?i)((a)(b)c)(d))r!  r`   r  rÛ  z(?i)[a-zA-Z_][a-zA-Z0-9_]*ÚALPHAz(?i)^a(bc+|b[eh])g|.h$ÚABH)ÚBHNz(?i)(bc+d$|ef*g.|h?i(j|k))ÚEFFGZ)rà  rà  NÚIJ)rá  rá  ÚJÚEFFGÚBCDDÚREFFGZz(?i)((((((((((a))))))))))z(?i)((((((((((a))))))))))\10ÚAAz(?i)(((((((((a)))))))))z+(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))z/(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))rf  z(?i)multiple words of textzUH-UHz(?i)multiple wordszMULTIPLE WORDS, YEAHzMULTIPLE WORDSz(?i)(.*)c(.*))rÖ  r¥  ÚDEz(?i)\((.*), (.*)\)z(A, B))r  r`   z(?i)[k]z
(?i)a[-]?cz(?i)(abc)\1z(?i)([a-c]*)\1za(?!b).Úabadrç   za(?=d).z	a(?=c|d).za(?:b|c|d)(.)za(?:b|c|d)*(.)za(?:b|c|d)+?(.)za(?:b|(c|e){1,2}?|d)+?(.)z1,2)rµ   rë  z(?<!-):(.*?)(?<!-):z
a:bc-:de:fzbc-:dez(?<!\\):(.*?)(?<!\\):z
a:bc\:de:fzbc\:dez(?<!\?)'(.*?)(?<!\?)'z
a'bc?'de'fzbc?'dezw(?# commentÚwz w(?# comment 1)xy(?# comment 2)zÚwxyzzw(?i)ÚWzw(?iV1)z(?i)wz(?iV1)wz"(?x)w# comment 1
x y
# comment 2
zzjkl
abc
xyzr[  r\  zjkl
xyzabc
123r  z--ab_cd0123--Ú	ab_cd0123z[\w]+z\D+Ú1234abc5678z[\D]+z[\da-fA-F]+Ú123abcz([\s]*)([\S]*)([\s]*)z testing!1972z3,2,1)r¤   ztesting!1972rÃ   z(\s*)(\S*)(\s*)z(([a-z]+):)?([a-z]+)$Úsmilz1,2,3)NNrï  z((.)\1+)z.*dzabc
abdrâ   z[\41]ú!z(x?)?z	 (?x)foo r‚  z (?V1x)foo z	(?x) foo z(?V1x) foo z(?x)foo z
(?V1x)foo z(?<!abc)(d.f)Ú	abcdefdofÚdofz[\w-]+Ú
laser_beamz.*?\S *:zxx:za[ ]*?\ (\d+).*za   10za    10z(?ms).*?x\s*\Z(.*)zxx
x
z(?i)M+ÚMMMz(?i)m+z(?i)[M]+z(?i)[m]+z"(?:\\"|[^"])*?"z"\""z^.*?$zone
two
three
za[^>]*?bza>bz^a*?$z^((a)c)?(ab)$)NNrä   z^([ab]*?)(?=(b)?)c)rä   Nz^([ab]*?)(?!(b))cz^([ab]*?)(?<!(a))cz\b.\bõ   Ã„rÇ  r®   rM  c                 S   s   g | ]}t |ƒ‘qS r   )rÜ  )rÀ   Úfr   r   r   rÁ   ¦	  r—  z+RegexTests.test_various.<locals>.<listcomp>r6   ú...z%Incorrect number of test fields: ({})r  ©r6   r®   )ro   r	  )!r)   r�   r¥   r¨   ÚMISSING_RPARENrÜ  ÚUNKNOWN_GROUPrŽ   rd   ÚTRAILING_CHARSrm  Ú
BAD_ESCAPEÚBAD_CHAR_RANGEÚNOTHING_TO_REPEATÚMULTIPLE_REPEATÚ
OPEN_GROUPrs  rt   r  r,   rÛ  rÆ   Úappendr@   rš   r›   ÚmajorÚminorÚsubTestrs   r;   rŸ   r&   )r
   rþ  rH  Úexcvalro   r	  r  r   ÚfieldsÚ
group_listrŸ   rM   r   r   r   r   Útest_various×  s8  þýüû
ÿø
ö
ÿõ
ÿó
ÿñ
ÿïìëèçæ
ÿåâá"Þ#Ý$Ü%Û&ÿÚ*Ö+Õ,Ô-Ó0ÿÐ2ÿÎ4ÿÌ6Ê9Ç:Æ;Å=Ã>Â?Á@ÿÿÿÿÀBÿ¾Eþ»J¶KµL´M³N²P°Q¯R®S­T¬U«VªX¨Y§Z¦[¥\¤]£^¢_¡` aŸc�dœe›fšg™h˜i—j–k•l”n’o‘p�q�rŽs�tŒu‹vŠw‰y‡z†{…|„}ƒ~‚�  �ÿ  �þ  �ý  �û  �ú  �ù  �ø 	 �÷ 
 �ö  �õ  �ô  �ó  �ò  �ð  �ï  �î  �í  �ì  �ë  �ê  �é  �è  �ç  �å  �ä  �ã  �â  �á   �à ! �ß " �Þ # �Ý $ �Ü & �Ú ' �Ù ( �Ø ) �× * �Ö + �Õ , �Ô - �Ó . �Ò / �Ñ 1 �Ï 2 �Î 3 �Í 4 �Ì 5 �Ë 6 �Ê 7 �É 8 �È 9 �Ç : �Æ < �Ä = �Ã > �Â ? �Á @ �À A �¿ B �¾ C �½ D �¼ E �» G �¹ H �¸ I �· J �¶ K �µ L �´ M �³ N �² O �± P �° R �® S �­ U �« W �© X �¨ Y �§ [ �¥ \ �¤ ]ÿ �£ _ �¡ a �Ÿ b �ž c �� d �œ e �› f �š g �™ h �˜ i �— j �– l �” m �“ n �’ o �‘ p �� q �� r �Ž s �� t �Œ u �‹ w �‰ x �ˆ 
yÿ �‡ {ÿ �… ~ �‚  ��   � �ÿ   � �þ   � �ý   � �ü   � �ù   � �ø  	 � �÷  
 � �ö   � �ó   � �ò   � �ñ   � �ð   � �ï   � �î   � �í   � �ì   � �ë   � �ê   � �ç   � �æ   � �å   � �ä   � �ã   � �â    � �à  ! � �ß  " � �Þ  # � �Ý  $ � �Ü  % � �Û  & � �Ú  ' � �Ù  ( � �Ø  ) � �×  + � �Õ  , � �Ô  - � �Ó  . � �Ò  / � �Ñ  0 � �Ð  1 � �Ï  2 � �Î  3 � �Í  4 � �Ì  6 � �Ê  7 � �É  8 � �È  9 � �Ç  : � �Æ  ; � �Å  < � �Ä  = � �Ã  > � �Â  ? � �Á  A � �¿  B � �¾  C � �½  D � �¼  E � �»  F � �º  G � �¹  H � �¸  I � �·  J � �¶  L � �´  M � �³  N � �²  O � �±  P � �°  Q � �¯  R � �®  S � �­  T � �¬  U � �«  W � �©  X � �¨  Y � �§  Z � �¦  [ � �¥  \ � �¤  ] � �£  ^ � �¢  _ � �¡  ` � �   b � �ž  c � ��  d � �œ  e � �›  f � �š  g � �™  h � �˜  i � �—  j � �–  k � �•  m � �“  n � �’  o � �‘  p � ��  q � ��  r � �Ž  s � ��  t � �Œ  u � �‹  v � �Š  x � �ˆ  y � �‡  z � �†  { � �…  | � �„  } � �ƒ  ~ � �‚   � ��    � � �ÿ    � � �þ    � � �ü    � � �û    � � �ú    � � �ù    � � �ø   	 � � �÷   
 � � �ö    � � �õ    � � �ô    � � �ó    � � �ñ    � � �ð    � � �î    � � �ì    � � �ë    � � �ê    � � �è    � � �ç   ÿ � � �â    ÿ � � �à   # � � �Ý   $ � � �Ü   %ÿ � � �Û   ' � � �Ù   ( � � �Ø   ) � � �×   * � � �Ö   + � � �Õ   , � � �Ô   - � � �Ó   / � � �Ñ   0 � � �Ð   1 � � �Ï   2 � � �Î   3 � � �Í   4 � � �Ì   5 � � �Ë   6 � � �Ê   7 � � �É   8 � � �È   : � � �Æ   ; � � �Å   < � � �Ä   = � � �Ã   > � � �Â   ? � � �Á   @ � � �À   A � � �¿   B � � �¾   C � � �½   E � � �»   F � � �º   G � � �¹   H � � �¸   I � � �·   J � � �¶   K � � �µ   L � � �´   M � � �³   N � � �²   P � � �°   Q � � �¯   R � � �®   S � � �­   T � � �¬   U � � �«   V � � �ª   W � � �©   X � � �¨   Y � � �§   [ � � �¥   \ � � �¤   ] � � �£   ^ � � �¢   _ � � �¡   ` � � �    a � � �Ÿ   b � � �ž   c � � ��   d � � �œ   f � � �š   g � � �™   h � � �˜   i � � �—   j � � �–   k � � �•   l � � �”   m � � �“   n � � �’   o � � �‘   q � � ��   r � � �Ž   s � � ��   t � � �Œ   u � � �‹   v � � �Š   w � � �‰   x � � �ˆ   y � � �‡   z � � �†   | � � �„   } � � �ƒ   ~ � � �‚    � � ��     � � � �ÿ     � � � �þ     � � � �ý     � � � �ü     � � � �û     � � � �ú     � � � �ø    	 � � � �÷    
 � � � �ö     � � � �õ     � � � �ô     � � � �ó     � � � �ò     � � � �ñ     � � � �ð     � � � �ï     � � � �í     � � � �ì     � � � �ë     � � � �ê     � � � �é     � � � �è     � � � �ç     � � � �æ     � � � �å     � � � �ä     � � � �â     � � � �á      � � � �à    ! � � � �ß    " � � � �Þ    # � � � �Ý    $ � � � �Ü    & � � � �Ú    ' � � � �Ù    ( � � � �Ø    + � � � �Õ    - � � � �Ó    . � � � �Ò    / � � � �Ñ    1 � � � �Ï    2 � � � �Î    5 � � � �Ë    
6ÿ � � � �Ê    
8ÿ � � � �È    : � � � �Æ    
<ÿ � � � �Ä    > � � � �Â    ? � � � �Á    @ � � � �À    C � � � �½    D � � � �¼    E � � � �»    F � � � �º    G � � � �¹    H � � � �¸    J � � � �¶    K � � � �µ    L � � � �´    M � � � �³    P � � � �°    R � � � �®    T � � � �¬    X � � � �¨    Y � � � �§    ` � � � �     a � � � �Ÿ    b � � � �ž    c � � � ��    d � � � �œ    e � � � �›    hý � � � �˜    nþ � � � �’    qþ � � � ��    uþ � � � �‹    z � � � �†    { � � � �…    ~ � � � �‚     � � � ��      � � � � �ÿ      � � � � �þ      � � � � �ý      � � � � �ú      � � � � �ø      � � � � �ñ      � � � � �î      � � � � �ì      � � � � �ê      � � � � �é      � � � � �ç      � � � � �ã      � � � � �â      � � � � �á       � � � � �à     ! � � � � �ß     " � � � � �Þ     $ � � � � �Ü     & � � � � �Ú     ( � � � � �Ø     ) � � � � �×     * � � � � �Ö     , � � � � �Ô     . � � � � �Ò     / � � � � �Ñ     0 � � � � �Ð     1 � � � � �Ï     6 � � � � �Ê     8 � � � � �È     : � � � � �Æ     < � � � � �Ä     > � � � � �Â     @ � � � � �À     A � � � � �¿     B � � � � �¾     D � � � � �¼     
Eÿ � � � � �»     
Gÿ � � � � �¹     K€,þÿ
ÿÿ€ÞzRegexTests.test_variousc                 C   s|   |   t ddd¡d¡ |   t ddd¡d¡ |   t dt d¡d¡d¡ |   t ddd¡d¡ |   t dd	d
„ d¡d¡ d S )Nztest\?zresult\?\.\q\m
ztest?r$  ú\1\1r!   rR   z\\1\\1c                 S   rJ   )Nr	  r   rL   r   r   r   rN   É	  rO   z-RegexTests.test_replacement.<locals>.<lambda>)r&   r)   rc   rA  r>   r   r   r   Útest_replacementÂ	  s   ÿzRegexTests.test_replacementc                 C   sN   t jt j t j }|d }d| d | d }|  ttt |¡ƒƒ| j	¡ d S )Nr®   râ   rí   rP  )
r	  Úascii_lowercaseÚdigitsÚascii_uppercaser&   rw   r   r)   r*   rx   )r
   ÚallÚsideÚregexpr   r   r   Útest_common_prefixË	  s    zRegexTests.test_common_prefixc                 C   s  |   t dd¡ d¡g d¢¡ |   t dd¡ dd¡dgddgf¡ |   t d	d
¡ dd¡dgg d¢f¡ |   t dd¡ dd¡g d¢g d¢f¡ |   t dd¡ ddd¡dgg d¢dgf¡ |   t dd¡ d¡dg¡ |   t dd¡ d¡ddg¡ |   t dd¡ d¡dg¡ d S ) Nz(\w)+rž   r5   r�  z(\w{3})+rý   r   r“  z^(\d{1,3})(?:\.(\d{1,3})){3}$z192.168.0.1r¬   Ú192)Ú168rW  rv  z^([0-9A-F]{2}){4} ([a-z]\d){5}$z3FB52A0C a2c4g3k9d3)Ú3FÚB5Ú2AÚ0C)Úa2Úc4Úg3Úk9Úd3z([a-z]W)([a-z]X)+([a-z]Y)ÚaWbXcXdXeXfYr6   ÚaW)ÚbXÚcXÚdXÚeXÚfYz.*?(?=(.)+)brä   r�   z.*?(?>(.){0,2})dr�  rµ   z(.)+rU   )r&   r)   r;   Úcapturesr=   r>   r   r   r   Útest_capturesÒ	  s<   ÿ
ÿÿ
ÿÿÿ
ÿÿÿÿÿ zRegexTests.test_capturesc                 C   sÂ   t  dd¡}|  | ddd¡d¡ t  dd¡}|  | ddd¡d¡ t  d	d
¡}|  | ddd¡d¡ t  dd¡}|  | dd¡d¡ t  dd¡}|  | ¡ d¡ t  dd¡}|  | ¡ d¡ d S )Nz(X.*?Y\s*){3}(X\s*)+AB:zXY
X Y
X  Y
XY
XX AB:r   r5   r¬   ))r6   é   ©r[   é   ©rQ  é   z(X.*?Y\s*){3,}(X\s*)+AB:))r   r&  r'  r)  z\d{4}(\s*\w)?\W*((?!\d)\w){2}Ú9999XX)r2  rb  )é   rþ   zA\s*?.*?(\n+.*?\s*?){0,2}\(Xz
A
1
S
1 (X)©r   rX   )r,  r.  z	Derde\s*:zaaaaaa:
Derde:)r.  é   zaaaaa:
Derde:)r\   rZ   )r)   r;   r&   r<   rÝ  r   r   r   Útest_guardsæ	  s    ÿÿzRegexTests.test_guardsc              	   C   sò   d}t ƒ }t ƒ }| d¡D ],}| d¡\}}| ||f¡ | ||f¡ | ||f¡ | ||f¡ | ||f¡ q|D ]:}|D ]5}t d| d |¡}|rb||f|vra|  d t|ƒt|ƒ¡¡ q@||f|v ru|  d t|ƒt|ƒ¡¡ q@q<d S )Nu   I=i;I=Ä±;i=Ä°ú;ú=z(?i)\Aú\Zz{} matching {}z{} not matching {})	rù  rÆ   ÚupdateÚaddr)   r=   r,   rÛ  rÜ  )r
   Úpairsrt  ÚmatchingÚpairr6  r7  rM   r   r   r   Útest_turkicú	  s4   ÿ€ÿ€øÿzRegexTests.test_turkicc                 C   s  g d¢}|   tjdd|d� ¡ d¡ |   tjdd|d� ¡ d¡ |   tjdd|d�d ¡ g d¢}|   tjd	d
|d� ¡ d
¡ |   tjdd|d� ¡ d¡ |   tjd	d|d�d ¡ |   tttjdg d¢d�ƒƒ| j¡ |   tjddt	g d¢ƒd�g ¡ |   tjddt	g d¢ƒd�dg¡ dg}|   tjdd|d� 
¡ d¡ ddg}|   tjdd|d� 
¡ d¡ dg}|   tjdd|d� 
¡ d¡ dg}|   tjdd|d� 
¡ d ¡ |   tjdd!|d� 
¡ d ¡ |   t d"d#¡ 
¡ d$¡ |   t d"d%¡ 
¡ d$¡ |   tjd&d'g d� 
¡ d(¡ d S ))N)ÚoneÚtwoÚthreez333\L<bar>444Ú	333one444)r„  z(?i)333\L<bar>444Ú	333TWO444Ú
333four444)s   ones   twos   threes   333\L<bar>444s	   333one444s   (?i)333\L<bar>444s	   333TWO444s
   333four444z3\L<bar>4\L<bar>+5z^\L<options>zsolid QWERT)ÚgoodÚ	brilliantz	+s\ol[i}dr0  z+solid QWERT)r?  r@  ú+solidrA  ÚSTRASSEú(?fi)\L<words>u   straÃŸe©Úwordsr2  Ústress©r   r\   Úkitz(?i)\L<words>ÚSKITSr1  u   SKÄ°TSz(?fi)\b(\w+) +\1\bu    straÃŸe STRASSE )r5   r(  u    STRASSE straÃŸe z^\L<options>$r¤   r1   )r&   r)   r=   rŸ   rw   r   r*   rx   r+   rù  r<   r;   )r
   r1  r   r   r   Útest_named_lists
  s´   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿÿÿÿÿ
þþ
ÿÿ
ÿÿÿzRegexTests.test_named_listsc                 C   sL  |   ttt d¡ƒƒ| j¡ |   ttt d¡ƒƒ| j¡ |   ttt d¡ƒƒ| j¡ |   ttt d¡ƒƒ| j¡ |   ttt d¡ƒƒ| j¡ |   ttt d¡ƒƒ| j¡ d}|   t d|¡d ¡ |   t d	|¡ d
d¡d¡ |   t d|¡d ¡ |   t d|¡d
 d¡ |   t d|¡d
 d¡ d}|   t d|¡ d
d¡d¡ |   t d|¡ d
d¡d¡ |   t d|¡ d
d¡d¡ |   t d|¡ d
d¡d¡ |   t d|¡ d
d¡d¡ |   t d|¡ d
d¡d¡ |   ttt d¡ƒƒ| j¡ |   t dd¡ d
d¡d¡ |   t dd¡ d
d¡d ¡ |   t d!d¡ d
d¡d"¡ |   t d#d$¡ d
d¡d%¡ |   t d#d&¡d ¡ |   t d'd(¡ d
d¡d)¡ |   t d*d+¡ d
d¡d,¡ |   t d*d-¡ d
d¡d¡ |   t d.d-¡ d
d¡d/¡ |   t d0d1¡ d
d¡d¡ |   t d0d2¡ d
d¡d3¡ |   t d0d4¡ d
d¡d3¡ |   t d0d5¡ d
d¡d3¡ |   t d0d6¡ d
d¡d¡ |   t d0d7¡ d
d¡d¡ |   t d0d8¡ d
d¡d¡ |   t d0d9¡ d
d¡d:¡ |   t d0d;¡ d
d¡d:¡ |   t d0d<¡ d
d¡d:¡ |   t d0d=¡d ¡ |   t d0d>¡d ¡ |   t d0d?¡d ¡ |   t d0d@¡d ¡ |   t d0dA¡d ¡ |   t dBdC¡ d
d¡dD¡ |   t dEdC¡ d
d¡dF¡ |   t dGdH¡ d
d¡dI¡ |   t dGdJ¡d ¡ |   t dGdK¡ d
d¡dL¡ dM}|   t dN|¡ d
d¡dO¡ |   t dP|¡ d
d¡dQ¡ |   t dR|¡ d
d¡dS¡ |   tjdTdUdV 	¡ dW�dXdYg¡ |   tjdTdZdV 	¡ dW�d[dXg¡ |   tjd\dZdV 	¡ dW�dYdXg¡ |   tjd]dUdV 	¡ dW�d^dXg¡ |   tjd_dUdV 	¡ dW�dYdXg¡ |   tjd]dZdV 	¡ dW�dXdYg¡ |   tjd`dadb 	¡ dW�dcddg¡ |   tjd`dedb 	¡ dW�dfdcg¡ |   tjdgdedb 	¡ dW�dddcg¡ |   tjdhdadb 	¡ dW�didcg¡ |   tjdjdadb 	¡ dW�dddcg¡ |   tjdhdedb 	¡ dW�dcddg¡ |   t dkdl¡ 
¡ dm¡ |   t dndl¡ 
¡ dm¡ |   t dodp¡ 
¡ dq¡ |   t drds¡dsdtg¡ |   t dudv¡dvdtg¡ |   t dwdx¡ ¡ dy¡ |   t dwdz¡ ¡ d{¡ |   t dwd|¡ ¡ d}¡ |   t dwd~¡d ¡ |   t dwd¡ ¡ d€¡ |   t d�d‚¡jdƒ¡ |   t d„d‚¡jd…¡ |   t d†d‡¡jdˆ¡ |   t d‰d‡¡jd…¡ |   t dŠd‹¡jdŒ¡ |   t d�dŽ¡jg d�¢d�gg f¡ |   tt d‘d’¡ƒd“¡ d S )”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}r   r5   )©rW   é   rK  z(ananda){1i+1d<2}z(?:\bznacnda){e<=2}Úanacondaz(?:\bnacnda){e<=2}z#anaconda foo bar baz smith andersonz(fuu){i<=3,d<=3,e<=5})r1   r1   z(?b)(fuu){i<=3,d<=3,e<=5})©rW   rX   rN  z(fuu){i<=2,d<=2,e<=5})©r\   rX   rO  z(?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}Úxirefoabralfobarxie)r2  r2  z(?e)(foobar){e})r9   r9   z(?b)(foobar){e})©rY   rQ  rQ  z(foobar){e<=2}Úxirefoabrzlfd)©r®   rW   rS  Úxirefoabzlfdz(foobar){i<=2,s<=2,e<=2}Úoobargoobaploowap)©r,  rY   rV  z\b(foobar){e}\bÚzfoobarz)©r   r.  rX  zboing zfoobarz goobar woopz(?b)\b(foobar){e}\b)©r(  r&  rY  z^(foobar){e<=1}$ÚfoobarÚxfoobar)rG  rG  ÚfoobarxÚfooxbarÚfoxbarÚxoobarÚfoobaxÚoobar)©r   r,  rb  ÚfobarÚfoobaÚxfoobarxÚfoobarxxÚxxfoobarÚxfoxbarÚfoxbarxz (foobar){i<=1,d<=2,s<=3,2d+1s<4}Ú(3oifaowefbaoraofuiebofasebfaobfaorfeoaro)©rþ   rZ   rk  z$(?b)(foobar){i<=1,d<=2,s<=3,2d+1s<4})©é"   é'   rl  zfoo(bar){e<=1}zapÚ	foobarzap)©r   rW   ©r6   rþ   ÚfobarzapÚfoobrzap)rX  ©r6   r,  zxwww.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}.*$)©r   éx   )rv  rv  z(?es)^.*(dot.org){e}.*$)ru  )é]   éd   z^.*(dot.org){e}.*$))r   éw   )é   ée   z\b\L<words>{e<=1}\bz book cot dog desk zcat dogrD  ÚcotÚdogz book dog cot desk z dogz(?e)\b\L<words>{e<=1}\bz(?r)\b\L<words>{e<=1}\bzdog z(?er)\b\L<words>{e<=1}\bs   \b\L<words>{e<=1}\bs    book cot dog desk s   cat dogs   cots   dogs    book dog cot desk s    dogs   (?e)\b\L<words>{e<=1}\bs   (?r)\b\L<words>{e<=1}\bs   dog s   (?er)\b\L<words>{e<=1}\bz(\w+) (\1{e<=1})zfoo fou)r‚  Úfouz(?r)(\2{e<=1}) (\w+)s   (\w+) (\1{e<=1})s   foo fou)s   foos   fouz(?:(?:QR)+){e}r  r¤   z	(?:Q+){e}rž   z(?:service detection){0<e<5}zservic detection)r   rQ  zservice detect)r   r.  zservice detecti)r   r(  zservice detectionzin service detection)r   é   ú(?:cats|cat){e<=1}Úcat©r   r   r5   ú(?e)(?:cats|cat){e<=1}©r   r   r   z(?:cat|cats){e<=1}Úcats©r   r5   r   z(?e)(?:cat|cats){e<=1}z(?:cat){e<=1} (?:cat){e<=1}zcat cot©r5   r   r   z/(?e)(GTTTTCATTCCTCATA){i<=4,d<=4,s<=4,i+d+s<=8}ÚATTATTTATTTTTCATA)r   rþ   rX   rY   r6   z(?:fo){e<=1}|(?:fo){e<=2}ÚFOT)r&   rw   r   r)   r*   rx   r;   r<   r+   rÆ   r  r=   Ú	fullmatchÚfuzzy_countsÚfuzzy_changesrú   rV  r   r   r   Ú
test_fuzzyJ
  s|  ÿÿÿÿÿÿÿ
ÿ
ÿÿÿÿÿ
ÿ
ÿÿÿ
ÿ
ÿÿÿÿÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿÿÿ
ÿ
ÿ
ÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿ
ÿ
ÿ
ÿÿÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿÿzRegexTests.test_fuzzyc                 C   s:  |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d	¡ |   t dd
¡d d … d¡ |   t dd¡d ¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t dd
¡d d … d¡ |   t dd¡d ¡ |   t dd¡d d … d¡ |   t dd¡ d¡g d¢¡ |   t dd¡d d … d¡ |   t dd¡ d¡g d¢¡ |   t dd¡d d … d¡ |   t dd¡d d … d¡ |   t d d!¡d d … d"¡ |   t d#d!¡d d … d"¡ t d$¡}|   t| d%¡ƒd&¡ |   t| d'¡ƒd(¡ |   t| d)¡ƒd&¡ |   t| d*¡ƒd(¡ |   t| d+¡ƒd(¡ |   t| d,¡ƒd(¡ |   t| d-¡ƒd&¡ |   t| d.¡ƒd&¡ |   t| d/¡ƒd(¡ |   t| d0¡ƒd&¡ |   t| d1¡ƒd&¡ |   t| d2¡ƒd&¡ d S )3Nz(\w)(?:(?R)|(\w?))\1rR   )rR   r!   r¤   rÓ   )rÓ   rU   r�   Úabba)rŽ  rU   NÚkayak)r�  rz  NÚpaper)Úpaprê   rU   Údontmatchmez(?r)\2(?:(\w?)|(?R))(\w))rR   r¤   r!   )rÓ   r�   rU   )rŽ  NrU   )r�  Nrz  )r‘  rU   rê   z\(((?>[^()]+)|(?R))*\)ú
(ab(cd)ef))r“  r  r5   )rä   rå   ú(cd)r  z(?r)\(((?R)|(?>[^()]+))*\))r“  rä   )r  rå   r”  rä   z\(([^()]+|(?R))*\)zsome text (a(b(c)d)e) more text)ú(a(b(c)d)e)rë  z(?r)\(((?R)|[^()]+)*\))r•  rU   z!(foo(\(((?:(?>[^()]+)|(?2))*)\)))úfoo(bar(baz)+baz(bop)))r–  r–  z(bar(baz)+baz(bop))zbar(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*$z<foo><bar></bar></foo>Tz<foo><bar></foo></bar>Fz<foo><bar/></foo>z<foo><bar></foo>z<foo bar=baz/>z<foo bar="baz">z<foo bar="baz"/>z<    fooo   /  >z	foo<foo/>z<foo>foo</foo>z<foo><bar/>foo</foo>z<a><b><c></c></b></a>)r&   r)   r;   r$  r*   rú   )r
   Úrgxr   r   r   Útest_recursive  sÊ   ÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
ÿÿÿ
zRegexTests.test_recursivec                 C   s’  t  d¡}|  t |¡|u ¡ |  t |¡|u ¡ | d¡}|  t |¡|u¡ |  t |¡|u¡ |  |jd u¡ t |¡}| ¡  |  |jd u¡ |  |jd u ¡ t  dd¡}t |¡}|  	t
|ƒ ¡ d¡ |  	t
|ƒ ¡ d¡ t  dd¡}t |¡}|  	t
|ƒ ¡ d¡ |  	t
|ƒ ¡ d¡ t  dd¡}t |¡}|  	t
|ƒd¡ |  	t
|ƒd¡ t  dd¡}t |¡}|  	t
|ƒd¡ |  	t
|ƒd¡ d S )NrU   rI   rä   r�   rÃ   r  )r)   r*   Ú
assertTrueÚcopyÚdeepcopyr=   r	  Údetach_stringr˜  r&   r¤  rŸ   rÇ   )r
   ÚrrM   Úm2r™  Úit2r   r   r   Ú	test_copyR  s6   






zRegexTests.test_copyc                 C   sv   |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d	¡ |   t dd¡ d¡d¡ d S )
Nr  z{0} => {2} {1}r  úfoo bar => bar fooz(?<word1>\w+) (?<word2>\w+)z{word2} {word1}úbar foo)r¡  r5   )r¢  r5   )r&   r)   ÚsubfÚsubfnr=   Úexpandfr>   r   r   r   Útest_format}  s2   ÿÿ
ÿÿÿÿ
ÿÿ
ÿÿzRegexTests.test_formatc              	   C   sH  |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   ttjdddd�ƒd¡ |   ttjdddd	�ƒd¡ |   ttjdd
dd	�ƒd¡ |   ttjdd
ddd�ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   ttjdddd�ƒd¡ |   ttjdddd	�ƒd¡ |   ttjdd
dd	�ƒd¡ |   ttjdd
ddd�ƒd¡ d S )Nrž   Tr±  Fr6   )r  Úxabcr5   )r  r‚  r®   r  z(?r)abc©r&   rú   r)   rŠ  r>   r   r   r   Útest_fullmatch‹  s4   ÿÿÿÿÿÿÿzRegexTests.test_fullmatchc                 C   sð  t jjt jjfdk rd S |  t ddd¡d¡ |  t dtdƒtdƒ¡d¡ |  t ddd¡d	¡ |  t dtdƒtdƒ¡d	¡ |  t dt	dƒt	dƒ¡d	¡ |  t dt
dƒt
dƒ¡d	¡ d
td
ƒfD ]D}|  t d|¡g d¢¡ t jdkr�|  t d|¡g d¢¡ |  t d|¡g d¢¡ qd|  t d|¡g d¢¡ |  t d|¡g d¢¡ qddtdƒt	dƒt
dƒfD ]D}|  t d|¡g d¢¡ t jdkrá|  t d|¡g d¢¡ |  t d|¡g d¢¡ qµ|  t d|¡g d¢¡ |  t d|¡g d¢¡ qµdtdƒfD ]'}|  t d|¡g d¢¡ |  t d |¡g d¢¡ |  t d!|¡g d"¢¡ �q d#td#ƒt	d#ƒt
d#ƒfD ]'}|  t d$|¡g d%¢¡ |  t d&|¡g d%¢¡ |  t d'|¡g d(¢¡ �q4dtdƒfD ]C}|  t d|¡ ¡ d)¡ |  t d*|¡ ¡ d+¡ |  t d*|¡ d,¡d¡ |  t d*|¡ d-¡d¡ |  t d*|¡ d-d-¡d.¡ �qbdtdƒt	dƒt
dƒfD ]C}|  t d|¡ ¡ d)¡ |  t d/|¡ ¡ d0¡ |  t d/|¡ d,¡d¡ |  t d/|¡ d-¡d¡ |  t d/|¡ d-d-¡d1¡ �q²d S )2Nrø  r"   rU   rŠ   Úxazó   yrä  s   xyzs   xazr³   r²   r´   r–   r¶   r·   r¸   r¹   r»   r¼   s   :a:b::có   :)rE  rä  r¹  rE  rÂ  s   :*)rE  rE  rä  rE  r¹  rE  rÂ  rE  s   (:*))rE  r¬  rE  rE  rä  r¬  rE  rE  r¹  ó   ::rE  rE  rÂ  rE  rE  )rE  rä  r¹  rÂ  )rE  r¬  rä  r¬  r¹  r­  rÂ  rÌ   rË   rÍ   rÎ   rÏ   rÐ   s
   a:b::c:::ds   :+)r¬  r­  s   :::s   (:+)s   (:)(:*)))r¬  rE  )r¬  r¬  )r¬  r­  r   rØ   r×   r   r5   rÙ   s   (a))rä  )rä  rä  )rš   r›   r  r  r'   r)   rc   r   r   Ú	bytearrayÚ
memoryviewrÆ   r+   r&   r=   r  rŸ   )r
   r	  r   r   r   Útest_issue_18468¡  s‚   ÿÿÿÿÿÿÿÿ
ÿ
ÿ ÿ úzRegexTests.test_issue_18468c                 C   sÞ  |   tjdddd�jd¡ |   tjdddd� ¡ d¡ |   tjdddd�jd¡ |   tjdddd� ¡ d¡ |   tjdd	dd�d ¡ |   tjd
ddd�jd¡ |   tjd
ddd� ¡ d¡ |   tjd
ddd�jd¡ |   tjd
ddd� ¡ d¡ |   tjdddd�jd¡ |   tjddddgd�jd¡ |   tjddddgd� ¡ d¡ |   tjddddgd�jd¡ |   tjddddgd� ¡ d¡ |   tjddddgd�jd¡ |   tjddddgd� ¡ d¡ |   tjddddgd�jd¡ |   tjddddgd� ¡ d¡ |   tjddddgd�d ¡ |   tjdddd� ¡ d¡ |   tjdddd� ¡ d¡ |   tjdddd� ¡ d¡ |   tjdddd� ¡ d¡ |   tjdddd� ¡ d¡ |   tjdd dd�d ¡ |   tjdd!dd�d ¡ d S )"Nrä   rU   T©Úpartialr   r…  r�  r9   Úcatchzabc\w{3}rý   Fr2  r  rb  z\d{4}$Ú1234z	\L<words>Úpost)r²  rE  r4  r  rC  ÚPOSTõ   poï¬†ÚPOSz	[a-z]*4R$r&  Úab4Úa4Úa4RÚ4aÚa44)r&   r)   r=   r²  r<   r>   r   r   r   Útest_partialñ  s¸   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_partialc              
   C   s/  |   ttjdtjd�ƒd¡ |   ttjdtjd�ƒd¡ |   t dd¡ddg¡ |   t d	d¡ddg¡ |   t dd
¡dg¡ |   t dd¡dg¡ |   t dd¡dg¡ |   dd„ t dd¡D ƒdg¡ |   t ddtjtjB ¡ 	d¡d¡ |   t ddtjtjB ¡ 	d¡d¡ |   t ddtjtjB ¡ 	d¡d¡ |   t dd¡ 
¡ d¡ |   ttjddtjd�ƒd¡ |   t dd ¡ 	dd!¡d"¡ |   t d#d$¡ 	dd!¡d%¡ |   t d&d'¡ 	d¡d'¡ |   t d(d)¡ 	dd!¡d*¡ |   t d+d)¡d ¡ |   t d,d-¡ 	d¡d¡ |   t d.d/¡ d!¡d0¡ |   t d.d1¡ d!¡d2¡ |   t d.d3¡ d!¡d4¡ |   t d5d3¡ 	¡ d3¡ |   t d6d7¡ ¡ d8¡ |   t d9d/¡ ¡ d:¡ |   t d9d1¡ ¡ d;¡ |   t d<d¡ 	d¡d¡ |   tjd=d3tjd� 	d¡d3¡ |   t d>d?¡ dd!¡d@¡ |   t dAd?¡ dd!¡dB¡ |   t dCd?¡ dd!¡dD¡ |   t dEd?¡ dd!¡dF¡ |   t dGdH¡ 	d¡d/¡ |   tjdIdJdKdLgdM�g dN¢¡ |   t dOdJ¡g dP¢¡ |   t dQdJ¡g dN¢¡ |   t dRdJ¡g dN¢¡ |   t dSd/¡ 	dd!dT¡dU¡ |   t dVdW¡ dd!¡dX¡ |   t dYd/¡ 	dd!¡dZ¡ |   t d[d\¡d ¡ |   t d]d^¡d ¡ |  tj| jd_d`„ ¡ |   t dadb¡ d¡dc¡ |   t ddde¡ 	d¡de¡ |   t dfdg¡d ¡ |   t dhdi¡d ¡ |   t djdk¡ 	dd!dT¡dl¡ |   t dmdn¡d$dog¡ |   t dpdn¡d$dog¡ |   t dqdn¡d$dog¡ |   t drdn¡d$dog¡ |   t dsdt¡ 	¡ dt¡ |   dud„ t dvdw¡D ƒdxdyg¡ |   t dzd{¡ d|¡g d}¢¡ |  tj| jd~d`„ ¡ d}d€}|   t ||tj¡d d�¡ |   t d‚dƒ¡d„g¡ |   tt d…d†d‡tj¡ƒtdˆƒ¡ |   t d‰dŠ¡d ¡ |   t d‹dŒ¡ d�¡dŽd;g¡ |   t d�d�d`„ d‘¡d’¡ tjd“tjd�}|   | d”¡d ¡ |   | d”¡g ¡ |  tj| jd•d`„ ¡ |   tjd–d—d˜�d™¡ |   tjd–dd˜�dš¡ |   t d–¡dš¡ |   tjd›d—d˜�dœ¡ |   tjd›dd˜�d�¡ |   t d›¡d�¡ |   t dždŸ¡ 
¡ d ¡ |   t d¡dŸ¡ 
¡ d ¡ |   t d¢dŸ¡ 
¡ d ¡ tjd£tjtjB d�}|   d¤d„ | d¥¡D ƒd£g¡ |   | d¥¡d£g¡ d¥}|   d¦d„ | |¡D ƒd£g¡ |   | |¡d£g¡ tjd£tjtjB tjB d�}|   d§d„ | d¥¡D ƒd£g¡ |   | d¥¡d£g¡ d¥}|   d¨d„ | |¡D ƒd£g¡ |   | |¡d£g¡ tjd©k�rM|   t dªd�d«¡dW¡ n|   t dªd�d«¡d�¡ |   t d¬d�d«¡dW¡ tjd©k�ru|   t d­d®d«¡d¯¡ n|   t d­d®d«¡d°¡ |   t d±d®d«¡d¯¡ |   tjd²d³d´tjd�dµ¡ |   t d¶d·¡j d¸¡ |   t d¹d·¡j d¸¡ |   t dºd·¡j d¸¡ |   t d»d·¡j d¸¡ |   t d¼d·¡j d¸¡ |   t d½d·¡j d¸¡ |   t d¾d¿¡j dÀ¡ |   t dÁd¿¡j dÂ¡ |   t dÃd¿¡j dÂ¡ |   t d¾dÄ¡j dÅ¡ |   t dÁdÄ¡j dÅ¡ |   t dÃdÄ¡j dÅ¡ |   t dÆd¿¡j dÂ¡ |   t dÇd¿¡j dÂ¡ |   t dÈd¿¡j dÂ¡ |   t dÉdÊ¡g ¡ |   t d�dËd�¡d�¡ |   tt d/d/tj!¡ƒd¡ |   t dÌdÍ¡d dg¡ |   t dÎdÍ¡d dg¡ |   t dÏdÍ¡d dg¡ |   t dÐdÍ¡d dg¡ |  tjdÑdÒd`„ ¡ |   t dÓd/¡ 	dd!dT¡dÔ¡ |   t dÕd/¡ 	dd!dT¡dÔ¡ dÖ "d×dØ„ t#dÙƒD ƒ¡}|   tdÖ "t dÚ|¡¡ƒtdÖ "t dÛ|¡¡ƒ¡ |   tdÖ "t dÜ|¡¡ƒtdÖ "t dÝ|¡¡ƒ¡ |   tdÖ "t dÞ|¡¡ƒtdÖ "t dß|¡¡ƒ¡ |   tdÖ "t dà|¡¡ƒtdÖ "t dá|¡¡ƒ¡ |   tdÖ "t dâ|¡¡ƒtdÖ "t dã|¡¡ƒ¡ |   tdÖ "t dä|¡¡ƒtdÖ "t då|¡¡ƒ¡ |   tdÖ "t dæ|¡¡ƒtdÖ "t dç|¡¡ƒ¡ |   tdÖ "t dè|¡¡ƒtdÖ "t dé|¡¡ƒ¡ |   tdÖ "t dê|¡¡ƒtdÖ "t dë|¡¡ƒ¡ |   tdÖ "t dì|¡¡ƒtdÖ "t dí|¡¡ƒ¡ |   tdÖ "t dî|¡¡ƒtdÖ "t dï|¡¡ƒ¡ |   tdÖ "t dð|¡¡ƒtdÖ "t dñ|¡¡ƒ¡ |   tdÖ "t dò|¡¡ƒtdÖ "t dó|¡¡ƒ¡ |   tdÖ "t dô|¡¡ƒtdÖ "t dõ|¡¡ƒ¡ t$t#döƒƒ}|   td÷ "t dø|¡¡ƒtd÷ "t dù|¡¡ƒ¡ |   td÷ "t dú|¡¡ƒtd÷ "t dû|¡¡ƒ¡ |   td÷ "t dü|¡¡ƒtd÷ "t dý|¡¡ƒ¡ |   td÷ "t dþ|¡¡ƒtd÷ "t dÿ|¡¡ƒ¡ |   td÷ "t �d |¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d	|¡¡ƒ¡ |   td÷ "t �d
|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   td÷ "t �d|¡¡ƒtd÷ "t �d|¡¡ƒ¡ |   tt �d�d¡ 	¡ ƒt�dƒ¡ |   t �d�d¡ 
¡ �d¡ |   t �d�ddŒ¡�d¡ |   t �d�ddŒ¡�d¡ |   t %�d�ddŒ¡�d¡ |   t %�d�ddŒ¡�d¡ |   tj&�ddŒd�d � ¡ d;¡ |   tj&�ddŒd�d �j'd¡ |   tj�d!�d"d�d � ¡ �d#¡ |   tj�d$�d"d�d � ¡ �d#¡ |   tj�d%�d"d�d � ¡ �d&¡ |   t �d'�d(¡ ¡ d:¡ |   t �d)�d*¡d ¡ |   t �d+�d,¡g �d-¢¡ |   t �d.�d,¡g �d-¢¡ |   �d/d„ t �d0�d1¡D ƒg �d2¢¡ |   �d3d„ t �d4�d1¡D ƒg �d2¢¡ |   t �d5�d6¡d �d6¡ |   t �d5�d7¡d �d7¡ |   t �d8�d9¡d �d9¡ |   t �d:�d;¡d �d;¡ |   t �d<d¡ 	dd!¡�d=¡ |   t �d>�d?¡�d@�dAg¡ |   t �dB�d?¡d�dCg¡ |   t �dDd¡ 	dd!¡�dE¡ |   t �dF�d?¡�dGdŒg¡ |   t �dH�d?¡�dCdg¡ |   t �dI�dJ¡d �dJ¡ |   t �dK�dL¡d �dM¡ |   t �dN�dL¡d �dM¡ |   t �dO�dL¡d ¡ |   t �dP�dL¡d �dL¡ |   t �dQ�dR¡d �dR¡ |   t �dQ�dS¡d �dT¡ |   t �dU�dR¡d �dV¡ |   t �dU�dS¡d �dT¡ |   t �dW�dS¡d �dS¡ |   t �dW�dX¡d �dT¡ |   t �dY�dX¡d �dT¡ |   t �dZ�dX¡d �dT¡ |   t �d[�dL¡d ¡ |   t �d\�dL¡d �dL¡ |   t �d]�dR¡d �dR¡ |   t �d]�dS¡d �dT¡ |   t �d^�dS¡d �dS¡ |   t �d^�dX¡d �dT¡ |   t �d_�dX¡d �dT¡ |   t �d`�dX¡d �dT¡ |   t �da�dR¡d �dR¡ |   t �da�dS¡d �dT¡ |   t �db�dR¡d �dV¡ |   t �db�dS¡d �dT¡ |   t �dc�dS¡d �dS¡ |   t �dc�dX¡d �dT¡ |   t �dd�dX¡d �dT¡ |   t �de�dX¡d �dT¡ |   t �df�dR¡d �dR¡ |   t �df�dS¡d �dT¡ |   t �dg�dS¡d �dS¡ |   t �dg�dX¡d �dT¡ |   t �dh�dX¡d �dT¡ |   t �di�dX¡d �dT¡ �dj}|   t(t �dk|¡ƒd!¡ |   t �dl�dm¡ ¡ d;¡ |   t �dn�do¡d �do¡ t �dp¡}�dq}	|   �drd„ | |	¡D ƒ�ds�dtg¡ |   t �du�dvtj¡ ¡ �dw¡ |   t �dx�dvtj¡ ¡ �dy¡ |   t �dz�d{¡ ¡ �d|¡ |   t �d}�d{¡d ¡ |   t �d~�d¡ ¡ �d€¡ |   t �d~�d�¡�d‚�dƒg¡ |   t �d„�d…¡ 	dd!¡�d†¡ |   t �d‡�d…¡ 	dd!¡�d†¡ |   t �d„�dˆ�d…¡�d‰¡ |   t �d‡�dˆ�d…¡�d‰¡ |   tj�dŠ�d‹�dŒg�d�� ¡ dŽ¡ |   tj�dŽ�d‹�dŒg�d�� ¡ dŽ¡ |   t �d��d�¡ ¡ �d‘¡ |   t �d’�d�¡ ¡ �d‘¡ |   t �d“�d”¡ ¡ �d•¡ |   t �d“�d–¡ ¡ �d•¡ |   t �d—�d–¡ ¡ �d•¡ tj�d˜�d™�dšg�d›�}
t) *|
¡}t) +|¡}
|   |
 �d™¡ ¡ d8¡ |   tj�dœ�d�tjd� ¡ �d|¡ |   tj�dœ�džtjd� ¡ �dŸ¡ |   tj�dœd�tjd�d ¡ |   tj�d �d�tjd� ¡ �d|¡ |   tj�d �džtjd� ¡ �dŸ¡ |   tj�d d�tjd�d ¡ |  ,tj�d¡d`„ ¡ |  ,tj�d¢d`„ ¡ |   tt �d£¡ƒd¡ |   tt �d¤¡ƒd¡ |   t �d¥�d¦tj-¡�d§�d¨g¡ |   tj�d©�dªd�d � ¡ �d«¡ �d¬}�d­}|   tt �d®| |¡ƒd¡ |   tt �d®| |¡ƒd¡ |   tt �d¯| |¡ƒd—¡ |   tt �d¯| |¡ƒd—¡ |   tt �d°| |¡ƒd—¡ |   tt �d°| |¡ƒd—¡ |   ttj�d±�d²�d³�d²g�d´�ƒd¡ |   ttj�dµ�d²�d³�d²g�d´�ƒd¡ |   ttj�d¶�d²�d³�d²g�d´�ƒd¡ |   ttj�d·�d²�d³�d²g�d´�ƒd¡ |   tj�d¸�d¹�dº�d»g�d´� ¡ �d¼¡ |   tj�d½�d¹�dº�d»g�d´� ¡ �d¼¡ |   t �d¾�d¿¡ ¡ �dÀ¡ |   t �dÁ�d¿¡ ¡ �dÀ¡ |   t �dÂ�dÃ¡ ¡ �dŸ¡ |   t �dÂ�dÄ¡d ¡ |   t �dÅ�dÆ¡ ¡ �dÇ¡ |   t �dÈ�dÉ¡ ¡ �dÊ¡ �dË}�dÌ}|   tt ||¡ƒd—¡ |   tt �dÍ�d™¡ƒd¡ |   tt �dÎ�d™¡ƒd—¡ |   tt �dÏ�d™¡ƒd¡ |   tt �dÐ�d™¡ƒd—¡ |   tt �dÑ�dÒ¡ƒd—¡ |   t �dÓ�dÔ¡ 
¡ �dÕ¡ |   t �dÖ�d×tj¡ ¡ �dŸ¡ |   t �dÖ�d×tj¡j dÂ¡ |   t �dØ�d×tj¡ ¡ �dŸ¡ |   t �dØ�d×tj¡j dÂ¡ |   t �dÙ�dÚtj¡ ¡ �dÛ¡ |   t �dÙ�dÚtj¡j �dÜ¡ |   tj�dÝ�dÞtjtjB d� ¡ �dß¡ |   t �dà�d?¡�dCg¡ |   t �dá�d?¡�dCg¡ |   t �dâ�dã¡�dä�dåg¡ |   t �dæ�dã¡g ¡ |   t �dç�dã¡�dåg¡ |   t �dè�dã¡g �dé¢¡ |   t �dê�dë¡ 	¡ �dì¡ |   t �dí�dë¡ 	¡ �dì¡ |   t �dî�dï¡ 	¡ �dð¡ |   t �dñ�dï¡ 	¡ �dð¡ |   t �dò�dë¡ 	¡ �dì¡ |   t �dó�dë¡ 	¡ �dì¡ |   t �dô�dï¡ 	¡ �dð¡ |   t �dõ�dï¡ 	¡ �dð¡ |   t �dö�d÷¡ 	¡ �d÷¡ |   t �dø�d÷¡ 	¡ �d÷¡ |   t �dù�d÷¡ 	¡ �d÷¡ |   t �dú�d÷¡ 	¡ �d÷¡ |   tj�dûd—d—�dü��dý¡ |   tj�dûd—d�dü��dþ¡ |   tj�dûdd—�dü��dÿ¡ |   tj�dûdd�dü��d ¡ |   t �dû¡�dÿ¡ |   t �ddg¡ ¡ d:¡ |   t �d�d¡ ¡ d:¡ |   t �d�d¡ ¡ �d¡ |   t �ddÖ¡ ¡ �d¡ |   t �ddÖ¡ ¡ �d¡ |   t �dd$¡ 
¡ �d¡ |   t �dd$¡ .¡ �d	d i¡ |   t �dd$¡ /¡ �d	d/gi¡ |   t �d
d$¡ 
¡ �d¡ |   t �d
d$¡ .¡ �d	d i¡ |   t �d
d$¡ /¡ �d	d/gi¡ |   t �dd$¡ 
¡ �d¡ |   t �dd$¡ .¡ �d	d i¡ |   t �dd$¡ /¡ �d	d/gi¡ |   tt �dd¡ƒd¡ |   tj�d�dd�d � ¡ �d¼¡ |   tj�d�dd�d � ¡ �d¼¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd—¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd—¡ |   tt �d�d¡ƒd¡ |   tt �d�d¡ƒd—¡ |   tt �d �d!¡ƒd¡ |   tt �d"�d!¡ƒd—¡ |   t &�d#d$¡ d�¡g �d$¢¡ |   t &�d#d$¡ 	d�¡d ¡ |   t &�d%d$¡ d�¡g �d$¢¡ |   t &�d%d$¡ 	d�¡�d&¡ |   tj�d'dŒd�d �j'd—¡ |   tj�d'�d(d�d �j'd—¡ |   tj�d)dÖd�d �j'd—¡ |   tj�d*dŒd�d �j'd—¡ |   tj�d*�d(d�d �j'd—¡ |   tj�d+dŒd�d �j'd—¡ |   tj�d+�d(d�d �j'd—¡ |   tj�d,dŒd�d �j'd—¡ |   tj�d-dŒd�d �j'd—¡ |   tj�d-�d(d�d �j'd—¡ |   tj�d.dŒd�d �j'd—¡ |   tj�d.�d(d�d �j'd—¡ |   tj�d/dÖd�d �j'd—¡ |   tj�d0dŒd�d �j'd—¡ |   tj�d0�d(d�d �j'd—¡ |   tj�d1dŒd�d �j'd—¡ |   tj�d1�d(d�d �j'd—¡ |   tj�d2dŒd�d �j'd—¡ |   tj�d3dŒd�d �j'd—¡ |   tj�d3�d(d�d �j'd—¡ |   tj�d4dÖd�d �j'd—¡ |   tj�d5dÖd�d �j'd—¡ |   tj�d6dÖd�d �j'd—¡ |   tj�d7dÖd�d �j'd¡ |   tj�d8dÖd�d �j'd¡ |   tj�d9dÖd�d �j'd¡ |   tj�d7d/d�d �j'd—¡ |   tj�d8d/d�d �j'd—¡ |   tj�d9d/d�d �j'd—¡ |   tj�d:dÖd�d �j'd—¡ |   tj�d;dÖd�d �j'd—¡ |   tj�d<dÖd�d �j'd—¡ |   tj�d=dÖd�d �j'd¡ |   tj�d>dÖd�d �j'd¡ |   tj�d?dÖd�d �j'd¡ |   tj�d=d/d�d �j'd—¡ |   tj�d>d/d�d �j'd—¡ |   tj�d?d/d�d �j'd—¡ |   tj�d@�dAd�d �j'd—¡ �dB}�dC}tj||tjd�}|   |j dÂ¡ |   |j0g �dDgg f¡ |   t �dE�dF¡j �dG¡ |   t �dE�dH¡j d¸¡ |   t �dI�dJ¡�dJg¡ |   tt �dKd/¡ƒd¡ |   tt �dLd/¡ƒd¡ |   t &�dM�dL¡ ¡ d8¡ |   t �dN�dO¡ /¡ �dPgg �dPg�dQœ¡ |   t �dR�dS¡j0g g g �dT¢f¡ |   t �dU�d&¡j �dV¡ |   t �dU�d&¡j0dgg d!gf¡ |   t �dW�d&¡j �dX¡ |   t �dW�d&¡j0g g dgf¡ |   t �dY�d&¡j �dX¡ |   t �dY�d&¡j0g g dgf¡ |   t �dZ�d[¡j �d\¡ |   t �d]�d[¡j d¸¡ |   t �d^�d[¡j d¸¡ |   t �d_�d`¡j �da¡ |   t �db�d`¡j �da¡ |   t &�dc�dd¡j d¸¡ |   t &�de�dd¡j d¸¡ |   t �df�dg¡d ¡ d S (h  Nz(?>b)r  Tz^((?>\w+)|(?>\s+))*$z\((?:(?>[^()]+)|(?R))*\)za(bcd(e)f)g(h)z	(bcd(e)f)z(h)z\((?:(?:[^()]+)|(?R))*\)za(b(cd)e)f)g)hz(b(cd)e)za(bc(d(e)f)ghz(d(e)f)z(?r)\((?:(?>[^()]+)|(?R))*\)c                 S   r:  r   r;  r¿   r   r   r   rÁ   ;  r—  z+RegexTests.test_hg_bugs.<locals>.<listcomp>z\((?:[^()]*+|(?0))*\)za(b(c(de)fg)hz	(c(de)fg)za(bc)dr�  r   z([\da-f:]+)$rÒ  rë  z^(?=ab(de))(abd)(e)Úabde)rp  rè   rë  z\ rÃ   z^(a|)\1{2}br�   r5   )r�   r¤   z	^(a){0,0}rž   rÏ  z(?>.*/)bza/bz(?V0)((?i)blah)\s+\1ú	blah BLAH)rÀ  Úblahz(?V1)((?i)blah)\s+\1z(\()?[^()]+(?(1)\)|)z(abcdz(a*)*rU   ©r5   r5   rî   ©r¬   r¬   r7   ©r6   r6   z	a(?#xxx)*z(?=abc){3}abcÚ	abcabcabcr9   z^(?:a(?:(?:))+)+r   r&  za(?x: b c )dza#comment
*z(?V1)(a(?(1)\1)){1}Ú
aaaaaaaaaarÿ   z(?V1)(a(?(1)\1)){2})r9   r4   z(?V1)(a(?(1)\1)){3})r2  rq  z(?V1)(a(?(1)\1)){4})r-  )rþ   rX   z(?V1)(a)(?<=b(?1))Úbazz(?fi)\L<keywords>u)   POST, Post, post, poÅ¿t, poï¬†, and poï¬…rµ  r  )Úkeywords)r¶  ÚPostrµ  u   poÅ¿tr·  õ   poï¬…z(?fi)pos|post)r¸  ÚPosr  u   poÅ¿r·  rÊ  z(?fi)post|posz(?fi)post|anotherz(?V1)((a)(?1)|(?2))r¬   r�  z(?V1)(\1xx|){6}rR   )r&  rÃ  z(a|)+rÔ   z(a|)*\dÚPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz^(?:a?b?)*$rÚ   c                   S   rj  )Nz\N{1}rk  r   r   r   r   rN   ¾  rl  z)RegexTests.test_hg_bugs.<locals>.<lambda>r2  za
a
rª  z(q1|.)*(q2|.)*(x(a|bc)*y){2,}Úxayxayz(?i)[^a]r`   z(?i)[[:ascii:]]u   â„ªz((a|b(?1)c){3,5})Úbaaaaca)r¦  r¦  rU   z(?<=:\S+ )\w+z:9 abc :10 defr“  z(?<=:\S* )\w+z(?<=:\S+? )\w+z(?<=:\S*? )\w+z(?:fe)?maleÚfemalec                 S   r:  r   r;  r¿   r   r   r   rÁ   ä  r—  z!(fe)?male: h(?(1)(er)|(is)) (\w+)z(female: her dog; male: his cat. asdsasdazfemale: her dogzmale: his catz (?<rec>\((?:[^()]++|(?&rec))*\))zaaa(((1+0)+1)+1)bbbÚrec)z(1+0)z	((1+0)+1)z(((1+0)+1)+1)c                   S   rƒ   )Nr!   ú\r…   r   r   r   r   rN   ï  r†   z%(CAGCCTCCCATTTCAGAATATACATCC){1<e<=2}Ú®tcagacgagtgcgttgtaaaacgacggccagtCAGCCTCCCATTCAGAATATACATCCcgacggccagttaaaaacaatgccaaggaggtcatagctgtttcctgccagttaaaaacaatgccaaggaggtcatagctgtttcctgacgcactcgtctgagcgggctggcaaggÚtCAGCCTCCCATTCAGAATATACATCCzc..+/cz
cA/c
cAb/czcAb/cz(\w+)rw  u#   à¤…à¤¨à¥�â€�à¤¨ à´¨àµ�â€� à¤•à¤¿à¤¨u)   [à¤…à¤¨à¥�â€�à¤¨] [à´¨àµ�â€�] [à¤•à¤¿à¤¨]z.*a.*ba.*aaÚababbaz(?<x>a(?<x>b))rä   r!   r¡  z(-)c                 S   s
   |   d¡S )Nr!   )rø   rL   r   r   r   rN   
  ó   
 r  Úaxbxcz\bt(est){i<2}z	Some textc                   S   rj  )Nz.???rk  r   r   r   r   rN     rl  zfoo!?F)Úspecial_onlyzfoo\!\?zfoo!\?s   foo!?s   foo\!\?s   foo!\?z^([^z]*(?:WWWi|W))?$ÚWWWi)rØ  z^([^z]*(?:WWWi|w))?$z^([^z]*?(?:WWWi|W))?$r0   c                 S   r:  r   r;  ©rÀ   r!   r   r   r   rÁ   .  r—  Úyxxxc                 S   r:  r   r;  rÙ  r   r   r   rÁ   2  r—  c                 S   r:  r   r;  rÙ  r   r   r   rÁ   7  r—  c                 S   r:  r   r;  rÙ  r   r   r   rÁ   ;  r—  r–   z(?V0).*r^   z(?V1).*z(?V0).*?rí   z	|||||||||z	|t|e|s|t|z(?V1).*?z^(@)\n(?!.*?@)(.*)z\1\n==========\n\2z@
z@
==========
r€  Úcazr‡  rƒ  z(?b)(?:cats|cat){e<=1}z(?:cat){e<=1}z(?e)(?:cat){e<=1}z(?b)(?:cat){e<=1}z(?:cats){e<=2}zc ats)r5   r5   r   z(?e)(?:cats){e<=2}r†  z(?b)(?:cats){e<=2}zc a ts)r   r¬   r   z(?: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]rý   z(?V1)[b-e--cd]z(?V1)[[bcde]--cd]z(?V1)[bcde--cd]z ^unknown property at position 4$c                   S   rj  )Nz\p{}rk  r   r   r   r   rN   Š  rÕ  z(?:()|(?(1)()|z)){2}(?(2)a|z))rU   r¤   r¤   z(?:()|(?(1)()|z)){0,2}(?(2)a|z)r¤   c                 s   rh  r   ri  rj  r   r   r   rk  ™  rl  z*RegexTests.test_hg_bugs.<locals>.<genexpr>i   z[[: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]+r?  rE  s   (?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$u   abâ„ƒu   â„ƒz([^L]*)([^R]*R)ÚLtR)r¤   rÜ  r$  zx\1yÚxayxbyr%  zx{1}yz(a)*abcr±  ÚOXRGÚOOGOXrt  z.XRGz	.{1,3}XRG)r5   r,  zR|RÚRz(.)(?(1)(?!))rÙ  z(y)?(\d)(?(1)\b\B)Úax1y2z3b))r¤   rv  )r¤   Ú2)r¤   rK  z(y)?+(\d)(?(1)\b\B)c                 S   r:  r   ©r<   r¿   r   r   r   rÁ     r—  z(?i)(?:error){e}zregex failure)rb  )r,  rX   )rX   rZ   )rZ   rZ   c                 S   r:  r   rã  r¿   r   r   r   rÁ     r—  z(?fi)(?:error){e}z(?p)\d+(\w(\d*)?|[eE]([+-]\d+))Ú10b12z10E+12z(?p)(\w|ae|oe|ue|ss)Úaez(?p)one(self)?(selfsufficient)?Úoneselfsufficientz(ab\Kcd))rå   r�  z
\w\w\K\w\wÚabcdefghrå   Úghz(\w\w\K\w\w)Úefghz(?r)(ab\Kcd))rä   r�  z(?r)\w\w\K\w\wr  z(?r)(\w\w\K\w\w)z6(?(DEFINE)(?<quant>\d+)(?<item>\w+))(?&quant) (?&item)z5 elephantsz12(*FAIL)|3Ú123rK  z(?r)12(*FAIL)|3z\d+(*PRUNE)\dz\d+(?=(*PRUNE))\dz\d+(*PRUNE)bcd|[3d]Ú123bcdÚ123zzdræ   z\d+?(*PRUNE)bcd|[3d]Ú3bcdz\d++(?<=3(*PRUNE))zzd|[4d]$Ú124zzdz\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]$zˆJune 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(?<!\d)(?>2014|2013 ?2012)z1(?>2)Ú12zn(?V1w)(?=(?=[^A-Z]*+[A-Z])(?=[^a-z]*+[a-z]))(?=\D*+\d)(?=\p{Alphanumeric}*+\P{Alphanumeric})\A(?s:.){8,255}+\ZzAAaa11!!z‡(?smx)
(?(DEFINE)
  (?<subcat>
   ^,[^,]+,
   )
)

# 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
c                 S   s   g | ]}|  d d¡‘qS r¡  rã  r¿   r   r   r   rÁ   §  s    )rb  )r¬   r\   )rb  )é6   é;   z(abcdefgh){e}z******abcdefghijklmnopqrtuvwxyz)rþ   r.  z(abcdefghi){e})rþ   r(  z(?:(?=\d)\d+\b|\w+)rî  r2  z(?(?=\d)\d+\b|\w+)z (?(?<=love\s)you|(?<=hate\s)her)z
I love yourO  z&I love you but I don't hate her eitherÚyouÚherz(?p)a*(.*?)Úaaabbb)rô  Úbbbz
(?p)a*(.*)r„   rõ  z(?irV0)\L<kw>Ú21rv  )Úkwz(?irV1)\L<kw>za|bÚ111a222rø  z(?r)a|bz(?if)<(CLI)><\1>z
<cli><cli>r-  z
<cli><clI>z(?ifr)<\1><(CLI)>z\L<options>r‚  r„  r0  z(x{6}){e<=1}ÚxxxxxxÚxxxxxrb  z(?r)(x{6}){e<=1}c                   S   rj  )Ns   00000\0\00\^(\00\U05000000rk  r   r   r   r   rN   ë  rl  c                   S   rj  )Ns   {e<lrk  r   r   r   r   rN   ï  rÕ  z	((?0)){e}z	 ?(?0){e}z0((brown)|(lazy)){1<=e<=3} ((dog)|(fox)){1<=e<=3}z+The quick borwn fax jumped over the lzy hog)Úborwnrû  r¤   Úfaxr¤   rü  )Úlzyr¤   rý  Úhogrþ  r¤   z\d\d\d-\d\d-\d\d\d\dz$My SSN is 999-89-76, but don't tell.)é$   rÿ  u   Ð™u   Ð¹z(?ui)z(?ai)z(?afi)z
(?i)\L<aa>Ú22Ú121)rî   z(?ri)\L<aa>z(?fi)\L<aa>z(?fri)\L<aa>z(?r)\1dog..(?<=(\L<aa>))$ÚccdogccÚbcbÚccrG  z(?ir)\1dog..(?<=(\L<aa>))$z(2)(?:\1{5}){e<=1}Ú3222212)r5   r\   z(\d)(?:\1{5}){e<=1}z&\A(?P<whole>(?>\((?&whole)\)|[+\-]))\Zz((-))z((-)+)zx.*? (.).*\1(.*)\1z	x  |y| z|rp  z\.sr (.*?) (.)(.*)\2(.*)\2(.*)z#.sr  h |<nw>|<span class="locked">|)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<http_referer>((?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``)))) (?P<useragent>((?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))))zfoo(?<=foo)zfoo(?<!foo)zfoo(?<=foo|x)zfoo(?<!foo|x)z0(?(?=.*\!.*)(?P<true>.*\!\w*\:.*)|(?P<false>.*))rð  z\w*(ea)\w*|\w*e(?!a)\w*Úeasier)Úeaz(^1234$){i,d}Ú12234z(^1234$){s,i,d}z(^123$){s,i,d}Úxxxxxxxx123)r   rY   )r   r.  r   za?yzÚxxxxyz)r®   rþ   z(?:(?![a-d]).)+z.(?(DEFINE)(?P<mydef>(?:(?![a-d]).)))(?&mydef)+z((\w{1,3})(\.{2,10})){1,3}z("Erm....yes. T..T...Thank you for that."©zErm....ÚErmz....©zT...ÚTr÷  z((\w{1,3})(\.{2,10})){3}z((\w{1,3})(\.{2,10})){2}z((\w{1,3})(\.{2,10})){1})r  )zT..r  r=  r  z(?:ESTONIA(?!\w)){e<=1}zESTONIAN WORKERSÚESTONIANz(?:ESTONIA(?=\W)){e<=1}z(?:(?<!\w)ESTONIA){e<=1}zBLUB NESTONIAÚNESTONIAz(?:(?<=\W)ESTONIA){e<=1}z(?r)(?:ESTONIA(?!\w)){e<=1}z(?r)(?:ESTONIA(?=\W)){e<=1}z(?r)(?:(?<!\w)ESTONIA){e<=1}z(?r)(?:(?<=\W)ESTONIA){e<=1}z(?:A.*B.*CDE){e<=2}zA B CYZz(?:A.*B.*?CDE){e<=2}z(?:A.*?B.*CDE){e<=2}z(?:A.*?B.*?CDE){e<=2}z ,0A[)r×  Úliteral_spacesz\ \,0A\[z \,0A\[z\ ,0A\[z ,0A\[z(?(?=A)A|B)r  z
(?(?=A)A|)r1   z
(?(?=X)X|)z(?(?=X))z(?(DEFINE)(?<func>.))(?&func)r   Úfuncz!(?(DEFINE)(?<func>.))(?=(?&func))z#(?(DEFINE)(?<func>.)).(?<=(?&func))zab(?#comment\))cdz[a-z]+ [a-z]*?:r  z(?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}r´  z(?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>.)*(?&x)r�  z(?P<x>.)(?P<x>.)(?P<x>.)rµ   z(?:ab)*Úababz(?: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)++r/   za*?za*+r:   za+?za++z(?r)a*z(?r)a*?z(?r)a*+z(?r)a+z(?r)a+?z(?r)a++z(?:\s*\w+'*)+Úwhateveraz  (?P<termini5>GGCGTCACACTTTGCTATGCCATAGCAT[AG]TTTATCCATAAGATTAGCGGATCCTACCTGACGCTTTTTATCGCAACTCTCTACTGTTTCTCCATAACAGAACATATTGACTATCCGGTATTACCCGGCATGACAGGAGTAAAA){e<=1}(?P<gene>[ACGT]{1059}){e<=2}(?P<spacer>TAATCGTCTTGTTTGATACACAAGGGTCGCATCTGCGGCCCTTTTGCTTTTTTAAGTTGTAAGGATATGCCATTCTAGA){e<=0}(?P<barcode>[ACGT]{18}){e<=0}(?P<termini3>AGATCGG[CT]AGAGCGTCGTGTAGGGAAAGAGTGTGG){e<=1}Á?  GCACGGCGTCACACTTTGCTATGCCATAGCATATTTATCCATAAGATTAGCGGATCCTACCTGACGCTTTTTATCGCAACTCTCTACTGTTTCTCCATAACAGAACATATTGACTATCCGGTATTACCCGGCATGACAGGAGTAAAAATGGCTATCGACGAAAACAAACAGAAAGCGTTGGCGGCAGCACTGGGCCAGATTGAGAAACAATTTGGTAAAGGCTCCATCATGCGCCTGGGTGAAGACCGTTCCATGGATGTGGAAACCATCTCTACCGGTTCGCTTTCACTGGATATCGCGCTTGGGGCAGGTGGTCTGCCGATGGGCCGTATCGTCGAAATCTACGGACCGGAATCTTCCGGTAAAACCACGCTGACGCTGCAGGTGATCGCCGCAGCGCAGCGTGAAGGTAAAACCTGTGCGTTTATCGATGCTGAACACGCGCTGGACCCAATCTACGCACGTAAACTGGGCGTCGATATCGACAACCTGCTGTGCTCCCAGCCGGACACCGGCGAGCAGGCACTGGAAATCTGTGACGCCCTGGCGCGTTCTGGCGCAGTAGACGTTATCGTCGTTGACTCCGTGGCGGCACTGACGCCGAAAGCGGAAATCGAAGGCGAAATCGGCGACTCTCATATGGGCCTTGCGGCACGTATGATGAGCCAGGCGATGCGTAAGCTGGCGGGTAACCTGAAGCAGTCCAACACGCTGCTGATCTTCATCAACCCCATCCGTATGAAAATTGGTGTGATGTTCGGCAACCCGGAAACCACTTACCGGTGGTAACGCGCTGAAATTCTACGCCTCTGTTCGTCTCGACATCCGTTAAATCGGCGCGGTGAAAGAGGGCGAAAACGTGGTGGGTAGCGAAACCCGCGTGAAAGTGGTGAAGAACAAAATCGCTGCGCCGTTTAAACAGGCTGAATTCCAGATCCTCTACGGCGAAGGTATCAACTTCTACCCCGAACTGGTTGACCTGGGCGTAAAAGAGAAGCTGATCGAGAAAGCAGGCGCGTGGTACAGCTACAAAGGTGAGAAGATCGGTCAGGGTAAAGCGAATGCGACTGCCTGGCTGAAATTTAACCCGGAAACCGCGAAAGAGATCGAGTGAAAAGTACGTGAGTTGCTGCTGAGCAACCCGAACTCAACGCCGGATTTCTCTGTAGATGATAGCGAAGGCGTAGCAGAAACTAACGAAGATTTTTAATCGTCTTGTTTGATACACAAGGGTCGCATCTGCGGCCCTTTTGCTTTTTTAAGTTGTAAGGATATGCCATTCTAGACAGTTAACACACCAACAAAGATCGGTAGAGCGTCGTGTAGGGAAAGAGTGTGGTACCi¶  z)(?e)(dogf(((oo){e<1})|((00){e<1}))d){e<2}Údogfoodr„  Údogfootrç  u   ðŸ‘¨â€�ðŸ‘©â€�ðŸ‘§â€�ðŸ‘¦z(?=a)az(?!b)az
((\d)*?)*?zX(?(DEFINE)(?<mydef>(?<wrong>THIS_SHOULD_NOT_MATCHx?)|(?<right>right))).*(?<=(?&mydef).*)zx rightrN  )ÚmydefÚwrongrN  z?(?be)(AGTGTTCCCCGCGCCAGCGGGGATAAACCG){s<=5,i<=5,d<=5,s+i+d<=10}ÚTTCCCCGCGCCAGCGGGGATAAACCG)r   r5   r6   r,  z	(?:bc){e})r5   r   r5   z(?e)(?:bc){e}r‚  z(?b)(?:bc){e}z,(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){e}z$ 10,112.111.12)rþ   r   r,  z/(?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)r¬   r   r   z/(?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 world)1r&   rú   r)   r*   ÚV1r+   r˜  r;   rm   rŸ   r  r=   r]   r<   rs   r�   ÚUNDEF_CHAR_NAMEr$  rü  Ú	BESTMATCHrÜ  rc   ÚWORDÚspansrÿ  rA  ÚFULLCASEr  rH  rš   r›   r  r‹  ÚDEBUGr  rB  rF  r£  rŠ  r²  rs  ÚpickleÚdumpsÚloadsr¦  ÚENHANCEMATCHrö   r`  rŒ  )r
   ÚfzÚseqÚrxrà   Úrawrÿ  rW  Ú
TEST_REGEXÚ	TEST_DATAr�  rê   Úupper_iÚlower_irU   Úpy_regex_patternro   rM   r   r   r   Útest_hg_bugs&  s6  ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ

ÿþÿÿÿÿÿÿÿ
ÿ
ÿÿ
ÿÿÿÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿ
ÿÿ
þþ
ÿÿ
ÿÿ
ÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿ
ÿÿÿþ
ÿÿÿþýÿÿÿ
ÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿÿ
ÿÿ
ÿÿ
ÿÿÿÿÿÿ
ÿ
ÿÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿ
ÿÿÿ ÿ ÿÿÿÿÿÿÿ

ÿÿÿÿÿÿÿÿÿÿÿÿÿ
þÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ	ÿÿÿÿÿþÿÿÿÿÿÿ
ÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_hg_bugsc                 C   sÄ  |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt d	d¡ƒd¡ |   tt d
d¡ƒd¡ |   tt d	d¡ƒd¡ |   tt d
d¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd¡ƒd¡ |   tt dd ¡ƒd¡ |   tt d!d"¡ƒd¡ |   tt d!d#¡ƒd¡ |   tt dd$¡ƒd¡ |   tt dd%¡ƒd¡ |   tt d&d'¡ƒd¡ |   tt d&d(¡ƒd¡ d S ))Nz(?r)(?:a){e<=1:[a-z]}rë  Tz(?:a){e<=1:[a-z]}r—   Frå  rŽ  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)r  r‘  z4(?fiu)(?:\N{LATIN SMALL LETTER SHARP S}){e<=1:[a-z]}ÚtsÚstz5(?firu)(?:\N{LATIN SMALL LETTER SHARP S}){e<=1:[a-z]}z-szs-z4(?fiu)(\N{LATIN SMALL LETTER SHARP S})\1{e<=1:[a-z]}ÚssstÚsstsz5(?firu)\1{e<=1:[a-z]}(\N{LATIN SMALL LETTER SHARP S})ÚstssÚtssszss-szsss-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)u   stÃŸu   tsÃŸu   ÃŸ-su   ÃŸs-z(?firu)(ss)\1{e<=1:[a-z]}u   s-ÃŸu   -sÃŸr¨  r>   r   r   r   Útest_fuzzy_ext�  sh  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzRegexTests.test_fuzzy_extc                 C   s”   |   t dd¡ d¡d¡ |   t dd¡ d¡d¡ |   t dd¡ d¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ d S )Nz	(?P<x>.)+rž   z{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]})r&   r)   r=   r¥  r£  r>   r   r   r   Útest_subscripted_capturesè  s@   
ÿÿ
ÿþ
ÿþÿÿ
ÿþ
ÿþz$RegexTests.test_subscripted_capturesc                 C   sœ   t jdkrL|  t dd¡g d¢¡ |  t ddd¡d¡ |  t dd¡g d¢¡ |  dd	„ t dd¡D ƒg d
¢¡ |  dd	„ t dd¡D ƒg d¢¡ d S d S )Nr–   z\b|:+za::bc)r¤   rU   r¤   r¤   rÛ   r¤   r—   z-a---bc-)r¤   r¤   rº   r¤   r¤   c                 S   r:  r   rã  r¿   r   r   r   rÁ     r—  z2RegexTests.test_more_zerowidth.<locals>.<listcomp>)r1   rÂ  r4   rÄ  ©r,  r,  c                 S   r:  r   rã  r¿   r   r   r   rÁ     r—  z
(?m)^\s*?$z	foo


bar)rª  )r®   r,  r:  )rš   r›   r&   r)   rÆ   rc   r+   r˜  r>   r   r   r   Útest_more_zerowidthû  s   
ÿÿÿÿøzRegexTests.test_more_zerowidthr   )„r   r   r   rx   ru   rŽ   r¥   r¨   r¦   r§   rª   rú  rü  r_  rm  rÌ  rÍ  rÎ  rÏ  rÐ  rÑ  rù  rû  rý  rþ  rÿ  r   ÚDUPLICATE_GROUPr,  r  r'   r.   r?   rD   re   rh   rj   rv   ry   r�   r”   r•   rœ   r¡   r«   r±   rÈ   rÊ   rÒ   rÕ   rá   rë   rð   r÷   rù   rû   r  r  r  r  r   r$  r8  r9  r<  r>  rD  rG  rM  rO  r^  r`  re  ri  rn  rq  ru  rv  r‡  rŒ  rŽ  r‘  r“  rš  rœ  rŸ  r¨  r«  r¯  r³  r¶  rÒ  r×  rÞ  rá  r  r  r  r&  r'  r*  r+  r-  r/  r3  r4  r<  r?  r@  rA  rX  r]  ra  ru  r  r
  r  r%  r/  r8  rJ  r�  r˜  r   r¦  r©  r°  r¾  r1  r8  r9  r;  r   r   r   r   r      s"   
%9	3%!X			" 9b:	0*6M     p	6 BG+P5        rXr   )r6   r¬   r   c                   C   s   t jdd� d S )Nr¬   )Ú	verbosity)ÚunittestÚmainr   r   r   r   Ú	test_main  r   r@  Ú__main__)Úweakrefr   rš  r$  r)   r	  rš   r>  rA   r   rF  r   ÚTestCaser   r›   ÚassertRaisesRegexprs   r@  r   r   r   r   r   Ú<module>   sd                                      

ÿ