
    Xe\                        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e          Z	 G d de
          Z G d dej                  Zd	 Zed
k    r e             dS dS )    )proxyNc                        e Zd Z fdZ xZS )StrSubclassc                 `    t          t                                          |                    S N)r   super__getitem__selfindex	__class__s     0lib/python3.11/site-packages/regex/test_regex.pyr	   zStrSubclass.__getitem__   s#    577..u55666    __name__
__module____qualname__r	   __classcell__r   s   @r   r   r   
   s8        7 7 7 7 7 7 7 7 7r   r   c                        e Zd Z fdZ xZS )BytesSubclassc                 `    t          t                                          |                    S r   )r   r   r	   r
   s     r   r	   zBytesSubclass.__getitem__   s#    UWW0077888r   r   r   s   @r   r   r      s8        9 9 9 9 9 9 9 9 9r   r   c                      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dd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. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd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                 `                           ||            fd ||           d S )Nc                     t          |t          t          f          r$t          | |          D ]\  }} ||           d S                     t          |           t          |                     d S r   )
isinstancetuplelistzipassertIstype)actualexpectxymsgrecurser   s       r   r(   z,RegexTests.assertTypedEqual.<locals>.recurse2   s{    &5$-00 ?// " "DAqGAqMMMM" " d6llDLL#>>>>>r   )assertEqual)r   r#   r$   r'   r(   s   `  `@r   assertTypedEqualzRegexTests.assertTypedEqual/   sZ    ---	? 	? 	? 	? 	? 	? 	? 	r   c                     d}t          j        d          }t          |          }|                    d          |                    d          k    r|                                  d S d S )NQabbbcRzab+c)regexcompiler   findallfail)r   sr%   r&   s       r   test_weakrefzRegexTests.test_weakref;   s]    M&!!!HH99Y199Y#7#777IIKKKKK 87r   c                 b   |                      t          j        dd                              d          d           |                      t          j        dd                                          d           |                      t          j        dd                              d          d           |                      t          j        dd                                          d           |                      t          j        d	d
          d            |                      t          j        dd                              d          d           |                      t          j        dd                                          d           |                      t          j        dd                              d          d           |                      t          j        dd                                          d           |                      t          j        dd          d            d S )Na*xxxr   r   r   zx*axxx+      r%   aaaxxxar   r;   a+)r)   r-   searchspanmatchr   s    r   test_search_star_plusz RegexTests.test_search_star_plusB   s   dE2277::FCCCdE2277996BBBdE2277::FCCCdE2277996BBBc5114888T51166q996BBBT5116688&AAAT62277::FCCCT62277996BBBT511488888r   c                 P    t          |d                   }t          |dz             S )Nr   r:   )intstr)r   matchobj	int_values      r   bump_numzRegexTests.bump_numN   s%    $$	9q=!!!r   c                    |                      t          j        ddd          d           |                      t          j        d| j        d          d           |                      t          j        d| j        dd          d	           |                      t          j        d
d d          d           |                      t          j        d
dd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          t	          d          t	          d          z   t	          d          z   t	          d          z   t	          d          z   t	          d          z              |                      t          j        d d!d"          d#           |                      t          j        dd$d          d           |                      t          j        dd%d          d           |                      t          j        dd&d          d           |                      t          j        dd'd          d(           |                      t          j        d)d*d)          d+           d S ),N(?i)b+r%   	bbbb BBBBx x\d+z08.2 -2 23x99yz9.3 -3 24x100yr;   z9.3 -3 23x99y.c                     dS )N\n ms    r   <lambda>z1RegexTests.test_basic_regex_sub.<locals>.<lambda>Y   s    % r   rR   
(?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\bz	
	
	   
               z^\s*XtestXtestz\x0Az\u000Az
\U0000000Az\N{LATIN CAPITAL LETTER A}A   xs   \x0A   
)r)   r-   subrJ   chrrC   s    r   test_basic_regex_subzRegexTests.test_basic_regex_subR   s   8S+>>FFF64=:JKK
	 	 	64=:JANN
	 	 	 	3==uEEE3s33T::::}dCCVLLL:}dCCVLLL<1BDII
	 	 	<EEvNNN3(93??AQRRR3<<nMMM3<<c!ffs2ww>NGG?"gg? #B?(*-a&&?1 	2 	2 	2 	7C88'BBB4#66===4C88$???4<<dCCC4)F
 	 	 	 	5(D995AAAAAr   c                 Z    |                      t          j        ddd          d           d S )Nr[   z\g<1>\g<1>\brY   zxxxxr)   r-   rj   rC   s    r   test_bug_449964zRegexTests.test_bug_449964q   s7    =/4HH
	 	 	 	 	r   c                 V   |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           d S )Nz\r\nrR   z
abc
def
zabc
def

rW   rn   rC   s    r   test_bug_449000zRegexTests.test_bug_449000v   s    7E3CDD
	 	 	652BCC
	 	 	7D2BCC
	 	 	641ABB
	 	 	 	 	r   c                 P   t          j        d          |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd           d S )NrP   c                  D    t          j         dt           j                  S Nrg   )r-   rB   Ipatterns   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %+gsEG44 r   c                  D    t          j         dt           j                  S ru   r-   r@   rv   rw   s   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %,wUW55 r   c                  D    t          j         dt           j                  S ru   )r-   r/   rv   rw   s   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %-eg66 r   c                  B    t          j         t           j                  S r   )r-   r.   rv   rw   s   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %-11 r   )r-   r.   assertRaisesRegex
ValueErrorFLAGS_WITH_COMPILED_PATr   rx   s    @r   test_bug_1661zRegexTests.test_bug_1661   s    -$$z4+G
4
4
4
4	6 	6 	6z4+G
5
5
5
5	7 	7 	7z4+G
6
6
6
6	8 	8 	8z4+G
1
1
1
1	3 	3 	3 	3 	3r   c           	          |                      t          t          t          j        d                              | j                   d S )Nz(?P<quote>)(?(quote)))r)   reprr"   r-   r.   PATTERN_CLASSrC   s    r   test_bug_3629zRegexTests.test_bug_3629   sG    d5=1H#I#IJJKK

	 	 	 	 	r   c                 
   |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dd	d          d
           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d
           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d            |                     t          j        | j        d!            |                     t          j        | j        d"            |                     t          j        | j        d#            |                     t          j        | j        d$            |                     t          j        | j        d%            |                     t          j        | j        d&            |                     t          j        | j        d'            |                     t          j        | j        d(            |                     t          j        | j        d)            |                     t          j        | j        d*            |                     t          j        | j        d+            |                     t          j        | j        d,            |                      t          j        d-d.d          d           |                      t          j        d/d0d1          d2           |                      t          j        d/d3d1          d4           d S )5Nr%   \0 z\000z\001z\008z 8z\009z 9z\111rv   z\117Oz\1111I1z\00z\07z\08\09z\0az az\400u   Āz\777u   ǿrh   s   \400    s   \777   c                  .    t          j        ddd          S )Nr%   \1r-   rj   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>       
)C
$
$ r   c                  .    t          j        ddd          S )Nr%   z\8r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   z\9r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   \11r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>       
)C
%
% r   c                  .    t          j        ddd          S )Nr%   z\18r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   z\1ar   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   z\90r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   z\99r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   \118r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>       
)C#
&
& r   c                  .    t          j        ddd          S )Nr%   \11ar   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   z\181r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )Nr%   z\800r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   z(((((((((((x)))))))))))r   z((((((((((y))))))))))(.)r   xyzxz8r   xza)r)   r-   rj   r}   errorINVALID_GROUP_REFrC   s    r    test_sub_template_numeric_escapez+RegexTests.test_sub_template_numeric_escape   s6   3s33T:::355v>>>355v>>>355zBBB355zBBB355v>>>355v>>>3#66@@@3#66EEE344f===344f===344jAAA344jAAA344jAAA355x@@@355x@@@4488'BBB4488'BBBu{D,B E% E% 	& 	& 	&u{D,B E% E% 	& 	& 	&u{D,B E% E% 	& 	& 	&u{D,B E& E& 	' 	' 	'u{D,B E& E& 	' 	' 	'u{D,B E& E& 	' 	' 	'u{D,B E& E& 	' 	' 	'u{D,B E& E& 	' 	' 	'u{D,B E' E' 	( 	( 	(u{D,B E' E' 	( 	( 	(u{D,B E' E' 	( 	( 	(u{D,B E' E' 	( 	( 	( 	#<fcJJ
	 	 	#=wNN
	 	 	#=wNN
	 	 	 	 	r   c                     |                      t          j        ddd          d           |                      t          j        dddd          d           d S )Nr\   baaaaabbbbbr:   baaaarn   rC   s    r   test_qualified_re_subz RegexTests.test_qualified_re_sub   sR    3W55w???3Wa88'BBBBBr   c                 Z    |                      t          j        ddd          d           d S )Nz(\S)\s+(\S)z\1 \2zhello  therezhello therern   rC   s    r   test_bug_114660zRegexTests.test_bug_114660   s7    >8^LL
	 	 	 	 	r   c                 x   t           j        dk    r+|                     t          j        ddd          d           n*|                     t          j        ddd          d           |                     t          j        ddd          d           |                     t          j        ddd          d	           d S )
Nr;   rc   r   z(?V0)x*-abxdz-a-b--d-z-a-b-d-z(?V1)x*r8   zab-dsysversion_infor)   r-   rj   rC   s    r   test_bug_462270zRegexTests.test_bug_462270   s    y((UYy#v>>
KKKKUYy#v>>	JJJ9c6::JGGG4f55v>>>>>r   c                     d}|                      t          j        d|z   dz   d                              |          d           d S )N   ÿz(?P<z>a)abcr\   )r)   r-   r@   group)r   
group_names     r   test_bug_14462zRegexTests.test_bug_14462   sU    
g
&:U&B
 z""C	) 	) 	) 	) 	)r   c                    |                      t          j        | j        d            |                      t          j        | j        d            |                      t          j        | j        d            |                      t          j        | j        d            |                      t          j        | j        d            |                      t          | j        d            | 	                    t          j
        ddd	          d
           | 	                    t          j
        ddd	          d
           |                      t          j        | j        d            d S )Nc                  .    t          j        ddd          S )NrX   z\g<arY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>   s    
)J
.
. r   c                  .    t          j        ddd          S )NrX   z\g<rY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>   s    
)J
-
- r   c                  .    t          j        ddd          S )NrX   \grY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>   s    
)Jt
,
, r   c                  .    t          j        ddd          S )NrX   z\g<a a>rY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>       
)J
D
1
1 r   c                  .    t          j        ddd          S )NrX   z\g<1a1>rY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>   r   r   c                  .    t          j        ddd          S )NrX   z\g<ab>rY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>       
)J	4
0
0 r   z(?P<a>x)|(?P<b>y)z\g<b>rY    z\2c                  .    t          j        ddd          S )NrX   z\g<-1>rY   r   rS   r   r   rV   z/RegexTests.test_symbolic_refs.<locals>.<lambda>   r   r   )r}   r-   r   
MISSING_GTMISSING_GROUP_NAME
MISSING_LTBAD_GROUP_NAME
IndexErrorUNKNOWN_GROUP_Ir)   rj   rC   s    r   test_symbolic_refszRegexTests.test_symbolic_refs   s   u{DO >/ >/ 	0 	0 	0u{D,C F. F. 	/ 	/ 	/u{DO >- >- 	. 	. 	.u{D,? B2 B2 	3 	3 	3u{D,? B2 B2 	3 	3 	3z4+? B1 B1 	2 	2 	2
 	#6$GGLLL#6tDDbIII 	u{D,? B1 B1 	2 	2 	2 	2 	2r   c                    |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        d	dd          d
           |                      t          j        d	ddd          d           d S )NrL   r%   rM   )rN      zb+)zx BBBBr:   r   )r   r   zb*)xxxyxzx   r   )xxxyzr   )r)   r-   subnrC   s    r   test_re_subnzRegexTests.test_re_subn   s    Hc;??LLLD#{;;]KKKD#u55zBBBD#u55~FFFD#ua88,GGGGGr   c                 2   |                      t          j        dd          g d           t          j        dk    r|                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        d	d          g d           |                      t          j        d
d          g d           n|                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        d	d          g d           |                      t          j        d
d          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      d t          j        dd          D             g d           |                      t          j        dd          g d           |                      d t          j        dd          D             g d           |                      t          j        dd          g d           |                      d t          j        dd          D             g d           |                      t          j        dd          g d           |                      d  t          j        dd          D             g d           |                      t          j        d!d"          g d#           |                      t          j        d$d"          g d%           |                      t          j        d&d"          g d'           d S )(N::a:b::cr   r\   r   r   cr   :*r   r   r\   r   r   r   r   r   (:*)r   r   r   r   r\   r   r   r   r   ::r   r   r   r   r   z(?::*)z(:)*)r   r   r   Nr\   r   r   Nr   r   r   Nr   Nr   r   r\   r   r   r   r   r\   r   r   r   r   )r   r   r\   r   r   r   r   z([b:]+))r   r   r\   z:b::r   z(b)|(:+))r   Nr   r\   Nr   r   r   Nr   Nr   r   z(?:b)|(?::+))r   r\   r   r   r   r%   xaxbxcc                     g | ]}|S rS   rS   .0rU   s     r   
<listcomp>z,RegexTests.test_re_split.<locals>.<listcomp>  s    DDD!DDDr   z(?r)x)r   r   r\   r   c                     g | ]}|S rS   rS   r   s     r   r   z,RegexTests.test_re_split.<locals>.<listcomp>      HHH!HHHr   z(x)|(y))
r   r%   Nr\   r%   Nr   r%   Nr   c                     g | ]}|S rS   rS   r   s     r   r   z,RegexTests.test_re_split.<locals>.<listcomp>$  s    JJJ!JJJr   z(?r)(x)|(y))
r   r%   Nr   r%   Nr\   r%   Nr   c                     g | ]}|S rS   rS   r   s     r   r   z,RegexTests.test_re_split.<locals>.<listcomp>)  s    NNN!NNNr   (?V1)\bza b c)r   r\    r   r   r   r   z(?V1)\m)r   a zb r   z(?V1)\M)r\    bz cr   )r)   r-   splitr   r   	splititerrC   s    r   test_re_splitzRegexTests.test_re_split   s   S)446M6M6MNNNy((U[y99 <  <  <  ! ! !U[;; >@ >@ >@ A A AU[9== @$ @$ @$ % % %U[;; >K >K >K L L L L U[y99;N;N;NOOOU[;; ># ># ># $ $ $U[9== @ @ @   U[;; >" >" >" # # #Y	:: = = = 	 	 	Z;; >> >> >> 	? 	? 	?^Y?? B B B 	 	 	 	S(335H5H5HIIIDDU_S(%C%CDDD G G G 	 	 	 	Wh779L9L9LMMMHHU_Wh%G%GHHH K K K 	 	 	 	Y99 <* <* <* 	+ 	+ 	+JJU_Y%I%IJJJ
>
>
>	@ 	@ 	@ 	]H== @. @. @. 	/ 	/ 	/NNU_]H%M%MNNN
>
>
>	@ 	@ 	@ 	Z99 < < < 	 	 	Z99 < < < 	 	 	Z99 < < < 	 	 	 	 	r   c                    |                      t          j        ddd          g d           |                      t          j        ddd          g d           |                      t          j        ddd          g d           t          j        d	k    r.|                      t          j        d
dd          g d           d S |                      t          j        d
dd          g d           d S )Nr   r   r   )r   r\   b::cza:b:c:d)r\   r   zc:dz(:))r   r   r\   r   r   r   r   )r   r   r   r   za:b::c)r)   r-   r   r   r   rC   s    r   test_qualified_re_splitz"RegexTests.test_qualified_re_split3  s)   S)Q779J9J9JKKKS)Q779J9J9JKKKUIq99 < < < 	 	 	 y((U[A>> A A A      U[A>> A A A     r   c                    |                      t          j        dd          g            |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd	          d
g           |                      t          j        dd	          d
g           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        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/   rC   s    r   test_re_findallzRegexTests.test_re_findall@  s/   tU33R888t\::<N<N<NOOOv|<< ? ? ? 	 	 	y,?? B# B# B# 	$ 	$ 	$ 	'C
 "	% 	% 	%'C
 "	% 	% 	%'@(KK(	 	 	 	@@5'JJJ'8'BBWINNN'8(CCfXNNN'B
  /0	2 	2 	2 	'G
!# #%B$C	E 	E 	E 	E 	Er   c                 \    |                      t          j        dd          g d           d S )Nz(a|(b))aba)r\   r   )r   r   r  r   rC   s    r   test_bug_117612zRegexTests.test_bug_117612Y  sA    z599 < < < 	 	 	 	 	r   c                     |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd                              dd          d           t          j        d          }|                      |                    d          d d          d           |                      |                    d	          d d          d
           |                      |                    d          d d          d           |                      |                    d          d d          d           |                      |                    d          d d          d           t          j        dd          }|                      |                                d           |                      |                    d          d           |                      |                    d          d           |                      |                    dd          d           t          j        d          }|                      |                    d                              ddd          d           |                      |                    d	                              ddd          d           |                      |                    d                              ddd          d           d S )Nr\   r\   (a)r\   r\   r   r:   z((a)|(b))(c)?)r\   r\   r\   NNr   )r   r   Nr   Nac)r
  r\   r\   Nr   bc)r  r   Nr   r   z!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?r   r;   )r\   NNa1b2c3)Nr   Nr\   Nr   )r)   r-   rB   r   r.   )r   patrU   s      r   test_re_matchzRegexTests.test_re_match]  s   S#..qqq16:::UC003Z@@@VS11!4c:::VS11!4c:::VS11771==zJJJmO,,3*,GHHH3*,GHHH4+-HIII4+-HIII4+-HIII Ks##C(((S)))S)))A
333m?@@3--aA668IJJJ3--dD$?? B 	 	 	4..q$::<LMMMMMr   c                    |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d            |                      t          j        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          d d          d           |                      |                    d          d            |                      |                    d          d            d S )Nz^(\()?([^()]+)(?(1)\))$r  )r  (r\   r\   r\   Nr\   za)z(az^(?:(a)|c)((?(1)b|d))$ab)r  r\   r   cd)r  Ndz^(?:(a)|c)((?(1)|d))$)r\   r\   r   z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))r   )r   r\   r   r   ad)r  r\   Nr  abdr
  )r)   r-   rB   r.   r   ps     r   test_re_groupref_existsz"RegexTests.test_re_groupref_existsx  s5   %?GGJ
	 	 	%?EEaaaH K 	 	 	%?FFMMM%?FFMMM%=tDDQQQG J 	 	 	%=tDDQQQG J 	 	 	%<dCCAAAF I 	 	 	%<cBB111E H 	 	 	 M;<<*,BCCCqqq)+ABBB...-----r   c                    |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        d	d
          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          dg           d S )Nz^(\|)?([^()]+)\1$|a|)r  |r\   z^(\|)?([^()]+)\1?$r\   r  za|z|az^(?:(a)|c)(\1)$aa)r   r\   r\   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-   rB   r/   rC   s    r   test_re_grouprefzRegexTests.test_re_groupref  sb   %95AA!!!D G 	 	 	%:C@@C F 	 	 	%94@@$GGG%94@@$GGG%7>>qqqA D 	 	 	%8#>>qqqA D 	 	 	 	'o
24 47  6!	" 	" 	" 	" 	"r   c                     |                      t          j        dd                                          ddd           d S )N#(?P<first>first) (?P<second>second)first secondfirstsecondr&  r'  )r)   r-   rB   	groupdictrC   s    r   test_groupdictzRegexTests.test_groupdict  sP    %J
 #)++H'M'M	O 	O 	O 	O 	Or   c                 ~    |                      t          j        dd                              d          d           d S )Nr$  r%  z\2 \1 \g<second> \g<first>zsecond first second first)r)   r-   rB   expandrC   s    r   test_expandzRegexTests.test_expand  sI    %J
  &!>??
%	' 	' 	' 	' 	'r   c                    |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d         d           |                      t          j        d	d          d         d           |                      t          j        d
d          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        d d                    d           |                      t          t          j        d!d                    d           |                      t          t          j        d"d                    d           |                      t          t          j        dd                    d           |                      t          j        d#d          d            |                      t          t          j        d#d$                    d           d S )%Nz	^(\w){1}$r   z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r:   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}$r5   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-   rB   boolrC   s    r   test_repeat_minmaxzRegexTests.test_repeat_minmax  s   \5994@@@]E::DAAA^U;;TBBB_e<<dCCC\599!<cBBB^U;;A>DDD^U;;A>DDD_e<<Q?EEE]E::1=sCCC_e<<Q?EEE_e<<Q?EEE_e<<Q?EEEXu55t<<<Y66===Z77>>>[%88$???We44Q7===Xu55a8#>>>Y66q93???Z77:B???ek(E::;;TBBBek*e<<==tDDDek*e<<==tDDDek+u==>>EEEek)U;;<<dCCCek+u==>>EEEek+u==>>EEEek+u==>>EEEWe44d;;;ek'599::DAAAAAr   c           
         |                      t          j        d          j        d           |                      t          j        d          j        t          j        t          j        z  t          j        z             |                      t          j        d          j        t          j        t          j        z  t          j        z             |                      t          j        d          j	        d           |                      t          j        d          j
        i            |                      t          j        d          j
        ddd           |                      t          j        dd          j        d	           |                      t          j        dd          j        d           |                      t          j        d
d          j        d	           |                      t          j        d
d          j        d           |                      t          j        d
d                                          d           |                      t          j        d
d                              d          d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t%          t'          t          j        dd          j                            | j                   t          j        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)r:   )r&  otherr  r\   r   zb(c)abcdef   r9   r   r;   r   r:   r7  zabc(?P<n>def)n)r)   r-   r.   rx   flagsrv   UDEFAULT_VERSIONrg   groups
groupindexrB   posendposr@   rA   stringregsr   r"   rer   r  s     r   test_getattrzRegexTests.test_getattr  s   |44<lKKK|44:EGeg<M

=  	! 	! 	!}55;UWuw=N!>" 	# 	# 	#|44;Q???|44?DDD'EFFQ
"
"	$ 	$ 	$ 	UC004a888UC007;;;fh77;Q???fh77>BBBfh77<<>>GGGfh77<<Q??HHHUC007===UC0057GHHHd5;uc#:#:#=>>??

	 	 	 M*++Sc*A.....r   c                 4   |                      t          j        dd          d         d           |                      t          j        d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           |                      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            |                      t          j        dd          d         d	           |                      t          j        d
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            |                      t          j        dd          d         d           |                      t          j        ddt          j                  d         d           |                      t          j        ddt          j                  d         d           d S )Nz\b(b.)\bzabcd abc bcd bxr:   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MrC   s    r   test_special_escapeszRegexTests.test_special_escapes  sS   k3DEEaH$OOOk3DEEaH$OOOl4F
, !	# 	# 	#l4F
, !	# 	# 	#k3D
- !	# 	# 	#k3D
- !	# 	# 	# 	h	57CCAFNNNlE57CCAFNNNlIuwGGNNNl4FGGJ
	 	 	l4FGGJ
	 	 	iUWEEaH
	 	 	mVUWEEaH
	 	 	mZII
	 	 	 	ox@@CXNNN&6	
, %	' 	' 	'ox
- %	' 	' 	' 	' 	'r   c           	         |                      t          j        dd          d         d           |                      t          j        ddt          j                  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 S )
Nz([\u2222\u2223])u   ∢r:   r   rP   u   eèéêëēěėr9  z%[e\xe8\xe9\xea\xeb\u0113\u011b\u0117]z*e|\xe8|\xe9|\xea|\xeb|\u0113|\u011b|\u0117)r)   r-   rB   rI  joinr/   rC   s    r   test_bigcharsetzRegexTests.test_bigcharset  s`   %8(CCAF
	 	 	%8(
- %	' 	' 	's
/u}"F "F "F G G
/	1 	1 	1 	/W
/u}"F "F "F G G
/	1 	1 	1 	/\
/u}"F "F "F G G
/	1 	1 	1 	1 	1r   c                     |                      t          j        ddt          j                  d         d           |                      t          j        ddt          j                  d         d           d S )Na.ba
br   a.*bza

b)r)   r-   rB   DOTALLrC   s    r   test_anyallzRegexTests.test_anyall  si    UFELAA!DfMMMVXu|DDQG
	 	 	 	 	r   c                    |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        d	d
          d         d           |                      t          j        dd          d         d           |                      t          j        dd
          d         d           |                      t          j        dd
          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           |                      t          j        dd          d         d           d S )Nz(a(?=\s[^a]))a br:   r\   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-   rB   rC   s    r   test_non_consumingzRegexTests.test_non_consuming   s   %5u==a@#FFF%6>>qA3GGG%6>>qA3GGG%7@@CSIII^U;;A>DDD_f==a@#FFF%8%@@CSIII%5u==a@#FFF%6>>qA3GGG^U;;A>DDD%8%@@CSIIIIIr   c                    |                      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          j        ddt          j                  d         d           |                      t          j        ddt          j                  d         d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           d S )Nr   ABCr   rG  s   ABCz
(a\s[^a]*)za bbr:   z
(a\s[abc])rW  z(a\s[abc]*)z	((a)\s\2)rX  z
((a)\s\2*)rY  z((a)\s(abc|a))z((a)\s(abc|a)*)z[Z-a]_r7  z	(?i)[Z-a]z(?i)naonAoTz
(?i)n\xE3ou   nÃou   NÃOz(?i)su   ſ)r)   r-   rB   rv   rA   r/  rC   s    r   test_ignore_casezRegexTests.test_ignore_case.  s   UE57;;A>FFFVVUW==a@&III]FEGDDQG
	 	 	]E57CCAFNNN^VUWEEaH
	 	 	\5%'BB1EuMMM]FEGDDQG
	 	 	%6uwGGJ
	 	 	%7II!L
	 	 	 	Xs3388::FCCC\377<<>>GGGek*e<<==tDDDek-BBCCTJJJek-BBCCTJJJek(H==>>EEEEEr   c                    |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        d	d
                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        d	d                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           d}|D ]3}|D ].}t          j        d|z   |          s|                                  /4|                      t          t          j        dd                     d!           |                      t          t          j        dd"                    d!           |                      t          t          j        d#d                     d!           |                      t          t          j        d#d"                    d!           |                      t          t          j        d$d                     d!           |                      t          t          j        d%d                     d!           |                      t          t          j        dd                     d!           |                      t          t          j        d#d                     d!           |                      t          t          j        d$d                     d!           |                      t          t          j        d%d                     d!           |                      t          t          j        d&d                    d!           |                      t          t          j        d&d                    d!           |                      t          j        d'd(          d)d*g           |                      t          j        d+d(          d)d*g           |                      t          j        d,d-                                          d.           |                      t          j        d/d-                                          d.           |                      t          j        d0d-                                          d.           |                      t          j        d1d2dg3                                          d4           |                      t          j        d1d5d6g3                                          d7           d S )8Nz(?fi)ssSSr   r   z(?fi)SSss   ßr7  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ﬆSSTr9   z(?fi)FFIu   ﬃu   ﬀiu   fﬁz!(?fi)\N{LATIN SMALL LIGATURE FFI}FFIr>   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   r4  u   aﬃneffir   r   )r)   r-   r@   rA   rB   r0   r/  r/   )r   sigmach1ch2s       r   test_case_foldingzRegexTests.test_case_foldingH  s-   j$77<<>>GGGj$77<<>>GGGj
*, ,,0DFFF	< 	< 	<&L
 	  	  	  	&I
 	  	  	 j
') ))-	9 	9 	9j
-/ //3tvvv	? 	? 	? 	k
+- --1TVVV	= 	= 	=k
.0 004	@ 	@ 	@k
(* **.$&&&	: 	: 	:&I
 	! 	! 	!k
(* **.$&&&	: 	: 	: 	k
(* **.$&&&	: 	: 	:k
(* **.$&&&	: 	: 	:k
(* **.$&&&	: 	: 	:&J
 	! 	! 	!&J
 	! 	! 	!&J
 	! 	! 	! % 	  	 C    {8c>377  IIKKK  	el;GGHH
	 	 	el;GGHH
	 	 	el;GGHH
	 	 	el;GGHH
	 	 	el=.IIJJ
	 	 	el+;
    	" 	" 	"el;GGHH
	 	 	el;GGHH
	 	 	el=.IIJJ
	 	 	el+;
    	" 	" 	"el+;YGGHH
	 	 	el+;YGGHH
	 	 	 	'Y
:< <>G
>	 	 	 	'Y
:< <>G
>	 	 	 	&M
 	( 	( 	(&S 	) 	) 	)&T 	) 	) 	)&<h124 4 448DFFF	D 	D 	D&<
+eW> > >>Bdfff	N 	N 	N 	N 	Nr   c                 d    |                      t          j        dd          d         d           d S )Nz(\s)r   r:   rZ  rC   s    r   test_categoryzRegexTests.test_category  s/    Wc2215s;;;;;r   c                     |                      t          j        dd          d         d           |                      t          j        dd          d         d           d S )Nz\s([^a])r   r:   r   z	\s([^a]*)z bbbbr)   r-   r@   rC   s    r   test_not_literalzRegexTests.test_not_literal  sV    k488;SAAAlE::1=tDDDDDr   c                     |                      t          j        dd          d         d           |                      t          j        dd          d         d           d S )Nz\s(b)r   r:   r   za\sr   r   rz  rC   s    r   test_search_coveragezRegexTests.test_search_coverage  sV    h55a8#>>>fd33A6=====r   c                    d}|                      t          j        |          |           t          dd          D ]}|t	          |          z  }|                      t          t          j        t          j        t	          |                    t	          |                              d           |                      t          j        t          j        t	          |                    t	          |                                                    d           t          j        t          j        |                    }|                      |                    |                                          d           d S )Nr   r      Tr7  r   r  )	r)   r-   escaperangerk   r/  rB   rA   r.   )r   r  ir  s       r   test_re_escapezRegexTests.test_re_escape  s-   a!,,,q# 	 	AQKAT%+el3q66.B.BCFF"K"KLL  U[c!ff)=)=s1vvFFKKMM    mELOO,,1**,,h77777r   c           
         d}|                      t          j        |          |           t          dd          D ]}t	          |g          }||z  }|                      t          t          j        t          j        |          |                    d           |                      t          j        t          j        |          |                                          d           t          j        t          j        |                    }|                      |                    |                                          d           d S )Nr   r   r  Tr7  r  )	r)   r-   r  r  bytesr/  rB   rA   r.   )r   r  r  r   r  s        r   test_re_escape_bytezRegexTests.test_re_escape_byte  s   a!,,,q# 	M 	MAqc

AFAT%+el1ooq"A"ABBDIIIU[a!<<AACCVLLLLmELOO,,1**,,h77777r   c                    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    r|                                  d S d S r   )r-   rv   
IGNORECASEr0   LrH  rJ  	MULTILINESrT  rd   VERBOSErC   s    r   test_constantszRegexTests.test_constants  s    7e&&&IIKKK7el""IIKKK7eo%%IIKKK7el""IIKKK7em##IIKKKKK $#r   c                    t           j        t           j        t           j        t           j        t           j        fD ]J}|                     t          t          t          j	        d|                              | j
                   Kd S )Nz	^pattern$)r-   rv   rJ  rd   r  r  r)   r   r"   r.   r   )r   flags     r   
test_flagszRegexTests.test_flags  sq    WeguwA 	" 	"DT$u}[$'G'G"H"HII " " " "	" 	"r   c                    dD ]}|                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d|z  t	          |          dz                       d           |                      t          t          j        d|z  t	          |          dz                       d           |                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d	|z  t	          |          dz                       d           |                      t          t          j        d
|z  t	          |          dz                       d           |                     t          j        | j        d            d S )Nr   rk         @            z\%03oTz\%03o00z\%03o88z\x%02xz\x%02x0z\x%02xzzc                  ,    t          j        dd          S )Nz\911r   r-   rB   rS   r   r   rV   z8RegexTests.test_sre_character_literals.<locals>.<lambda>  s    
+gr
"
" r   )r)   r/  r-   rB   rk   r}   r   r   r   r  s     r   test_sre_character_literalsz&RegexTests.test_sre_character_literals  s   2 
	 
	AT%+hlCFF"C"CDDdKKKT%+i!mSVVc\"J"JKK  T%+i!mSVVc\"J"JKK  T%+i!mSVV"D"DEEtLLLT%+j1nc!ffsl"K"KLL  T%+j1nc!ffsl"K"KLL    	u{D,B E# E# 	$ 	$ 	$ 	$ 	$r   c                    dD ]}|                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d|z  t	          |                              d           |                      t          t          j        d|z  t	          |                              d           |                     t          j        | j        d	            d S )
Nr  z[\%03o]Tz[\%03o0]z[\%03o8]z[\x%02x]z	[\x%02x0]z	[\x%02xz]c                  ,    t          j        dd          S )Nz[\911]r   r  rS   r   r   rV   z>RegexTests.test_sre_character_class_literals.<locals>.<lambda>  s    
+i
$
$ r   )r)   r/  r-   rB   rk   r}   r   BAD_OCTAL_ESCAPEr  s     r   !test_sre_character_class_literalsz,RegexTests.test_sre_character_class_literals  s   2 	P 	PAT%+j1nc!ff"E"EFFMMMT%+kAos1vv"F"FGGNNNT%+kAos1vv"F"FGGNNNT%+kAos1vv"F"FGGNNNT%+lQ.>A"G"GHH$OOOT%+lQ.>A"G"GHH$OOOOu{D,A D% D% 	& 	& 	& 	& 	&r   c                 n   |                      t          j        dd                              d          d           |                      t          j        dd                              d          d           |                      t          j        dd                              d          d           d S )Nz(a)|(b)r   r:   r  r  )r)   r-   rB   startendrA   rC   s    r   test_bug_113254zRegexTests.test_bug_113254  s    Z55;;A>>CCCZ5599!<<bAAAZ55::1==xHHHHHr   c                    |                      t          j        dd          j        d            |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           d S )	Nz(a)?ar\   z(a)(b)?br  r:   z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))((a)))r)   r-   rB   	lastindex	lastgrouprC   s    r   test_bug_527371zRegexTests.test_bug_527371  s    Xc22<dCCC[66@!DDD%:4@@J
	 	 	]D99CSIIIWc22<a@@@@@r   c                 T    |                      t          j        | j        d            d S )Nc                  *    t          j        d          S )Nzfoo[a-r-   r.   rS   r   r   rV   z,RegexTests.test_bug_545855.<locals>.<lambda>      
-
!
! r   )r}   r-   r   BAD_SETrC   s    r   test_bug_545855zRegexTests.test_bug_545855  s8     	u{DL ;" ;" 	# 	# 	# 	# 	#r   c                 (   |                      t          j        dddz  dz                                 d          d           |                      t          j        dddz  d	z   ddz  z   d
z                                 d          d           |                      t          j        dddz  dz                                 d          d           |                      t          j        dddz  dz                                 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-   rB   r  r@   rC   s    r   test_bug_418626zRegexTests.test_bug_418626  s!    	VUT\D-@AAEEaHH
	 	 	WdTkC.?$+.M
/  Q	  	  	 Weemd.BCCGGJJ
	 	 	 	j%$,2EFFJJ1MM
	 	 	 	 	r   c                     dt          j        d          z   dz   }|                     t          j        |          odd           d S )N[u   ‹]r:   )r-   r  r)   r.   r   r  s     r   test_bug_612074zRegexTests.test_bug_612074  sF    EL***S0s++1155555r   c                 >   |                      t          j        dddz            d         d           |                      t          j        dddz  dz             d         d           |                      t          j        dddz  dz             d         d           d S )Nz(x)*iP  r%   r:   z(x)*yr&   z(x)*?yrZ  rC   s    r   test_stack_overflowzRegexTests.test_stack_overflow  s     	VUS[99!<cBBBWeckC.?@@CSIIIXus{S/@AA!DcJJJJJr   c           	      ^   d }d }d }d }t          j        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 r   rS   scannertokens     r   s_identz(RegexTests.test_scanner.<locals>.s_ident   s    E\r   c                     d|z  S )Nzop%srS   r  s     r   
s_operatorz+RegexTests.test_scanner.<locals>.s_operator!  s    v~(=r   c                      t          |          S r   )floatr  s     r   s_floatz(RegexTests.test_scanner.<locals>.s_float"  s    E%LL%8r   c                      t          |          S r   )rF   r  s     r   s_intz&RegexTests.test_scanner.<locals>.s_int#  s    #e**#4r   z[a-zA-Z_]\w*z\d+\.\d*rO   z=|\+|-|\*|/)z\s+Nr   zsum = 3*foo + 312.50 + bar)	sumzop=r;   zop*fooop+g     s@r  bar)	r-   Scannerr)   r   r"   r  rx   r   scan)r   r  r  r  r  r  s         r   test_scannerzRegexTests.test_scanner  s    111===888444-/7!;k
>UOnj%A D!   	d7?#:#:2#>#>#FGGHH

	 	 	 	&BCC G> G> G>?AFC 	D 	D 	D 	D 	Dr   c                     dD ]j}|                      t          j        d|z  d          d d          d           |                      t          j        d|z  d          d d          d           kd S )N)r   ?*z
((.%s):)?zr  )r  NNa:z)r  za:r\   rZ  )r   ops     r   test_bug_448951zRegexTests.test_bug_448951/  s      	 	BU[);SAA!!!D G   U[);UCCAAAF I    	 	r   c                    |                      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           |                      t          j        dd          d d          d           d S )Nz	^((a)|b)*r   )r  r   r\   z^(([ab])|c)*)r   r   r   z^((d)|[ab])*)r  r   Nz^((a)c|[ab])*z^((a)|b)*?c)r   r   r\   z^(([ab])|c)*?dabcd)r  r   r   z^((d)|[ab])*?c)r   r   Nz^((a)c|[ab])*?crZ  rC   s    r   test_bug_725106zRegexTests.test_bug_7251068  s   [%88;=MNNN^U;;AAA> A 	 	 	^U;;AAA> A 	 	 	_e<<QQQ? B 	 	 	]E::111= @ 	 	 	%5v>>qqqA D 	 	 	%5u==aaa@ C 	 	 	%6>>qqqA D 	 	 	 	 	r   c                     |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           d S )Nz(a)(?:(?=(b)*)c)*abbr\   r\   Nz(a)((?!(b)*))*)r\   r\   NNrZ  rC   s    r   test_bug_725149zRegexTests.test_bug_725149J  sx    %8%@@C F 	 	 	%5u==aaa@ C 	 	 	 	 	r   c                      G d dt                     }t          j         |d                    }|                     |                    d          d            d S )Nc                       e Zd ZdS ).RegexTests.test_bug_764548.<locals>.my_unicodeN)r   r   r   rS   r   r   
my_unicoder  S  s          r   r  r   r   )rG   r-   r.   r)   rB   )r   r  r  s      r   test_bug_764548zRegexTests.test_bug_764548Q  s]    ########mJJu--..5))400000r   c                 t    t          j        dd          }|                     d |D             g d           d S )Nr   r   c                     g | ]
}|d          S r   rS   )r   items     r   r   z,RegexTests.test_finditer.<locals>.<listcomp>Y  s    111d$q'111r   r   )r-   finditerr)   r   its     r   test_finditerzRegexTests.test_finditerW  sE    ^E<0011b1113E3E3EFFFFFr   c                     t          j        d          t          j        d          u r|                                  d S d S )N
bug_926075s
   bug_926075)r-   r.   r0   rC   s    r   test_bug_926075zRegexTests.test_bug_926075[  s;    =&&%-*F*FFFIIKKKKK GFr   c                     d}|                      t          j        |                              d          g d           d S )Nu   [.。．｡]za.b.cr\   r   r   )r)   r-   r.   r   r   s     r   test_bug_931848zRegexTests.test_bug_931848_  sU    .w//55g>> A A A 	 	 	 	 	r   c                    t          j        dd          |                     t                                                    d           |                     t          fd           t          j        d                              d          }|                     |	                                                                d           |                     |	                                d            d S )N\srW  r:   r   c                  "    t                     S r   nextr  s   r   rV   z,RegexTests.test_bug_581080.<locals>.<lambda>g      b r   )
r-   r  r)   r  rA   assertRaisesStopIterationr.   r  r@   )r   r  r  s     @r   test_bug_581080zRegexTests.test_bug_581080d  s    ^E5))b&111-)9)9)9)9:::-&&..u55))..00&999))400000r   c                 B   t          j        dd          |                     t                                                    d           |                     t                                                    d           |                     t          fd           d S )Nz.*asdfrq  r   r   c                  "    t                     S r   r  r  s   r   rV   z,RegexTests.test_bug_817234.<locals>.<lambda>q  r  r   )r-   r  r)   r  rA   r  r  r  s    @r   test_bug_817234zRegexTests.test_bug_817234m  s    ^E6**b&111b&111-)9)9)9)9:::::r   c                 >   dd l }dD ]}|                     |          }|                     t          j        d                              |          d            |                     t          j        d                              |          dd          d           d S )Nr   bBuhHiIlLfds   blar   r:   rS   )arrayr)   r-   r.   rB   )r   r  typecoder\   s       r   test_empty_arrayzRegexTests.test_empty_arrays  s    % 	D 	DHH%%AU]62288;;TBBBU]3//55a88>CCCC	D 	Dr   c                    t          d          }t          d          }t          j        |t          j        t          j        z            }|                     t          |                    |                    d           t          j        |t          j        t          j        z            }|                     t          |                    |                    d           t          j        d|z   t          j                  }|                     t          |                    |                    d           t          j        d|z   t          j                  }|                     t          |                    |                    d           t          j        d|z             }|                     t          |                    |                    d           t          j        d|z             }|                     t          |                    |                    d           |                     t          t          j        dd                    d           |                     t          t          j        dd                    d           |                     t          t          j        d	d                    d           |                     t          j        d
d          d            d S )Ni  i  Tz(?i)z(?iu)(?i)arg   za(?i)z(?iV1)aza(?iV1))rk   r-   r.   rv   r:  r)   r/  rB   )r   
upper_char
lower_charr  s       r   test_inline_flagszRegexTests.test_inline_flags{  sF   [[
[[
M*eg&788aggj1122D999M*eg&788aggj1122D999M&:-uw77aggj1122D999M&:-uw77aggj1122D999M'J.//aggj1122D999M'J.//aggj1122D999ek(C88994@@@ek(C88994@@@ek*c::;;TBBBZ55t<<<<<r   c                 d   t          j        d          }|                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d           t          j        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#rW   z#
#za#
b#
#za#
b#
c#)r-   r.   r)   rj   r  r   s     r   test_dollar_matches_twicez$RegexTests.test_dollar_matches_twice  s   -$$S(33Z@@@S)44jAAAS$//888-U_55S(44kBBBS)44lCCCS$//88888r   c                 2   t          j        d          t          j        d          |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd           |                     t          | j        fd	           |                     t          | j        fd
           |                     t          | j	        d            |                     t          | j	        d            |                     t          | j
        d            |                     t          | j
        d            |                     t          | j
        d            |                     t          | j
        d            d S )NrP      .c                  .                          d          S )N   brB   r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
))D// r   c                  .                          d          S )Nr   r  bpats   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
**S// r   c                  0                          dd          S Nr  r   rj   r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
''$

 r   c                  0                          dd          S Nr      cr  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
''#t

 r   c                  0                          dd          S )Nr  r!  r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
''$

 r   c                  0                          dd          S r  r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
((4

 r   c                  0                          dd          S r   r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
((3

 r   c                  0                          dd          S Nr   r   r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
((3

 r   c                  @    t          j        dt           j                  S )N   \wr-   r.   rI  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-
.
. r   c                  *    t          j        d          S )Ns   (?u)\wr  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>      
-

#
# r   c                  Z    t          j        dt           j        t           j        z            S )N\w)r-   r.   rI  ASCIIrS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-u}u{:
;
; r   c                  @    t          j        dt           j                  S )Nz(?u)\w)r-   r.   r.  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-	5;
/
/ r   c                  @    t          j        dt           j                  S )N(?a)\wr)  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-	5=
1
1 r   c                  *    t          j        d          S Nz(?au)\wr  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  r+  r   )r-   r.   r}   	TypeErrorSTR_PAT_ON_BYTESBYTES_PAT_ON_STRSTR_PAT_BYTES_TEMPLBYTES_PAT_STR_TEMPLr~   BYTES_PAT_UNI_FLAGMIXED_FLAGS)r   r  r  s    @@r   test_bytes_str_mixingz RegexTests.test_bytes_str_mixing  s   mC  }T""y$*? B B B B 	 	 	y$*? B B B B 	 	 	y$*B E E E E 	 	 	y$*? B B B B 	 	 	y$*? B B B B 	 	 	y$*? B B B B 	 	 	y$*B E E E E 	 	 	y$*? B B B B 	 	 	 	z4+B E/ E/ 	0 	0 	0z4+B E$ E$ 	% 	% 	%z4+; >< >< 	= 	= 	=z4+; >0 >0 	1 	1 	1z4+; >2 >2 	3 	3 	3z4+; >$ >$ 	% 	% 	% 	% 	%r   c                 (   dt           j        fD ]}t          j        d|t           j        z            }|                     t          |                    d                    d           t          j        d|          }|                     t          |                    d                    d           t          j        dt           j        t           j        z            }|                     |                    d          d            t          j        dt           j                  }|                     |                    d          d            t          j        dt           j                  }|                     |                    d          d            t          j        d          }|                     |                    d          d            dt           j        fD ]}t          j        d|t           j        z            }|                     |                    d	          d            t          j        d
          }|                     |                    d	          d            |                     t          | j
        d            d S )Nr      À   àTr-  u   (?a)Àr1        r(  c                  *    t          j        d          S r3  r  rS   r   r   rV   z8RegexTests.test_ascii_and_unicode_flag.<locals>.<lambda>  r+  r   )r-   rI  r.   r  r)   r/  rB   r.  r}   r~   r:  )r   r9  r  s      r   test_ascii_and_unicode_flagz&RegexTests.test_ascii_and_unicode_flag  s,   ' 	< 	<E-0@(@AACT#))F"3"344d;;;-u--CT#))F"3"344d;;;;mFEK%2B$BCC6**D111mJ(8996**D111mE5;//6**D111mI&&6**D111 % 	7 	7E-1A)ABBCSYYw//666-''CSYYw//6666z4+; >$ >$ 	% 	% 	% 	% 	%r   c           	         t          j        dd          }|s|                     d           nU|r>|d         |                    d          k    s|d         |                    d          k    r|                     d           |s|                     d           d S |d d          dk    r?|                     d                    t          |d d                                         d S d S )	N(?<a>\w)xyz(Failed: expected match but returned Noner   r:   Failed)r%   r%   z0Failed: expected "('x', 'x')" but got {} instead)r-   rB   r0   r   formatasciir   rU   s     r   test_subscripting_matchz"RegexTests.test_subscripting_match  s    KT** 	 II@AAAA 	 adaggajj((AaDAGGAJJ,>,>IIh 	`II@AAAAAqqqTZIIJQQRWXYZ[Z[Z[X\R]R]^^_____  r   c                     t          j        dd          }t          j        dd          }|r|r|d d          |d d          k    s|                     d           d S d S )Nz	(?P<a>\w)r%   rD  rF  )r-   rB   r0   )r   m0m1s      r   test_new_named_groupsz RegexTests.test_new_named_groups  sj    [s++[c** 	 r 	 ber!!!unnIIh -nr   c           
          |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          t          j        dd                    d           |                      t          t          j        dd	                    d           |                      t          t          j        d
d                    d           |                      t          t          j        dd                    d           |                      t          j        dd          d            |                      t          j        d
d          d            |                      t          j        dd          d            |                      t          j        dd	          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        d d                    d           |                      t          t          j        d!d                    d           |                      t          t          j        d"d                    d           |                      t          t          j        d#d                    d           |                      t          t          j        d$d                    d           |                      t          t          j        d%d                    d           |                      t          t          j        d&d                    d           |                      t          t          j        d'd                    d           |                      t          t          j        d(d                    d           |                      t          t          j        d)d                    d           |                      t          t          j        d*d                    d           |                      t          t          j        d+d                    d           |                      t          t          j        d,d                    d           |                      t          t          j        d-d                    d           |                      t          t          j        d.d/                    d           |                      t          t          j        d0d1                    d           |                      t          t          j        dd                    d           |                      t          j        d.d2          d            |                      t          j        d0d2          d            |                      t          j        dd2          d            |                      t          j        d3d/          d            |                      t          j        d4d1          d            |                      t          j        d5d          d            |                      t          t          j        d3d2                    d           |                      t          t          j        d4d2                    d           |                      t          t          j        d5d2                    d           |                      t          t          j        d6d                    d           |                      t          t          j        d6d7                    d           |                      t          t          j        d8d                    d           |                      t          t          j        d9d7                    d           |                      t          t          j        d:d7                    d           |                      t          t          j        d:d                    d           |                      t          t          j        dd/                    d           |                      t          t          j        dd7                    d           |                      t          t          j        dd;                    d           |                      t          j        d<d                                          d=           |                      t          j        d<d>                                          d?           |                      t          j        d<d@          g dA           |                      t          j        dBd@          dCdDg           |                      t          j        d<dE          g dF           |                      t          t          j        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 ]\  }}}	 |d d                             t          j        ||                    |k    r(| 	                    d
                    |                     d# t          $ r@}| 	                    d
                    |t          |                               Y d }~d }~ww xY w|                      t          t          j        dd/                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    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}rg   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\dr  r  r   r  z\Dz\Sz\Wz\p{L}r\   z\p{Lu}\p{Ll}r  r^  \Xr7     àrc     aààeéér\   r>  rV  e   éu   é\X{3}   aàà   eéé   
́Árq   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ár\   )z\P{InBasicLatin}rc     á)z(?i)\p{InBasicLatin}rc  r\   )z(?i)\P{InBasicLatin}rc  rd  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-   rB   r/  rA   r/   setr   rN  r0   rG  	ExceptionrH  )	r   chars_uchars_bword_settestsrx   charsexpectedrY  s	            r   test_propertieszRegexTests.test_properties  s   \7;;TBBB]G<<dCCCZ994@@@ek%88994@@@ 	ek*d;;<<dCCCek*d;;<<dCCCek*d;;<<dCCCZ66===Z66===Z66===Z66===Z66===Z66===ek*d;;<<dCCCek*d;;<<dCCCek*d;;<<dCCCek/
)+ + , ,-1	3 	3 	3ek*=
)+ + , ,-1	3 	3 	3ek*;
)+ + , ,-1	3 	3 	3ek*@
)+ + , ,-1	3 	3 	3ek*;
)+ + , ,-1	3 	3 	3ek*?
)+ + , ,-1	3 	3 	3ek*;
)+ + , ,-1	3 	3 	3ek*=
)+ + , ,-1	3 	3 	3ek*B
)+ + , ,-1	3 	3 	3ek*=
)+ + , ,-1	3 	3 	3ek*A
)+ + , ,-1	3 	3 	3 	ek/
&( ( ) )*.	0 	0 	0ek*;
&( ( ) )*.	0 	0 	0ek*@
&( ( ) )*.	0 	0 	0ek*;
&( ( ) )*.	0 	0 	0ek*?
&( ( ) )*.	0 	0 	0ek*:
&( ( ) )*.	0 	0 	0ek*<
&( ( ) )*.	0 	0 	0ek*A
&( ( ) )*.	0 	0 	0ek*<
&( ( ) )*.	0 	0 	0ek*@
&( ( ) )*.	0 	0 	0ek*<
&( ( ) )*.	0 	0 	0ek*>
&( ( ) )*.	0 	0 	0ek*C
&( ( ) )*.	0 	0 	0ek*>
&( ( ) )*.	0 	0 	0ek*B
&( ( ) )*.	0 	0 	0 	ek%5566===ek%5566===ek%5566===UC00$777UC00$777UC00$777UC00$777UC00$777UC00$777ek%5566===ek%5566===ek%5566===ek(C88994@@@ek(C88994@@@ek)S99::DAAAek)S99::DAAAek(C88994@@@ek(C88994@@@ek%5566===ek%5566===ek%5566===UF3388::FCCCUI66;;==vFFFu
$& &( ( (	 	 	 	x
$& &(6'G	I 	I 	Iu.CDD
-
-
-	/ 	/ 	/ 	ek)S99::DAAA(<BBDDEE1
G231
G%:;1
 GS!1
 Wc*	1

 GT"1
 Wd+1
 G121
 g';<1
 W&891
 gv.1
 W&:;1
 gt,1
 gv.1
 w(:;1
 01
  3!1
" 4#1
$ 7%1
( *-)1
*  *5+1
, $'-1
. !'40/1
0 %(11
2 !'5131
4 ),51
6 "7I671
8 !'7391
: "7G4;1
< !'95=1
> "7E2?1
@ "7G4A1
B #GW5C1
F *-G1
H  *5I1
J $'K1
L !'40M1
N %(O1
P !'51Q1
R ),S1
T "7I6U1
V !'73W1
X "7G4Y1
Z !'95[1
\ "7E2]1
^ "7G4_1
` #GW5a1
d ). 	L 	L$GUHL#A#;##EM'5$A$ABBhNNIIl11'::;;; L L L		077qJJKKKKKKKKL 	ek*?EEFF
	 	 	ek*A
(* * + +,0	2 	2 	2ek*A
(* * + +,0	2 	2 	2 	2 	2s   ?A|
}&&6}!!}&c                 \   |                      t          j        dd          dg           |                      t          j        dd          ddg           |                      t          j        dd          g d           |                      t          j        d	d          g d
           d S )N\w+u    हिन्दी,   हिन्दीz\W+r   ,r   )r   rr  rs  z(?V1)\B)r   u    हu   िu   नu   ्u   दu   ी,r   )r)   r-   r/   r   rC   s    r   test_word_classzRegexTests.test_word_class  s    v
24 41
2	4 	4 	4 	v
24 4693Z	A 	A 	AZ
24 467 67 67	8 	8 	8 	Z
24 46A 6A 6A	B 	B 	B 	B 	Br   c                 \    |                      t          j        dd          ddg           d S )N\G\w{2}abcd efr  r  r   rC   s    r   test_search_anchorzRegexTests.test_search_anchor  s.    z9==d|LLLLLr   c           	         |                      t          j        dd          g d           |                      t          j        ddd          g d           |                      t          j        dd          dd	g           |                      t          j        ddd          g d
           |                      t          j        ddd          ddg           |                      d t          j        dd          D             g d           |                      d t          j        ddd          D             g d
           |                      d t          j        dd          D             g d           |                      d t          j        ddd          D             g d
           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      d t          j        dd          D             g d           |                      d t          j        dd          D             g d           |                      d t          j        dd          D             g d           |                      d t          j        dd          D             g d           |                      t          j        dd          d d!g           |                      t          j        d"d#          d d!g           |                      t          j        d$d          g            |                      t          j        d%d          d&g           |                      t          j        d'd(          g d)           |                      t          j        d*d(          g d)           |                      t          j        d+d(          g d,           |                      t          j        d-d(          g d,           |                      t          j        d.d#d/d01          d2d3g           |                      t          j        d.d#d/d41          d2d3g           |                      d5 t          j        d.d#d/d01          D             d2d3g           |                      d6 t          j        d.d#d/d41          D             d2d3g           |                      d7 t          j        dd#d/d01          D             d3d2g           |                      d8 t          j        dd#d/d41          D             d3d2g           |                      t          j        dd#d/d01          d3d2g           |                      t          j        dd#d/d41          d3d2g           |                      t          j        d9d:t          j                  d;d<g           |                      t          j        d=d:t          j                  d<d;g           |                      t          j        d>d          d	g           |                      t          j        d>dd          d	d g           |                      t          j        d?d@          dAdBg           |                      t          j        dCd@          dDdEg           |                      dF t          j        d>d          D             d	g           |                      dG t          j        d>dd          D             d	d g           |                      dH t          j        d?d@          D             dIdJg           |                      dK t          j        dCd@          D             dLdMg           |                      t          j        dNdN                                          dO           |                      t          j        dPdN                                          dO           |                      t          j        dQdR                                          dO           |                      t          j        dSdR                                          dO           |                      t          j        dTdUd          d           |                      t          j        dVdUd          d           d S )WNz(?r).r   )r   r   r\   T
overlapped(?r)..abcder  r  r  r  r  r  (?r)(.)(-)(.)a-b-cr   r   r   r\   r   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>      HHH1!A$HHHr   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (       1!A$   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   ^|\w+foo barr   r  r  
(?V1)^|\w+	(?r)^|\w+r  r  r   (?rV1)^|\w+c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>      LLL1!A$LLLr   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (       1!A$   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   rv  rw  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*rP   r:   r;   r>  r?  r   r   r  c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (       1!A$   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   z[ab]aBr\   Bz(?r)[ab]z(?r).{2}(\w+) (\w+)zfirst second third fourth fifthr(  )thirdfourthz(?r)(\w+) (\w+))r  fifth)r'  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>      KKK1!A$KKKr   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>
  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (     . . .1!A$ . . .r   r%  zthird fourthc                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   zfourth fifthzsecond thirdr3  ro  z
(?r)abcdefz
(?i)abcdefABCDEFz(?ir)abcdef(.)r   (?r)(.))r)   r-   r/   r  rv   r@   rA   rj   rC   s    r   test_search_reversezRegexTests.test_search_reverse  s   x77IIIx4HHH K K K 	 	 	y'::T4LIIIy'dKKK
"
"
"	$ 	$ 	$'7  ,o>	@ 	@ 	@ 	HHx(G(GHHH K K K 	 	 	  y') ) )   555	7 	7 	7HHx(G(GHHH K K K 	 	 	  y') ) )   555	7 	7 	7 	x;; > > > 	 	 	}i@@ C C C 	 	 	|Y?? B B B 	 	 	~yAA D D D 	 	 	 	LLx(K(KLLL


	 	 	  }
) )   )))	+ 	+ 	+  |
) )   )))	+ 	+ 	+  ~
) )   )))	+ 	+ 	+ 	z9==d|LLL'7@@4,OOO~yAA2FFF~yAAD6JJJuf557I7I7IJJJz6::<N<N<NOOOy&99;M;M;MNNN{F;; > > > 	 	 	 	sF!DDDs
G 	 	 	sF"EEE
H 	 	 	  sF) ) )   Cj	" 	" 	"  sF) ) )   Sz	# 	# 	# 	  wA) ) )   Cj	" 	" 	"  wA) ) )   Sz	# 	# 	#wAaHHH3
K 	 	 	wAbIII*	 	 	 	weg>>c
KKK{D%'BBS#JOOO{E::TFCCC{EdKKK,	 	 	~
+- -/B E /	 	 	 	'9
+- -/B E /	 	 	 	KK{E(J(JKKK&	 	 	  {E) ) )   "D\	+ 	+ 	+ . .~
+)- )- . . .0>
0	 	 	 	 . .7I
+)- )- . . .0>
0	 	 	 	h99>>@@&IIIlH==BBDDfMMMlH==BBDDfMMMmX>>CCEEvNNN65%88%@@@:ue<<eDDDDDr   c                 X    |                      t          j        dd          d            d S )Nz(?>a*)ar   rz  rC   s    r   test_atomiczRegexTests.test_atomic  s*    j$77>>>>>r   c                 F   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        d	d
                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd
          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            d S )Nza?ar\   r7  za*ar<   r>   za+aza{1,3}az	(?:ab)?abr  rc  z	(?:ab)*ababababro  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@   rA   rC   s    r   test_possessivezRegexTests.test_possessive  s   fc2277996BBBfe4499;;VDDDfe4499;;VDDDj%88==??HHH 	lD99>>@@&IIIlH==BBDDfMMMlH==BBDDfMMM&6AAFFHH K 	 	 	 	gs33T:::gu55t<<<gu55t<<<k5994@@@ 	mT::DAAAmX>>EEEmX>>EEE&7BBDIIIIIr   c                    t           j        dk    r,|                     t          j        dd          g d           n*|                     t          j        dd          dg           |                     t          j        dd          g d           |                     t          j        dd          g d           |                     d	 t          j        dd          D             g d           |                     t          j        d
d          g d           |                     d t          j        d
d          D             g d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           t           j        dk    ra|                     t          j        dd          g d           |                     d t          j        dd          D             g d           n^|                     t          j        dd          dg           |                     d t          j        dd          D             dg           t           j        dk    ra|                     t          j        dd          g d           |                     d t          j        dd          D             g d           n^|                     t          j        dd          dg           |                     d t          j        dd          D             dg           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           d S )Nr   z\brW  )r   r\   r   r   r   r   r  r  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>F  r  r   r  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>J  r  r   r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>N  r  r   r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>R  r  r   r   r   )r   r%   r\   r%   r   r%   r   r   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>X      GGGAaGGGr   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>\  r  r   z(?r))r   r   r%   r   r%   r\   r%   r   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>b      KKKAaKKKr   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>f  r  r   z(?V1)c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>k  r   r   z(?rV1)c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>p  s    III!IIIr   )r   r   r)   r-   r   r/   r  r   rC   s    r   test_zerowidthzRegexTests.test_zerowidth9  s   y((U[66 9 9 9     U[66@@@Z77 : : : 	 	 	 	x;; > > > 	 	 	LLx(K(KLLL


	 	 	|Y?? B B B 	 	 	  |
) )   )))	+ 	+ 	+}i@@ C C C 	 	 	  }
) )   )))	+ 	+ 	+~yAA D D D 	 	 	  ~
) )   )))	+ 	+ 	+ y((U[X66 9! 9! 9! " " "GGX)F)FGGG J0 J0 J0 1 1 1 1 U[X66
CCCGGX)F)FGGGj   y((U[:: =! =! =! " " "KK)J)JKKK4446 6 6 6 U[::XJGGGKK)J)JKKKj   	Wh77 : : : 	 	 	HHU_Wh%G%GHHH K, K, K, 	- 	- 	- 	Xx88 ; ; ; 	 	 	IIU_Xx%H%HIII L, L, L, 	- 	- 	- 	- 	-r   c                    |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                     t          j        | j        d            |                      t          j        dd          d            |                      t          j        d	d          d            |                      t          j        d
dt          j                  d            |                      t          j        ddt          j                  d            |                      t          j        ddt          j                                                  d           d S )Nz(?i)Abr  rc  z(?i:A)bzA(?i)bzA(?iV1)bc                  D    t          j        ddt           j                  S )Nz	(?V0-i)Abr  rM  rz   rS   r   r   rV   z9RegexTests.test_scoped_and_inline_flags.<locals>.<lambda>z  s    
,|T
9
9
9 r   z(?V0)Abz(?V1)Abz	(?V1-i)AbrM  z(?-i:A)bz	A(?V1-i)b)r)   r-   r@   rA   r}   r   CANT_TURN_OFFrv   rC   s    r   test_scoped_and_inline_flagsz'RegexTests.test_scoped_and_inline_flagss  s   i66;;==vFFFj$77<<>>GGGi66;;==vFFFk488$???u{D,> A: A: 	; 	; 	; 	j$77>>>j$77>>>lDHHH$OOOk4uwGGGNNNlD  	) 	) 	) 	) 	)r   c                 h   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           d S )Nz(?:a+)+r<   r>   z(?:(?:ab)+c)+abcabcro  z
(?:a+){2,}r  rC   s    r   test_repeated_repeatsz RegexTests.test_repeated_repeats  s    j%88==??HHH&6AAFFHH K 	 	 	 	mU;;@@BBFKKKKKr   c           	      	   |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t	          t          j        dd                    d           |                      t          j        d	d          d            |                      t	          t          j        d
d                    d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          t          t          j        d                              | j	                   d S )Nz123(?<=a\d+)a123r:   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@   rA   r/  rB   r   r"   r.   r   rC   s    r   test_lookbehindzRegexTests.test_lookbehind  s   ov>>CCEEvNNNov>>EEEov>>EEEov>>CCEEvNNNek/5AABBDIII_e<<dCCCek.%@@AA4HHH^U;;TBBB%BEJJ
	 	 	%BEJJ
	 	 	ek*G
   	 	 	%BEJJ
	 	 	ek*G
   	 	 	 	ek*F
   	 	 	%A5II
	 	 	ek*F
   	 	 	%A5II
	 	 	ek*F
   	 	 	 	%<eDDdKKK%<eDDdKKK%<eDDdKKKek*A5IIJJ
	 	 	 	ek*@%HHII
	 	 	%;UCCTJJJek*@%HHII
	 	 	 	d5=#=#=>>??

	 	 	 	 	r   c                 `   t           j        dk    r+|                     t          j        ddd          d           n*|                     t          j        ddd          d           |                     t          j        ddd          d           t           j        dk    r+|                     t          j        ddd          d	           n*|                     t          j        ddd          d
           |                     t          j        ddd          d	           t           j        dk    r+|                     t          j        ddd          d           n*|                     t          j        ddd          d           |                     t          j        ddd          d           d S )Nr   z(?V0)(x)?(y)?z\2-\1rE  zy-x-zy-xz(?V1)(x)?(y)?r%   z-x-z-xr&   zy--zy-r   rC   s    r   test_unmatched_in_subz RegexTests.test_unmatched_in_sub  s    y((UY'74HH    UY'74HH  #3XtDDfMMMy((UY'73GGOOOOUY'73GGNNN#3XsCCUKKKy((UY'73GGOOOOUY'73GGNNN#3XsCCUKKKKKr   c                 N   t          j        d          }t          j        dk    r,|                     |                    d d          d           n+|                     |                    d d          d           |                     d |                    d          D             d	d
g           t          j        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                     d| j         z   dz   S N<>r  rT   s    r   rV   z+RegexTests.test_bug_10328.<locals>.<lambda>      ak0AC0G r   zfoobar )z%foobar<trailing_ws><no_final_newline>r   c                     d| j         z   dz   S r  r  rT   s    r   rV   z+RegexTests.test_bug_10328.<locals>.<lambda>  r  r   )zfoobar<trailing_ws>r:   c                 6    g | ]}|                                 S rS   r   r   s     r   r   z-RegexTests.test_bug_10328.<locals>.<listcomp>       EEE!''))EEEr   r   r   zD(?mV1)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)c                     d| j         z   dz   S r  r  rT   s    r   rV   z+RegexTests.test_bug_10328.<locals>.<lambda>  s    C!+,=,C r   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z-RegexTests.test_bug_10328.<locals>.<listcomp>  r  r   )r-   r.   r   r   r)   r   r  r  s     r   test_bug_10328zRegexTests.test_bug_10328  sd   mcddy((SXX&G&G FH H H H SXX&G&G 46 6 6EES\\)-D-DEEE
H 	 	 	mcdd"C"C
 B	D 	D 	DEES\\)-D-DEEE
H 	 	 	 	 	r   c                 L   |                      t          j        dd          ddg           |                      t          j        ddd          g d           |                      t          j        dd          d	d
g           |                      t          j        ddd          g d           |                      t          j        ddd          ddg           |                      d t          j        dd          D             ddg           |                      d t          j        ddd          D             g d           |                      d t          j        dd          D             d	d
g           |                      d t          j        ddd          D             g d           |                      d t          j        ddd          D             ddg           |                      d t          j        ddd          D             ddg           d S )N..r}  r  r  Trz  )r  r  r  r  r|  r  r  r~  z	(.)(-)(.)r  r  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  s    GGG1!A$GGGr   c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   c                 6    g | ]}|                                 S rS   r<  r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  ,     % % %!((** % % %r   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   r  )r)   r-   r/   r  rC   s    r   test_overlappedzRegexTests.test_overlapped  s   ug66tEEEug$GGG J J J 	 	 	y'::T4LIIIy'dKKK
"
"
"	$ 	$ 	$|WNNNO
,	. 	. 	. 	GGug(F(FGGG$
J 	 	 	  ug) ) )   555	7 	7 	7KKy'(J(JKKK,	 	 	  y') ) )   555	7 	7 	7 	 % %en\
d/$ /$ /$ % % %'6&H	J 	J 	J % %en=M
d/$ /$ /$ % % %'6&H	J 	J 	J 	J 	Jr   c                     |                      t          j        dd          g d           |                      d t          j        dd          D             g d           d S )Nrs  za,b,,c,)r\   r   r   r   r   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_splititer.<locals>.<listcomp>  s    FFF!FFFr   )r)   r-   r   r   rC   s    r   test_splititerzRegexTests.test_splititer  s|    T9557N7N7NOOOFFU_T9%E%EFFF I I I 	 	 	 	 	r   c                    |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          g d           |                      t          j        dd          d	d
g           |                      t          j        dd          g d           d S )NrU  r>  r7  rV  rc  rW  rX  r[  r\  r]  r^  r_  )r)   r-   rB   rA   r/   rC   s    r   test_graphemezRegexTests.test_grapheme   s
   UF3388::FCCCUI66;;==vFFFu
$& &( ( (	 	 	 	x
$& &(6'G	I 	I 	Iu.CDD
-
-
-	/ 	/ 	/ 	/ 	/r   c                    d}|                      t          j        d|          g d           |                      t          j        d|          g d           d}|                      t          j        d|          g d           |                      t          j        d|          g d           d}|                      t          j        d|          g d	           |                      t          j        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   32rP   3r   feet, rightr  z(?V1w)\b)r   r  r   r  r   r  "r  r  )r   r  r   can'tr   r  r   z32.3r   r  rs  r   r  r  r   zThe  fox)r   r  z  r  r   zcan't aujourd'hui l'objectif)r   r  r  r  r   aujourdr  huir   lr  objectifr   )r   r  r   zaujourd'huir   z
l'objectifr   )r)   r-   r   r   texts     r   test_word_boundaryzRegexTests.test_word_boundary  sa   FZ66 9 9 9 	 	 	 	[$77 : : : 	 	 	
 Z66 9 9 9 	 	 	[$77 : : : 	 	 	 .Z66 9 9 9 	 	 	 	[$77 :0 :0 :0 	1 	1 	1 	1 	1r   c                    |                      t          j        dd          ddg           |                      t          j        dd          dg           |                      t          j        dd          ddg           |                      t          j        d	d          ddg           |                      t          j        d	d          ddg           |                      t          j        d	d          ddg           |                      t          j        d
d                                          d           |                      t          j        d
d          d            |                      t          j        d
d          d            |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        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)^abcr:   z	(?mw)^abc(?m)abc$z	(?mw)abc$)r)   r-   r/   r@   r  rC   s    r   test_line_boundaryzRegexTests.test_line_boundary$  s!   u.@AAH
D 	 	 	u.@AA
	  	  	 u.DEEz
"	$ 	$ 	$y2DEEX
	  	  	 y2DEEX
	  	  	 y2HIIX
	  	  	  	gu55;;==qAAAgw77>>>gw77>>>k599??AA1EEEk7;;TBBBk7;;TBBBgu55;;==qAAAgw77==??CCCgw77>>>k599??AA1EEEk7;;AACCQGGGk7;;AACCQGGGk599??AA1EEEk7;;AACCQGGGk7;;TBBBlE::@@BBAFFFlG<<BBDDaHHHlG<<BBDDaHHHk599??AA1EEEk7;;AACCQGGGk7;;TBBBlE::@@BBAFFFlG<<BBDDaHHHlG<<BBDDaHHHHHr   c                 
   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d	           |                      t          j        dd
                                          d           |                      t          j        dd                                          d	           |                      t          j        dd
                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          dgdgd           |                      t          j        dd                                          d           |                      t          j        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  )r\   r   Nr  acd)r\   Nr   r  z(a)(?:(b)|(c))(d)z(a)(?|(b)|(b))(d))r\   r   r  z(?|(?<a>a)|(?<b>b))(c)z(?|(?<a>a)|(?<a>b))(c))r\   r   )r   r   z$(?|(?<a>a)(?<b>b)|(?<b>c)(?<a>d))(e)abe)r\   r   rY  r  )r  r   rY  z (?|(?<a>a)(?<b>b)|(?<b>c)(d))(e)z(?|(?<a>a)(?<b>b)|(c)(d))(e))r   r  rY  z (?|(?<a>a)(?<b>b)|(c)(?<a>d))(e)r\   r   )r\   r   )r  NrY  r   r  )r)   r-   rB   r<  capturesdictrC   s    r   test_branch_resetzRegexTests.test_branch_resetN  s!   %6==DDFF I 	 	 	%6==DDFF I 	 	 	%B
 *	, 	, 	,%B
 *	, 	, 	, 	%I
 0	2 	2 	2%I
 0	2 	2 	2%95AAHHJJ
	! 	! 	! 	%95AAHHJJ
	! 	! 	!%95AAHHJJ
	 	 	%>EELLNN
	 	 	%>EELLNN
	 	 	%>EELLNN
	 	 	 	%>EELLNN
	 	 	 	%L
 ?	, 	, 	,%L
 ?	, 	, 	,%H
 ?	, 	, 	,%H
 ?	, 	, 	,%D
 ?	, 	, 	,%D
 ?	, 	, 	, 	%H
 ?	, 	, 	,%H
 uC5!9!9	; 	; 	;%H
 +	- 	- 	-%H
 Sz!;!;	= 	= 	= 	= 	=r   c           	      $   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd	d
          d           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          ddg           |                      t          j        dd          ddg           |                      t          j        dd          ddg           |                      t          j        dd          ddg           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      d                     t          j        d!d"                    d#           |                      d                     t          j        d$d"                    d%           |                      d                     t          j        d&d'                    d(           |                      d                     t          j        d)d*                    d+           |                      d                     t          j        d,d*                    d+           |                      d                     t          j        d-d.                    d*           d                     d/ t          d0          D                       }|                      t          t          j        d1|                    d2           |                      t          t          j        d3|                    d4           |                      t          t          j        d5|                    d6           |                      t          t          j        d7|                    d8           |                      t          t          j        d9|                    d8           |                      t          t          j        d:|                    d6           |                      t          t          j        d;|                    d<           |                      t          t          j        d=|                    d>           |                      t          t          j        d?|                    d@           |                      t          t          j        dA|                    dB           |                      t          t          j        dC|                    dB           |                      t          t          j        dD|                    dE           |                      t          t          j        dF|                    dG           |                      t          t          j        dH|                    dG           |                      t          t          t          j        dI                              | j                   |                      t          j        dJdK          ddLg           |                      t          j        dMdK          ddLg           |                      t          j        dNdK          ddLg           |                      t          j        dOdK          ddLg           d S )PNz[a]r\   r7  z(?i)[a]rg   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}]r  z(?i)[a\p{Alpha}]z(?i)[a\P{Alpha}]z[a-b\p{Alpha}]abC0)r\   r   Cz(?i)[a-b\p{Alpha}]AbC0)rg   r   r  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]rW  r   z[^b\S]z[^8\d]za 1b2c              3   4   K   | ]}t          |          V  d S r   rk   r   r   s     r   	<genexpr>z&RegexTests.test_set.<locals>.<genexpr>  s(      99qCFF999999r   r  z	\p{ASCII}r  z
\p{Letter}u   z	\p{Digit}r_   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}]r  z(?V1)[\p{Letter}||\p{Digit}]z\p{HexDigit}   z(?V1)[\p{HexDigit}~~\p{Digit}]rb   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-   rB   rA   rj   r/   rN  r  lenr   r"   r.   r   )r   	all_charss     r   test_setzRegexTests.test_set  s%   VS116688&AAAZ55::<<fEEEXt4499;;VDDD\488==??HHH>4AA7KKK~t<<seDDD'94@@3%HHH>>c
KKK>>c
KKK':EBBS
E 	 	 	':EBBS
E 	 	 	 	'8&AA D D D 	 	 	'<fEE H H H 	 	 	 	~t<<seDDD~t<<seDDD==uEEE==uEEEz:!F!FGG
	 	 	y*!E!EFF
	 	 	|[!I!IJJ
	 	 	y%!@!@AA3GGGy%!@!@AA3GGGy'!B!BCCUKKKGG99E%LL99999	U]<CCDDcJJJU]=)DDEE
	 	 	U]<CCDDbIII 	U]+J
   	 	 	U]+U
   	 	 	U]+T
   	 	 	U]+F
   	 	 	U]+I
   	 	 	U]+F
   	 	 	U]+C
   	 	 	U]+J
   	 	 	U]?IFFGG
	 	 	U]+L
   	 	 	U]+L
   	 	 	 	d5=#A#ABBCC

	 	 	'=uEE
H 	 	 	'>FF
I 	 	 	u==SzJJJ'7>>c
KKKKKr   c           
      Y   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z   dt          t          d          dz             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d.d/dt          d           fd0d1dt          d           fd2d+dt          d           fd3d4dt          d4          fd5d4dt          d4          fd6d7dt          t          d8          t          d9          z   t          d:          z   t          d;          z   t          d<          z   t          d=          z             fd>d?dt          d?          fd@dAdt          dB          fdCdDdt          dD          fdCdEdt          d           fdFdGdt          d           fdHdGdt          d           fdCdIdt          dI          fdJdEdt          dE          fdKdEdt          d           fdLdEdt          dE          fdMdGdt          dG          fdNdGdt          d           fdOdGdt          dG          fdPdGdt          dG          fdQddt           j        | j	        fdRdSdSdt          dS          fdSdTdt          d           fdSdUdt          d           fdSdVdt          d           fdSdWdt          dS          fdSdXdt          dS          fdYdSdt          dS          fdZdSdt          dS          fdZd[dt          d[          fdZd\dt          d\          fd]d[dt          d[          fd]dSdt          d           fd]d^dt          d           fd]d\dt          d\          fd_d[dt          d[          fd_dSdt          dS          fd_d\dt          d           fd`dSdt          dS          fdadSdt          dS          fdadbdt          d           fdcdbdt          dS          fdadddt          d           fdedddt          dS          fdfdSdt          d          fdgdSdt          d          fdhdSdt          dS          fdhdUdt          dU          fdidjdt          dj          fdidkdt          d           fdldSdt          d           fdldmdt          dm          fdndmdt          d           fdndodt          do          fdpdqdt          dr          fdsdtdt          dt          fdudtdt          dt          fdvdtdt          dt          fdwdxdt           j        | j
        fdydxdt           j        | j
        fdzdxdt           j        | j        fd{dxdt           j        | j	        fd|dxdt           j        | j        fd}d}dt          d}          fd~ddt          d          fd~ddt          d          fdddt          d          fddmdt          d           fdddt          d          fdddt          d           fdddt          d           fdddt          d          fddtdt          d
          fdddt          d
          fdddt          d
          fdddt          d           fdddt          d           fdddt          d           fdddt          d           fdddt          d          fdddt          d          fdddt          d           fdddt          d           fddtdt          d           fdddt          d           fdddt          d           fdddt          d           fdddt          d           fdddt          d          fdddt          d          fdddt          d          fddSdt          d          fdddt          d          fdddt          d          fdddt          d           fdddt          d          fdddt          d          fdddt          d          fdddt          d          fddSdt          d          fddSdt          d          fdddt          dS          fdddt          d          fdddt          d          fdddt          d          fddxdt           j        | j	        fdddt          d          fdSddt          d           fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d
          fdddt          dƦ          fdddt          dȦ          fdddt          d           fdddt          d          fdddt          dͦ          fddSdt          dϦ          fddSdt          dѦ          fdddt          dӦ          fdddt          dӦ          fdddt          d֦          fdddt          dئ          fdddt          d           fddSdt          dۦ          fdddt          dަ          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d           fdddt          d           fdddt          d          fdd
dt          d
          fdddt          d           fdddt          d          fdddt          d          fdddt          d          fdddt          d           fddrdt          dr          fddd	t          dS          fddd	t          dS          fddd	t          d          fdd dt          d          fdddt          d           fdddt          d          fdddt          d          fdddt          d          fdddt          d          fd	ddt          d          fd
ddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdd d!t          d"          fd#d$dt          d%          fd#d&dt          d'          fd(d)dt          d*          fd(dSdt          d           fd+d)dt          d,          fd-dqdt          d.          fd/ddt           j        | j        fd0dd1t          d2          fd3dd1t          d4          fd5ddt           j        | j        fd6d7dt          d7          fd8d7dt           j        | j        fd9d:dt          d:          fd9d:dt          d;          fd<d=dt          d=          fd>d
dt          d
          fd?d@dt          d@          fdAd
dt          d
          fdBdCdt          dC          fdDd@dt          d@          fdSdSdt          dS          fdSdTdt          d           fdSdUdt          d           fdSdVdt          d           fdSdWdt          dS          fdSdXdt          dS          fdYdSdt          dS          fdZdSdt          dS          fdZd[dt          d[          fdZd\dt          d\          fdEd\dt          d\          fd]d[dt          d[          fd]dSdt          d           fd]d^dt          d           fdFd^dt          d           fd]d\dt          d\          fdFd\dt          d\          fdGd\dt          d\          fdHd\dt          d\          fdId\dt          d           fd_d[dt          d[          fd_dSdt          dS          fdJdSdt          dS          fd_d\dt          d           fd`dSdt          dS          fdKdSdt          dS          fdadSdt          dS          fdadbdt          d           fdcdbdt          dS          fdadddt          d           fdedddt          dS          fdfdSdt          d          fdgdSdt          d          fdhdSdt          dS          fdhdUdt          dU          fdidjdt          dj          fdidkdt          d           fdldSdt          d           fdldmdt          dm          fdndmdt          d           fdndodt          do          fdpdqdt          dr          fdsdtdt          dt          fdvdtdt          dt          fdLdxdt           j        | j        fdwdxdt           j        | j
        fdydxdt           j        | j
        fd}d}dt          d}          fd~ddt          d          fdddt          d          fddmdt          d           fdddt          d          fdddt          d           fdddt          d           fdddt          d          fddSdt          d          fdddt          d          fdddt          d          fdMdxdt           j        | j        fdNdxdt           j        | j        fdddt          d           fdzdxdt           j        | j        fdddt          d          fdddt          d          fdddt          d          fdddt          d          fd{dxdt           j        | j	        fd|dxdt           j        | j        fddSdt          d          fddSdt          d          fdddt          dS          fdOddt          dS          fdPdxdt           j        | j        fdQddt          dS          fdddt          d          fdRddt          d          fdddt          d          fdSddt          d          fdddt          d          fdTddt          d          fddxdt           j        | j	        fdddt          d          fdSddt          d           fdddt          d          fdUdVdt          dW          fdXddt          dY          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d
          fdddt          dƦ          fdddt          dȦ          fdddt          d           fdddt          d          fdddt          dͦ          fddSdt          dϦ          fddSdt          dѦ          fdddt          dӦ          fdddt          dӦ          fdddt          d֦          fdddt          dئ          fdddt          d           fddSdt          dۦ          fdddt          dަ          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d           fdddt          d           fdddt          d          fdZd
d[t          d
          fd\ddt          d          fd]ddt           j        | j        fd^ddt           j        | j        fdd
dt          d
          fdddt          d           fdddt          d          fdddt          d          fdddt          d          fdddt          d           fddrdt          dr          fddd	t          dS          fddd	t          dS          fd_d`dt          d`          fd_dadt          d           fd_dbdt          d           fd_dcdt          d           fd_dddt          d`          fd_dedt          d`          fdfd`dt          d`          fdgd`dt          d`          fdgdhdt          dh          fdidjdt          dj          fdkdjdt          dj          fdldhdt          dh          fdmd`dt          d           fdmdndt          d           fdodndt          d           fdmdjdt          dj          fdpdjdt          dj          fdqdjdt          dj          fdrdjdt          dj          fdsdjdt          d           fdtdhdt          dh          fdtd`dt          d`          fdud`dt          d`          fdtdjdt          d           fdvd`dt          d`          fdwd`dt          d`          fdxd`dt          d`          fdxdydt          d           fdzdydt          d`          fdx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          db          fdddt          d          fdddt          d           fdd`dt          d           fdddt          d          fdddt          d           fdddt          d          fdddt          d          fdddt          d          fdddt          d          fddxdt           j        | j        fddxdt           j        | j
        fddxdt           j        | j
        fdddt          d          fdddt          d          fdddt          d          fdddt          d           fdddt          d          fdddt          d           fdddt          d           fdddt          d          fdd`dt          d          fdddt          d          fdddt          d          fddxdt           j        | j        fddxdt           j        | j        fdddt          d           fddxdt           j        | j        fdddt          d          fdddt          d          fdddt          d          fdddt          d          fddxdt           j        | j	        fddxdt           j        | j        fdd`dt          d          fdd`dt          d          fdddt          d`          fdddt          d`          fddxdt           j        | j        fdddt          d`          fdddt          d`          fdddt          d`          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          dæ          fddxdt           j        | j	        fdŐddt          dƦ          fd_ddt          d           fdddt          d          fdȐddt          dʦ          fdːddt          d̦          fd͐ddt          dΦ          fdϐddt          dѦ          fdҐddt          dӦ          fdԐddt          d          fdԐddt          d          fdאddt          d٦          fdڐddt          dۦ          fdܐddt          d           fdݐddt          d          fdߐddt          d          fdd`dt          d          fdd`dt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d           fdd`dt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d          fdddt          d           fdddt          d           fdddt          d          fddd[t          d          fdd dt          d           fdddt          d          fddd	t          d          fddd	t          d          fdddt          d           fdddt          d	          fd
ddt          d          fdddt          d          fdddt          d           fdddt          d          fddd	t          d`          fddd	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dod	t          d          fddod	t          d          fddo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d.d,dt          d,          fd/d,dt          d,          fd0d*dt          d*          fdcd1dt          d           fd2d1dt          dS          fd3d4dt          dS          fdCdEdt          d           fdLdEdt          dE          fd5d6dt          d7          fd8d6dt          d7          fd9d:dt          dS          fd;d:dt          dS          fd<d=dt          d=          fd>d?d@t          dA          fdBd?d@t          dA          fdCdDdEt          dF          fdGddt           j        | j        fdHdIdt          dm          fdJddt           j        | j        fdKdLdt          dL          fdMddt          d          fdNdOdt          dO          fdPdOdt          d           fdQdOdt          dO          fdRdOdt          dO          fdSdOdt          dO          fdTdOdt          dO          fdUdVdt          dW          fdXdYd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          db          fdcdbdt          db          fdddbdt          db          fdedbdt          db          fdfdgdt          dg          fdhdidt          d           fdjdkdt          d           fdldOdt          d           fdmddEt          dn          fdodSdt          dp          fdqdSdt          dp          fdrdSdt          dp          fdsd
dt          d
          fdsdtdt          dt          fdudtdt          dt          f}|D ]}d }	 t!          |          dvk    r|\  }}}}n|\  }}}}}g }|ra|                    dw          D ]J}		 |                    t'          |	                     &# t(          $ r |                    |	           Y Gw xY w|T|                     ||x          5  |                     ||t           j        ||           d d d            n# 1 swxY w Y   t          j        ||          }
|
r2|rt           |
j        |           }n't          |
d d                    }nt          |
          }|                     ||           U# t(          $ r\ dy                    dz |d d{         D             d|gz             }|                     d}                    |                     Y w xY wd 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)1r\   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   r  z'\x01'r   r   9r  z\141z((a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\119abcdefghijklk9z0,11)r*  kr   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\xffr   r  z\x00ffffffffffffffz\x00fz\x00fe   þz\x00ffz\t\n\v\r\f\a\gz	
gz	
\gz\t\n\v\r\f\ar]   r^   r_   r`   ra   rb   rc   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 \\rQ  acbrR  rS  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}br  )r   r   r  z''r   xbcaxcabxxabcyababczab*czab*bcabbcabbbbczab+bcabqzab?bczab?crF  abccr  aabcr	  ^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\brE  yzr   zx\bzx\Br%   z\Bzr  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)rD  za\(*bza((bza\\bza\br  z0,1,2)r\   r\   r\   z(a)b(c))r   r\   r   za+b+caabbabcz(a+|b)*)r  r   z(a+|b)+z(a+|b)?r	  z)(z[^ab]*r  r4   z	a|b|c|d|erY  z(a|b|c|d|e)fr  )r  rY  zabcd*efgabcdefgzab*	xabyabbbzxayabbbzz(ab|cd)er}  )r  r  z[abhgefdc]ijhijz	^(ab|cd)ez(abc|)efr3  z(a|b)c*d)bcdr   z
(ab|ab*)bc)r   r\   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   r\   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)rO  rO  Nij)rP  rP  jeffgbcddreffgzz(((((((((a)))))))))zmultiple words of textzuh-uhzmultiple wordszmultiple words, yeahz	(.*)c(.*))r}  r  r  z\((.*), (.*)\)z(a, b)z2,1)r   r\   z[k]za[-]?cz(abc)\1r  z
([a-c]*)\1z^(.+)?BABrg   z(a+).\1$r   )r   r   z	^(a+).\1$aaaa)r  r   z
([a-c]+)\1z(a)\1)r   r\   z(a+)\1z(a+)+\1z(a).+\1r  )r  r\   z(a)ba*\1z
(aa|a)a\1$r<   )r<   r\   z
(a|aa)a\1$z(a+)a\1$z
([abc]*)\1z
(a)(b)c|ab)r  NNz(a)+xaaax)rW  r\   z([ac])+xaacx)rX  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)rY  track1titlezBlah blah blahz	([^N]*N)+abNNxyzN)r\  xyzNabNNxyz)abNNNz	([abc]*)xabcx)ra  r   z	([xyz]*)x)r%   r   z	(a)+b|aac)r=  Nz(?P<i d>aaa)az(?P<id>aaa)az0,id)rV  r<   z(?P<id>aa)(?P=id))rV  r   z(?P<id>aa)(?P=xd)r   gz\g<1>z(.)\g<1>gg)rc  rb  z\Nr`  z\N{LATIN SMALL LETTER A}z\pr  rT  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)re  r   z([abc])*bcd)r  r\   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)))rg   rg   rg   z(?i)(a)b(c))r]  rg   r  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)*)rU  r  z(?i)(a+|b){0,}z(?i)(a+|b)+z(?i)(a+|b){1,}z(?i)(a+|b)?)rg   rg   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  r  z(?i)([abc])*bcd)ry  rg   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]  rg   z(?i)a([bc]*)c*)r]  BCz(?i)a([bc]*)(c*d))ry  r  Dz(?i)a([bc]+)(c*d)z(?i)a([bc]*)(c+d))ry  r  r  z(?i)a[bcd]*dcdcdeADCDCDEz(?i)a[bcd]+dcdcdez(?i)(ab|a)b*c)r]  rU  z(?i)((a)(b)c)(d))r]  rg   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))))))))))r  z(?i)multiple words of textzUH-UHz(?i)multiple wordszMULTIPLE WORDS, YEAHzMULTIPLE WORDSz(?i)(.*)c(.*))r  rU  DEz(?i)\((.*), (.*)\)z(A, B))r  rg   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   rY  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
123rq  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   rs  )rx   r@  r  c                 ,    g | ]}t          |          S rS   )rH  )r   fs     r   r   z+RegexTests.test_various.<locals>.<listcomp>	  s    #>#>#>E!HH#>#>#>r   r;   ...z%Incorrect number of test fields: ({}))r-   r   r   r   MISSING_RPARENrH  UNKNOWN_GROUPr   rk   TRAILING_CHARSr  
BAD_ESCAPEBAD_CHAR_RANGENOTHING_TO_REPEATMULTIPLE_REPEAT
OPEN_GROUPr#  r   appendrF   r~   subTestr}   r@   r   r)   rN  r0   rG  )r   rl  r  excvalrx   r@  r<  rn  
group_listr   rU   r#   fieldss                r   test_variouszRegexTests.test_various  s>   B
BEKAB
 Rd.ABB
 Rd.AB	B

 BEK1DEB
 )$EK!#B
 $T3c

;B
 $T2u{!#B
 %dB!#B
 $T2u{!#B
" *4U[ "#B
( sCs4)B
* *4eCjjA+B
0 (r5;;?1B
2 #D#uSzz:3B
4 #D"eDkk:5B
6 )$EK "7B
< c3c

3=B
> )$U3ZZ@?B
D CU[$*@AEB
F ,GB
H SVVc\3c!ffsl(;(;<IB
J c3c

+KB
L 9:Je3446MB
T D#uT{{+UB
V tS%++.WB
X tS%++.YB
Z b%++.[B
` !"2C$%%'aB
d -.>$%%'eB
h fc5S??3iB
n #FBd<oB
p vr5;;/qB
r E$KK0sB
v E$KK0wB
x eO6L6LMyB
z eO6L6LM{B
| nc5Q#b''9I"gg:B: "%b'':*,/FF:3 44 44 5}B
@ ).#N##%AB
F .<c899;GB
P E3e-QB
R FBd,SB
T ZU4[[1UB
V Rt5WB
X FCv/YB
\ U6]]3]B
^ &"eDkk2_B
` U6]]3aB
b S%
*;*;<cB
d :r5;;7eB
f S%
*;*;<gB
h ZeJ.?.?@iB
l "b%+t':;mB
n  oB
p E3e-qB
r E2uT{{+sB
t E2uT{{+uB
v E2uT{{+wB
x GS%,,/yB
z GS%,,/{B
| UCu.}B
~ eS%,,/B
B fc5==1CB
D hU8__5EB
F fc5==1GB
H eRt-IB
J eRt-KB
L hU8__5MB
N fc5==1OB
P eS%,,/QB
R hE$KK0SB
T UCu.UB
X eS%,,/YB
Z fb%++.[B
\ VS%,,/]B
^ fb%++._B
` VS%,,/aB
b %eBii(cB
d %eBii(eB
f E3e-gB
h E3e-iB
j Wc5>>2kB
n Wb%++.oB
p ub%++.qB
r uc5<<0sB
t r5;;/uB
v sE%LL1wB
x uc5;;/yB
z dCt-{B
| c5;;/}B
~ dCt-B
@ S"ek4<8AB
D 3EK6EB
F CU[$/:GB
H S"ek4+>?IB
J S"ek4+>?KB
L 4eDkk*MB
N eS%,,/OB
P eS%,,/QB
R sE%LL1SB
T r5;;/UB
V sE%LL1WB
Z r5;;/[B
\ r5;;/]B
^ sE%LL1_B
` c5::.aB
b c5::.cB
d sE#JJ/eB
f b%++.gB
h b%++.iB
j r5;;/kB
l UBd,mB
p UCs,qB
r UCs,sB
t UBd,uB
v UBd,wB
x b%++.yB
z b%++.{B
| r5;;/}B
~ b%++.B
@ b%++.AB
B c5::.CB
F c5::.GB
H sE#JJ/IB
J eS%++.KB
L fc5;;/MB
N UE5#4#45OB
P 3E$KK(QB
R eRx1SB
T tS%++.UB
V vsE&MM2WB
X vsE&MM2YB
\ eWeO&<&<=]B
^ w.?(@(@A_B
` ieEll3aB
b eU;%7%78cB
d eU;%7%78eB
f eU:%6%67gB
h 3EK)<=iB
j uc5<<0kB
l BE$KK(mB
n 2sE"II&oB
r #sE#JJ/sB
t T5%*<*<=uB
v Cy)9)9:wB
x KeDkk2yB
z JU3ZZ0{B
| %})=)=>}B
~ UCu6B
@ '2uT{{3AB
B 5%
*;*;<CB
D l(;(;<EB
H 5%|)<)<=IB
J 5%})=)=>KB
L fgu5H/I/IJMB
N fgu5H/I/IJOB
P fgu5H/I/IJQB
R ieI.>.>?SB
T iU4[[9UB
V %m(<(<=WB
X VY6L0M0MNYB
Z &wU7^^D[B
^ "5%|1D1DE_B
` &w @ : : aB
d &tWe = 7 7 eB
h &vr5;;?iB
j &vr5;;?kB
l &x% A ; ; mB
p #CeCjj9qB
r &wE$KK@sB
t 5s$%%'uB
x '7E2G,H,HIyB
|  5%
2C2CD}B
~ D"eDkk*B
@ tS%++.AB
B 3e5CB
D Hc5<<8EB
F c5::.GB
H '5%*@*@AIB
J 62uT{{3KB
L 5%0A*B*BCMB
N HeU3D-E-EFOB
R tUE+$6$67SB
T eU;%7%78UB
V ueK&8&89WB
X u\':':;YB
Z %l(;(;<[B
\ E5%*=*=>]B
^ E5%*=*=>_B
` %l(;(;<aB
b HeU3D-E-EFcB
d 4%0B*C*CDeB
h feU=%9%9:iB
j m(<(<=kB
l @%2335mB
p +,J  ) * *+qB
v *eU3G-H-HIwB
x )UE-,@,@AyB
z &%)?)?@{B
| %U4[[1}B
~ &%y)9)9:B
@ %m(<(<=AB
F fb%+t7JKGB
H VVU?-C-CDIB
J !&&%2G2GHKB
L !&"ek4;MNMB
R CeCjj)SB
T sBT-CDUB
V $U4[[1WB
X $E+$6$67YB
Z CeCjj)[B
\ )#sE#JJ?]B
^ CeCjj)_B
` S%**-aB
b CeCjj)cB
d S%**-eB
j E3e-kB
l E2uT{{+mB
n E2uT{{+oB
p E2uT{{+qB
r GS%,,/sB
t GS%,,/uB
x UCu.yB
z eS%,,/{B
| fc5==1}B
~ hU8__5B
@	 3h8A	B
B	 fc5==1C	B
D	 eRt-E	B
F	 eRt-G	B
H	 E$KK0I	B
J	 hU8__5K	B
N	 3h8O	B
P	 (Cx9Q	B
R	 (Cx9S	B
T	 (Bd4U	B
V	 fc5==1W	B
X	 eS%,,/Y	B
Z	 %eEll3[	B
\	 hE$KK0]	B
^	 UCu._	B
`	 U5\\2a	B
d	 eS%,,/e	B
f	 fb%++.g	B
h	 VS%,,/i	B
j	 fb%++.k	B
l	 VS%,,/m	B
n	 %eBii(o	B
p	 %eBii(q	B
r	 E3e-s	B
t	 E3e-u	B
v	 Wc5>>2w	B
z	 Wb%++.{	B
|	 ub%++.}	B
~	 uc5<<0	B
@
 r5;;/A
B
B
 sE%LL1C
B
D
 uc5;;/E
B
F
 dCt-G
B
H
 dCt-I
B
J
 sBT-@AK
B
L
 S"ek4<8M
B
P
 3EK6Q
B
R
 4eDkk*S
B
T
 eS%,,/U
B
V
 sE%LL1W
B
X
 r5;;/Y
B
Z
 sE%LL1[
B
\
 r5;;/]
B
^
 r5;;/_
B
`
 sE%LL1a
B
b
 eS%++.c
B
f
 fc5;;/g
B
h
 UE5#4#45i
B
j
 3EK)?@k
B
l
 S"ek4+ABm
B
n
 3E$KK(o
B
p
 CU[$/:q
B
r
 eRx1s
B
t
 tS%++.u
B
v
 vsE&MM2w
B
x
 vsE&MM2y
B
|
 S"ek4+>?}
B
~
 S"ek4+>?
B
@ eWeO&<&<=AB
B w.?(@(@ACB
D ieEll3EB
F IsE%LL9GB
H CU[$*>?IB
J hU5\\2KB
L eU;%7%78MB
N 4k(:(:;OB
R eU;%7%78SB
T 4k(:(:;UB
V eU:%6%67WB
X D%z):):;YB
Z 3EK)<=[B
\ uc5<<0]B
^ BE$KK(_B
` 2sE"II&aB
b (E5+A+ABcB
d FE5+?+?@eB
h #sE#JJ/iB
j T5%*<*<=kB
l Cy)9)9:mB
n KeDkk2oB
p JU3ZZ0qB
r %})=)=>sB
t UCu6uB
v '2uT{{3wB
x 5%
*;*;<yB
z l(;(;<{B
~ 5%|)<)<=B
@ 5%})=)=>AB
B fgu5H/I/IJCB
D fgu5H/I/IJEB
F fgu5H/I/IJGB
H ieI.>.>?IB
J iU4[[9KB
L %m(<(<=MB
N VY6L0M0MNOB
P &wU7^^DQB
T "5%|1D1DEUB
V &w @ : : WB
Z &tWe = 7 7 [B
^ &vr5;;?_B
` &vr5;;?aB
b &x% A ; ; cB
f %c4s<gB
h )$U4[[AiB
r )"b%+$&sB
v -b"ek$&wB
| #CeCjj9}B
~ &wE$KK@B
@ 5s$%%'AB
D '7E2G,H,HIEB
F  5%
2C2CDGB
H D"eDkk*IB
J tS%++.KB
L 3e5MB
N Hc5<<8OB
P sE%LL1QB
T r5;;/UB
V r5;;/WB
X r5;;/YB
Z eEll3[B
\ eEll3]B
^ U5\\2_B
` %eEll3aB
b &#uV}}5cB
d 8S%//:eB
f hU8__=gB
j 63f6kB
l %U4[[1mB
n %U4[[1oB
p UBd4qB
r (Cx9sB
t hU8__=uB
v xeHoo>wB
x xeHoo>yB
z xU4[[9{B
| 63f6}B
@ 5#uU||4AB
B uc5<<8CB
D 8Rt5EB
F %eEll3GB
H eS%,,7IB
J %eEll3KB
L &"eDkk2MB
N eEll3OB
P &"eDkk2QB
R eEll3SB
V eS%)),WB
X eS%)),YB
Z sE%LL1[B
\ sE%LL1]B
^ '3g7_B
` "eDkk2aB
b 5"eDkk2cB
d 5#uU||4eB
f E2uT{{3gB
h E3e5iB
l 5#uT{{3mB
n $U4[[1oB
p $U4[[1qB
r 3EK1DEsB
t b%+t|<uB
v sBT\:wB
x tS%++.yB
z %eEll3{B
| E3e5}B
~ E2uT{{3B
B E3e5CB
D E2uT{{3EB
F E2uT{{3GB
H E3e5IB
J %eDkk2KB
L &#uT{{3MB
N uZ'8'89OB
P sBT-CDQB
R b%+t/EFSB
T sBd,UB
X Rdo>YB
Z %U8__5[B
\ 4eDkk2]B
^ 63f6_B
` 63f6aB
b b%+t/BCcB
d b%+t/BCeB
f %%*@*@AgB
h E7E2C,D,DEiB
j )S%,,7kB
n 	3e=oB
p Rd.BCqB
r (Cu6sB
t (Cu6uB
v hU5\\:wB
x D%{););<yB
z tUE+,>,>?{B
| D%{););<}B
~ tUE+,>,>?B
@ D%z):):;AB
D eU:->->?EB
F  ueJ.?.?@GB
H sBT-@AIB
J 5#uU||4KB
L Bd,MB
N r3b		*OB
P hu_/E/EFQB
R u]/C/CDSB
T c3c

3UB
V  ueK.@.@AWB
Z YU9-=-=>[B
\ S%++6]B
^ 
Cs4_B
` WeU=-A-ABaB
b  U5\\:cB
d gr5;;7eB
f XueJ.?.?@gB
h VUE,,?,?@iB
j ueU<-@-@AkB
l ueU=-A-ABmB
p !&'59L3M3MNqB
r !&'59L3M3MNsB
t !&'59L3M3MNuB
v !)S%	2B2BCwB
x !)Rt=yB
z eUE-,@,@A{B
|  E ; 5 5 }B
@ *7CwHAB
B &ueU<5H5HICB
D *7GU D > > EB
J *4% A ; ; KB
N *62uT{{COB
P *62uT{{CQB
R *8We E ? ? SB
V )#tU3ZZ@WB
X -dCtEYB
^ 'S%**=_B
` ;CCjjaB
d ?SCjjeB
h *7BdDiB
l "#93#$$&mB
p gw6K0L0LMqB
r $XueJ6G6GHsB
t b%++.uB
z 4eDkk2{B
| XsE%LL9}B
~ #uU||<B
@ U4[[1AB
B U4[[1CB
D &#uT{{3EB
H eS%**5IB
J uc5::6KB
L sE#JJ7MB
N )%j8I8IJOB
T #L#uXGUB
X )-eI>N>NOYB
\ 'c5??K]B
d S"ek43FGeB
f 0eFmmLgB
t c3c

+uB
v S%++.wB
x c3c

+yB
z S%**-{B
| c3c

+}B
~ S%**-B
D c5=="EB
P  
E$KKQB
V  U5\\WB
^  U5\\_B
h FBd,iB
j U6]]3kB
p _c5+=+=>qB
r U;-?-?@sB
t ]Cu6uB
v }c5<<8wB
x XsE(OO<yB
~ & H# B$ B$ %B
B  '5 B# <$ <$ %CB
P &vw ? 9 9 QB
V "b%+t?WB
Z ZeEll3[B
^ 2r5;(;<_B
` sCs,aB
d sCs,eB
l 5#uU||4mB
n UCt5oB
p 5#uU||4qB
r UCu6sB
t %eEll3uB
v E3e5wB
z {Cu>{B
~ c5+>+>?B
B %eEll3CB
D  3h@EB
F  Cy1A1ABGB
J #9c599=KB
N sE%LL1OB
P sE%LL1QB
R %eEll3SB
T %eEll3UB
^ !'3g?_B
b *Bd<cB
f %U4[[1gB
j ub%++.kB
n tWe4F.G.GHoB
r "5%|1D1DEsB
t !%l0C0CDuB
v "5%|1D1DEwB
z sCs,{B
| BCFmm}B
@ ?FmmAB
H  !	7 !	7AF7q66Q;;895GVVXX@A=GVVXv
  
 5!'c!2!2 5 55&--c%jj9999) 5 5 5&--e444445 %gfEE + +..x!6+ + ++ + + + + + + + + + + + + + + Wf55A *% 1%*717J+?%@%@FF%*1QQQ4[[FF!&q$$VX66665  R R R#>#>a1g#>#>#>%#HII		AHHPPQQQQQR!	7 !	7sI   k$Bp!l"Bl6l6BmmBmm5$Bn%n%Bn)	n,Bn)	p!A"BrrBrc                    |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dt          j        d          d          d           |                      t          j        ddd          d           |                      t          j        dd	 d          d           d S )
Nztest\?zresult\?\.
ztest?r  \1\1r%   rY   z\\1\\1c                     dS )Nr  rS   rT   s    r   rV   z-RegexTests.test_replacement.<locals>.<lambda>	  s    G r   )r)   r-   rj   r  rC   s    r   test_replacementzRegexTests.test_replacement	  s    9.@'JJ
	 	 	 	5'377>>>5%,w*?*?EEwOOO5)S997CCC5*;*;SAA7KKKKKr   c           	         t           j        t           j        z   t           j        z   }|dz  }d|z   dz   |z   dz   }|                     t          t          t          j        |                              | j	                   d S )Nr   r  r  r  )
r@  ascii_lowercasedigitsascii_uppercaser)   r   r"   r-   r.   r   )r   allsideregexps       r   test_common_prefixzRegexTests.test_common_prefix	  ss    $v}4v7MMQwtc!D(3.d5=#8#899::D<NOOOOOr   c                 
   |                      t          j        dd                              d          g d           |                      t          j        dd                              dd          dgddgf           |                      t          j        d	d
                              dd          dgg df           |                      t          j        dd                              dd          g dg df           |                      t          j        dd                              ddd          dgg ddgf           |                      t          j        dd                              d          dg           |                      t          j        dd                              d          ddg           |                      t          j        dd                              d          dg           d S ) Nz(\w)+r   r:   r  z(\w{3})+r3  r   rC  z^(\d{1,3})(?:\.(\d{1,3})){3}$z192.168.0.1r   192)168r  r'  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)aWbXcXdXeXfYr;   aW)bXcXdXeXfYz.*?(?=(.)+)br  r   z.*?(?>(.){0,2})dr  r   (.)+r\   )r)   r-   r@   capturesrB   rC   s    r   test_captureszRegexTests.test_captures	  s-   h66??BB E E E 	 	 	k8<<EEaKK:u~
&	( 	( 	(&F
 !!Q5)5F5F5F)G	I 	I 	I%G
! !!)!Q2J2J2J
(
(
(2*	+ 	+ 	+ 	%@
 "(1a++tf6N6N6N&.	 	 	 	ot<<EEaHH%	 	 	&96BBKKANN*	 	 	gs33<<Q??#GGGGGr   c                    t          j        dd          }|                     |                    ddd          d           t          j        dd          }|                     |                    ddd          d           t          j        d	d
          }|                     |                    ddd          d           t          j        dd          }|                     |                    dd          d           t          j        dd          }|                     |                                d           t          j        dd          }|                     |                                d           d S )Nz(X.*?Y\s*){3}(X\s*)+AB:zXY
X Y
X  Y
XY
XX AB:r   r:   r   ))r;      rb      r     z(X.*?Y\s*){3,}(X\s*)+AB:))r   r  r  r  z\d{4}(\s*\w)?\W*((?!\d)\w){2}9999XX)ro  r  )   r4  zA\s*?.*?(\n+.*?\s*?){0,2}\(Xz
A
1
S
1 (X)r   r_   )r  rk  z	Derde\s*:zaaaaaa:
Derde:)rk     zaaaaa:
Derde:)rc   ra   )r-   r@   r)   rA   rI  s     r   test_guardszRegexTests.test_guards	  sL   L3
%' '1a*GHHHL4
%' '1a*GHHHL98DD1a*DEEEL8/JJ1'8999L'8997+++L'7887+++++r   c           
         d}t                      }t                      }|                    d          D ]}|                    d          \  }}|                    ||f           |                    ||f           |                    ||f           |                    ||f           |                    ||f           |D ]}|D ]}t	          j        d|z   dz   |          }|rJ||f|vrC|                     d                    t          |          t          |                               i||f|v rC|                     d                    t          |          t          |                               d S )Nu   I=i;I=ı;i=İ;=z(?i)\A\Zz{} matching {}z{} not matching {})	rg  r   updateaddr-   rB   r0   rG  rH  )r   pairsr$  matchingpairrs  rt  rU   s           r   test_turkiczRegexTests.test_turkic	  s   'EE	55KK$$ 	% 	%Dzz#HCc3Z(((LL#s$$$LL#s$$$LL#s$$$LL#s$$$$ 
	' 
	'C  	' 	'K	C% 7== 'Sz11		"2"9"9%****#& #& ' ' ' SzX--		"6"="=eCjj**#& #& ' ' '	'
	' 
	'r   c                    g d}|                      t          j        dd|                                          d           |                      t          j        dd|                                          d           |                      t          j        dd|          d            g d}|                      t          j        d	d
|                                          d
           |                      t          j        dd|                                          d           |                      t          j        d	d|          d            |                      t	          t          t          j        dg d                              | j                   |                      t          j        ddt          g d                    g            |                      t          j        ddt          g d                    dg           dg}|                      t          j        dd|          
                                d           ddg}|                      t          j        dd|          
                                d           dg}|                      t          j        dd|          
                                d           dg}|                      t          j        dd|          
                                d            |                      t          j        dd!|          
                                d            |                      t          j        d"d#          
                                d$           |                      t          j        d"d%          
                                d$           |                      t          j        d&d'g           
                                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}drm  z+solid QWERT)r  r  +solidr  STRASSE(?fi)\L<words>u   straßewordsro  stressr   rc   kitz(?i)\L<words>SKITSr  u   SKİTSz(?fi)\b(\w+) +\1\bu    straße STRASSE )r:   r  u    STRASSE straße z^\L<options>$r   r6   )r)   r-   rB   r   r   r"   r.   r   r/   rg  rA   r@   )r   rn  s     r   test_named_listszRegexTests.test_named_lists
  s   )))%5{  uww	- 	- 	-%9;  uww	- 	- 	-%5|  	 	 	 -,,%6  uww	. 	. 	.%:L  uww	. 	. 	.%6  	 	 	 	d5=1F%%%$' $' $' ( ( ) )*.*<	> 	> 	> 	999::< < <=?	A 	A 	A555668 8 8:B	E 	E 	E +%6
/w@ @ @@D I	 	 	 h'%6
/w@ @ @@D I	 	 	 99%6	  	) 	) 	) '&6  	) 	) 	)&6
9  	) 	) 	) 	&;
9; ;;?4667	L 	L 	L&;
9; ;;?4667	L 	L 	L 	&6BGGGLLNN
	 	 	 	 	r   c           	      #   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   d}|                      t          j        d|          d            |                      t          j        d	|                              d
d          d           |                      t          j        d|          d            |                      t          j        d|          d
         d           |                      t          j        d|          d
         d           d}|                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          t          t          j        d                              | j                   |                      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            |                      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        d0d1                              d
d          d           |                      t          j        d0d2                              d
d          d3           |                      t          j        d0d4                              d
d          d3           |                      t          j        d0d5                              d
d          d3           |                      t          j        d0d6                              d
d          d           |                      t          j        d0d7                              d
d          d           |                      t          j        d0d8                              d
d          d           |                      t          j        d0d9                              d
d          d:           |                      t          j        d0d;                              d
d          d:           |                      t          j        d0d<                              d
d          d:           |                      t          j        d0d=          d            |                      t          j        d0d>          d            |                      t          j        d0d?          d            |                      t          j        d0d@          d            |                      t          j        d0dA          d            |                      t          j        dBdC                              d
d          dD           |                      t          j        dEdC                              d
d          dF           |                      t          j        dGdH                              d
d          dI           |                      t          j        dGdJ          d            |                      t          j        dGdK                              d
d          dL           dM}|                      t          j        dN|                              d
d          dO           |                      t          j        dP|                              d
d          dQ           |                      t          j        dR|                              d
d          dS           |                      t          j        dTdUdV	                                W          dXdYg           |                      t          j        dTdZdV	                                W          d[dXg           |                      t          j        d\dZdV	                                W          dYdXg           |                      t          j        d]dUdV	                                W          d^dXg           |                      t          j        d_dUdV	                                W          dYdXg           |                      t          j        d]dZdV	                                W          dXdYg           |                      t          j        d`dadb	                                W          dcddg           |                      t          j        d`dedb	                                W          dfdcg           |                      t          j        dgdedb	                                W          dddcg           |                      t          j        dhdadb	                                W          didcg           |                      t          j        djdadb	                                W          dddcg           |                      t          j        dhdedb	                                W          dcddg           |                      t          j        dkdl          
                                dm           |                      t          j        dndl          
                                dm           |                      t          j        dodp          
                                dq           |                      t          j        drds          dsdtg           |                      t          j        dudv          dvdtg           |                      t          j        dwdx                                          dy           |                      t          j        dwdz                                          d{           |                      t          j        dwd|                                          d}           |                      t          j        dwd~          d            |                      t          j        dwd                                          d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        g ddgg f           |                      t          t          j        dd                    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   r:   )r^      r  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})r6   r6   z(?b)(fuu){i<=3,d<=3,e<=5})r^   r_   r  z(fuu){i<=2,d<=2,e<=5})rc   r_   r  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)ro  ro  z(?e)(foobar){e})r>   r>   z(?b)(foobar){e})r`   r  r  z(foobar){e<=2}xirefoabrzlfd)r   r^   r
  xirefoabzlfdz(foobar){i<=2,s<=2,e<=2}oobargoobaploowap)r  r`   r  z\b(foobar){e}\bzfoobarz)r   rk  r  zboing zfoobarz goobar woopz(?b)\b(foobar){e}\b)r  r  r  z^(foobar){e<=1}$foobarxfoobar)r  r  foobarxfooxbarfoxbarxoobarfoobaxoobar)r   r  r  fobarfoobaxfoobarxfoobarxxxxfoobarxfoxbarfoxbarxz (foobar){i<=1,d<=2,s<=3,2d+1s<4}(3oifaowefbaoraofuiebofasebfaobfaorfeoaro)r4  ra   r"  z$(?b)(foobar){i<=1,d<=2,s<=3,2d+1s<4})"   '   r#  zfoo(bar){e<=1}zap	foobarzap)r   r^   r;   r4  fobarzapfoobrzap)r  r;   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   )r-  r-  z(?es)^.*(dot.org){e}.*$)r,  )]   d   z^.*(dot.org){e}.*$))r   w   )   e   z\b\L<words>{e<=1}\bz book cot dog desk zcat dogr  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   r  zservice detect)r   r  zservice detecti)r   r  zservice detectionzin service detection)r      (?:cats|cat){e<=1}catr   r   r:   (?e)(?:cats|cat){e<=1}r   r   r   z(?:cat|cats){e<=1}catsr   r:   r   z(?e)(?:cat|cats){e<=1}z(?:cat){e<=1} (?:cat){e<=1}zcat cotr:   r   r   z/(?e)(GTTTTCATTCCTCATA){i<=4,d<=4,s<=4,i+d+s<=8}ATTATTTATTTTTCATA)r   r4  r_   r`   r;   z(?:fo){e<=1}|(?:fo){e<=2}FOT)r)   r   r"   r-   r.   r   r@   rA   r/   r   r<  rB   	fullmatchfuzzy_countsfuzzy_changesr/  r  s     r   
test_fuzzyzRegexTests.test_fuzzyA
  s   d5=#A#ABBCC

	 	 	d5=#<#<==>>

	 	 	d5=#>#>??@@

	 	 	d5=1K#L#LMMNN

	 	 	d5=1Q#R#RSSTT

	 	 	d5=1P#Q#QRRSS

	 	 	 ?&DdKK
	 	 	&D
 Q

.	0 	0 	0&94@@$GGG&<dCCAF
	 	 	&;TBB1E
	 	 	 5&=tDDII!
 	  	  	 &A
 Q

.	0 	0 	0&=tDDII!
  	" 	" 	"&A
 Q

.	0 	0 	0&:DAAFFq!LL
	 	 	&>EEJJ1
  	" 	" 	" 	d5=1N#O#OPPQQ

	 	 	 	m
! !!%a-=	? 	? 	?&7
! !!%a-=	? 	? 	?&7
! !!%a-A	C 	C 	C 	&6
 41::'7	9 	9 	9&6GGNNN 	&@
 #tAqzz+=	? 	? 	? 	&9:FFKKA
 	  	  	 &9
&( ((,Q

4D	F 	F 	F&=
&( ((,Q

4H	J 	J 	J 	&8(CCHHANN
	 	 	&8)DDII!
 	  	  	 &8)DDII!
 	  	  	 &8)DDII!
 	  	  	 &8(CCHHANN
	 	 	&8(CCHHANN
	 	 	&8(CCHHANN
	 	 	&8'BBGG1MM
	 	 	&8'BBGG1MM
	 	 	&8'BBGG1MM
	 	 	&8*EEtLLL&8*EEtLLL&8*EEtLLL&8)DDdKKK&8)DDdKKK
 	&H
46 66:d1ajj C	 	 	 	&L
46 66:d1ajj C	 	 	
 	&9;GGLLQ
 	  	  	 &9:FFMMM&9:FFKKA
 	  	  	 O&?FFKKA
 $	& 	& 	&&@$GGLLQ
 #	% 	% 	%&;TBBGG1MM
	! 	! 	!
 	'=
y'8'8: : :<A5>	K 	K 	K'=
y'8'8: : :<BE?	L 	L 	L'A
y'8'8: : :<A5>	K 	K 	K'A
y'8'8: : :<BE?	L 	L 	L'B
y'8'8: : :<A5>	K 	K 	K'A
y'8'8: : :<A5>	K 	K 	K'>
 
(8(8(:(:< < <>Df=M	O 	O 	O'>
 
(8(8(:(:< < <>Ev=N	P 	P 	P'B
 
(8(8(:(:< < <>Df=M	O 	O 	O'B
 
(8(8(:(:< < <>Ev=N	P 	P 	P'C
 
(8(8(:(:< < <>Df=M	O 	O 	O'B
 
(8(8(:(:< < <>Df=M	O 	O 	O 	&99EELLNN
	 	 	&=
 VXX~	/ 	/ 	/&:
 fhh 0	2 	2 	2 	'8'BBW
E 	 	 	|U;;eR[III 	%D
 "dffg	/ 	/ 	/%D
  DFFG	- 	- 	-%D
 !TVVW	. 	. 	.%D
  $	& 	& 	&%D
 " ""&$&&'	3 	3 	3 	)>
 y	* 	* 	*)B
 y	* 	* 	* 	)>
 		+ 	+ 	+)B
 		+ 	+ 	+ 	)G
 !9	. 	. 	. 	&X
 ,~~~sB.G	I 	I 	I 	ek*EtLLMM
	 	 	 	 	r   c                    |                      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            |                      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            |                      t          j        dd          d d          d           |                      t          j        dd                              d          g d           |                      t          j        dd          d d          d           |                      t          j        dd                              d          g 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$          }|                      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?))\1rY   )rY   r%   r   r  )r  r\   r   abba)rF  r\   Nkayak)rG  r+  Npaper)papr  r\   dontmatchmez(?r)\2(?:(\w?)|(?R))(\w))rY   r   r%   )r  r   r\   )rF  Nr\   )rG  Nr+  )rI  r\   r  z\(((?>[^()]+)|(?R))*\)
(ab(cd)ef))rK  r  r:   )r  r  (cd)r  z(?r)\(((?R)|(?>[^()]+))*\))rK  r  )r  r  rL  r  z\(([^()]+|(?R))*\)zsome text (a(b(c)d)e) more text)(a(b(c)d)e)rY  z(?r)\(((?R)|[^()]+)*\))rM  r\   z!(foo(\(((?:(?>[^()]+)|(?2))*)\)))foo(bar(baz)+baz(bop)))rN  rN  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   rgxs     r   test_recursivezRegexTests.test_recursive  s   &=tDDaaaI
	 	 	&=uEEqqqJ
	 	 	&=vFFK
	 	 	&=wGGL
	  	  	 &=wGGL
	 	 	&=}MM
	 	 	 	&A4HH!!!M
	 	 	&A5II111N
	 	 	&A6JJAAA  	" 	" 	"&A7KKQQQ !	# 	# 	#&A7KKQQQ 	  	  	 &A
 	  	  	  	&?NN
!!#	% 	% 	%&?
  %?%?%?	A 	A 	A 	&C
 2	4 	4 	4&C
  %?%?%?	A 	A 	A 	&;
+- -./aa23G	I 	I 	I 	&?
+- -./aa23G	I 	I 	I 	&J
"$ $%&QQ)+	  	  	 
 	&N
"$ $%&QQ)+	  	  	 
 m  Z  [  [cjj)ABBCCTJJJcjj)ABBCCUKKKcjj)<==>>EEEcjj);<<==uEEEcjj)9::;;UCCCcjj):;;<<eDDDcjj);<<==tDDDcjj);<<==tDDD 	cjj5566>>>cjj)9::;;TBBBcjj)?@@AA4HHHcjj)@AABBDIIIIIr   c                    t          j        d          }|                     t          j        |          |u            |                     t          j        |          |u            |                    d          }|                     t          j        |          |u           |                     t          j        |          |u           |                     |j        d u           t          j        |          }|                                 |                     |j        d u           |                     |j        d u            t          j        dd          }t          j        |          }| 	                    t          |                                          d           | 	                    t          |                                          d           t          j        dd          }t          j        |          }| 	                    t          |                                          d           | 	                    t          |                                          d           t          j        dd          }t          j        |          }| 	                    t          |          d           | 	                    t          |          d           t          j        dd          }t          j        |          }| 	                    t          |          d           | 	                    t          |          d           d S )Nr\   rP   r  r   r   rW  )r-   r.   
assertTruecopydeepcopyrB   r@  detach_stringr  r)   r  r   r   )r   rrU   m2r  it2s         r   	test_copyzRegexTests.test_copyI  s   M#	!)***a((A-...
 GGCLL	!A-...a((1222,---Yq\\
,---	T)*** ^C&&immb))3///c**C000 ^C&&mBb))3///c**C000 _S%((immb3'''cC((( _S%((mBb3'''cC(((((r   c                    |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d	           |                      t          j        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[  r:   )r\  r:   )r)   r-   subfsubfnrB   expandfrC   s    r   test_formatzRegexTests.test_formatt  s   N4D
 *	, 	, 	,$B
Y( ()2	4 	4 	4 	^5E
 /	1 	1 	1%C
Y( ()7	9 	9 	9 	^
 W-..0D	F 	F 	F 	F 	Fr   c           
      :   |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        ddd                    d           |                      t          t          j        ddd	                    d           |                      t          t          j        dd
d	                    d           |                      t          t          j        dd
dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        ddd                    d           |                      t          t          j        ddd	                    d           |                      t          t          j        dd
d	                    d           |                      t          t          j        dd
dd                    d           d S )Nr   Tra  Fr;   )r?  xabcr:   )r>  r2  r   r  z(?r)abcr)   r/  r-   rA  rC   s    r   test_fullmatchzRegexTests.test_fullmatch  sm   eofe<<==tDDDeoff==>>FFFeoffQGGGHH$OOOeoff!DDDEEtLLLeofg1EEEFFNNNeofg1    	 	 	 	eoj%@@AA4HHHeoj&AABBEJJJeoj&KKKLL
	 	 	 	eoj&aHHHII
	 	 	eoj'qIIIJJ
	 	 	eoj'q    	 	 	 	 	r   c           	         |                      t          j        ddd          d           |                      t          j        dt          d          t          d                    d           |                      t          j        ddd          d           |                      t          j        dt	          d          t	          d                    d           |                      t          j        dt          d          t          d                    d           |                      t          j        dt          d          t          d                    d           d	t          d	          fD ]}|                      t          j        d
|          g d           t          j	        dk    rW|                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           dt	          d          t          d          t          d          fD ]}|                      t          j        d|          g d           t          j	        dk    rW|                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           dt          d          fD ]}|                      t          j
        d|          g d           |                      t          j
        d|          g d           |                      t          j
        d |          g d!           d"t	          d"          t          d"          t          d"          fD ]}|                      t          j
        d#|          g d$           |                      t          j
        d%|          g d$           |                      t          j
        d&|          g d'           dt          d          fD ].}|                     t          j        d|                                          d(           |                     t          j        d)|                                          d*           |                     t          j        d)|                              d+          d           |                     t          j        d)|                              d,          d           |                     t          j        d)|                              d,d,          d-           0dt	          d          t          d          t          d          fD ].}|                     t          j        d|                                          d(           |                     t          j        d.|                                          d/           |                     t          j        d.|                              d+          d           |                     t          j        d.|                              d,          d           |                     t          j        d.|                              d,d,          d0           0d S )1Nr&   r\   r   xaz   yrR  s   xyzs   xazr   r   r   r   r   r   r   r   r   r   s   :a:b::c   :)r   rR  r  r   r!  s   :*)r   r   rR  r   r  r   r!  r   s   (:*))r   rh  r   r   rR  rh  r   r   r     ::r   r   r!  r   r   )r   rR  r  r!  )r   rh  rR  rh  r  ri  r!  r   r   r   r   r   r   s
   a:b::c:::ds   :+)rh  ri  s   :::s   (:+)s   (:)(:*)))rh  r   )rh  rh  )rh  ri  rS   r  r  r   r:   r	  s   (a))rR  )rR  rR  )r*   r-   rj   r   r   	bytearray
memoryviewr   r   r   r/   r)   rB   r<  r   )r   r@  s     r   test_issue_18468zRegexTests.test_issue_18468  s   eiS%88%@@@ei[-=-=
e

 $	& 	& 	&eidF;;VDDDeimD.A.A


! !"(	* 	* 	*eiioo
F

 $	& 	& 	&eij.>.>
V

 %	' 	' 	'  Y!7!77 	- 	-F!!%+c6":": = = =   9,,%%ek$&?&? B( B( B( ) ) )%%ek&&&A&A DL DL DL M M M M %%ek$&?&? B B B   %%ek&&&A&A D, D, D, - - - - "=#<#<
J

J!7!79 	2 	2F!!%+dF";"; > > >   9,,%%ek%&@&@ C3 C3 C3 4 4 4%%ek'6&B&B E E E     %%ek%&@&@ C C C   %%ek'6&B&B E1 E1 E1 2 2 2 2 #K$=$== 	( 	(F!!%-f"="= @ @ @   !!%-"?"? B B B   !!%-	6"B"B E' E' E' ( ( ( ( %mM&B&B
M
"
"J}$=$=? 	2 	2F!!%-v">"> A A A   !!%-"@"@ C C C   !!%-
F"C"C F1 F1 F1 2 2 2 2 ;s+++ 	 	FU[f55<<>>CCCU[77>>@@&IIIU[77==a@@#FFFU[77==a@@#FFFU[77==aCC F     ]400)D//
T

 	 	FU[v66==??DDDU[88??AA7KKKU[88>>qAA4HHHU[88>>qAA4HHHU[88>>q!DD G    	 	r   c                    |                      t          j        ddd          j        d           |                      t          j        ddd                                          d           |                      t          j        ddd          j        d           |                      t          j        ddd                                          d           |                      t          j        dd	d          d            |                      t          j        d
dd          j        d           |                      t          j        d
dd                                          d           |                      t          j        d
dd          j        d           |                      t          j        d
dd                                          d           |                      t          j        ddd          j        d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          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          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        dd d          d            |                      t          j        dd!d          d            d S )"Nr  r\   Tpartialr7  r<  r8  r>   catchzabc\w{3}r3  Fro  r}  r  z\d{4}$1234z	\L<words>post)ro  r  rq  r>  r  POST   poﬆPOSz	[a-z]*4R$rc  ab4a4a4R4aa44)r)   r-   rB   ro  rA   rC   s    r   test_partialzRegexTests.test_partial  s   T3===EtLLLT3===BBDDfMMMWeTBBBJ
	 	 	WeTBBBGGII L 	 	 	WgtDDDdKKK[(  	( 	( 	([(  	( 	( 	(['  	' 	' 	'['  	( 	( 	( 	YEEEM
	 	 	 	\64  !5	* 	* 	*\64  $&&&	* 	* 	*\5$  !4	) 	) 	)\5$  $&&&	* 	* 	* 	%6  %u	. 	. 	.%6  "dfff	. 	. 	.%6t  %t	- 	- 	-%6t  "dfff	. 	. 	.%6
ug' ' '(,	. 	. 	. 	\3EEEJJLL
	 	 	\4FFFKKMM
	 	 	\5$GGGLLNN
	 	 	\4FFFKKMM
	 	 	\5$GGGLLNN
	 	 	\4FFFMMM\5$GGGNNNNNr   c                 6   |                      t          t          j        dt          j                            d           |                      t          t          j        dt          j                            d           |                      t          j        dd          ddg           |                      t          j        d	d          ddg           |                      t          j        dd
          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      d t          j        dd          D             dg           |                      t          j        ddt          j        t          j        z            	                    d          d           |                      t          j        ddt          j        t          j        z            	                    d          d           |                      t          j        ddt          j        t          j        z            	                    d          d           |                      t          j        dd          
                                d           |                      t          t          j        ddt          j                            d           |                      t          j        dd          	                    dd           d!           |                      t          j        d"d#          	                    dd           d$           |                      t          j        d%d&          	                    d          d&           |                      t          j        d'd(          	                    dd           d)           |                      t          j        d*d(          d            |                      t          j        d+d,          	                    d          d           |                      t          j        d-d.                              d           d/           |                      t          j        d-d0                              d           d1           |                      t          j        d-d2                              d           d3           |                      t          j        d4d2          	                                d2           |                      t          j        d5d6                                          d7           |                      t          j        d8d.                                          d9           |                      t          j        d8d0                                          d:           |                      t          j        d;d          	                    d          d           |                      t          j        d<d2t          j                  	                    d          d2           |                      t          j        d=d>                              dd           d?           |                      t          j        d@d>                              dd           dA           |                      t          j        dBd>                              dd           dC           |                      t          j        dDd>                              dd           dE           |                      t          j        dFdG          	                    d          d.           |                      t          j        dHdIdJdKgL          g dM           |                      t          j        dNdI          g dO           |                      t          j        dPdI          g dM           |                      t          j        dQdI          g dM           |                      t          j        dRd.          	                    dd dS          dT           |                      t          j        dUdV                              dd           dW           |                      t          j        dXd.          	                    dd           dY           |                      t          j        dZd[          d            |                      t          j        d\d]          d            |                     t          j        | j        d^            |                      t          j        d_d`                              d          da           |                      t          j        dbdc          	                    d          dc           |                      t          j        ddde          d            |                      t          j        dfdg          d            |                      t          j        dhdi          	                    dd dS          dj           |                      t          j        dkdl          d#dmg           |                      t          j        dndl          d#dmg           |                      t          j        dodl          d#dmg           |                      t          j        dpdl          d#dmg           |                      t          j        dqdr          	                                dr           |                      ds t          j        dtdu          D             dvdwg           |                      t          j        dxdy                              dz          g d{           |                     t          j        | j        d|            d}}d~}|                      t          j        ||t          j                  d         d           |                      t          j        dd          dg           |                      t)          t          j        dddt          j                            t)          d                     |                      t          j        dd          d            |                      t          j        dd                              d          dd:g           |                      t          j        dd d          d           t          j        dt          j                  }|                      |                    d          d            |                      |                    d          g            |                     t          j        | j        d            |                      t          j        dd          d           |                      t          j        dd          d           |                      t          j        d          d           |                      t          j        dd          d           |                      t          j        dd          d           |                      t          j        d          d           |                      t          j        dd          
                                d           |                      t          j        dd          
                                d           |                      t          j        dd          
                                d           t          j        dt          j        t          j        z            }|                      d |                    d          D             dg           |                      |                    d          dg           d}|                      d |                    |          D             dg           |                      |                    |          dg           t          j        dt          j        t          j        z  t          j        z            }|                      d |                    d          D             dg           |                      |                    d          dg           d}|                      d |                    |          D             dg           |                      |                    |          dg           t:          j        dk    r+|                      t          j        ddd          dV           n*|                      t          j        ddd          d           |                      t          j        ddd          dV           t:          j        dk    r+|                      t          j        ddd          d           n*|                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dddt          j                  d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd¦          j         dæ           |                      t          j        dd¦          j         dæ           |                      t          j        dd¦          j         dæ           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        ddȦ          g            |                      t          j        ddd          d           |                      t          t          j        d.d.t          j!                            d           |                      t          j        dd˦          ddg           |                      t          j        dd˦          ddg           |                      t          j        dd˦          ddg           |                      t          j        dd˦          ddg           |                     t          j        ddЄ            |                      t          j        dd.          	                    dd dS          dҦ           |                      t          j        dd.          	                    dd dS          dҦ           dԠ"                    dՄ tG          d֦          D                       }|                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         |                      t)          dԠ"                    t          j        d|                              t)          dԠ"                    t          j        d|                                         tI          tG          d                    }|                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d |                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d	|                              t)          d"                    t          j        d
|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          t          j        dd          	                                          t)          d                     |                      t          j        dd          
                                d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j%        ddd          d           |                      t          j%        ddd          d           |                      t          j&        ddd                                          d:           |                      t          j&        ddd          j'        d           |                      t          j        ddd                                          d            |                      t          j        d!dd                                          d            |                      t          j        d"dd                                          d#           |                      t          j        d$d%                                          d9           |                      t          j        d&d'          d            |                      t          j        d(d)          g d*           |                      t          j        d+d)          g d*           |                      d, t          j        d-d.          D             g d/           |                      d0 t          j        d1d.          D             g d/           |                      t          j        d2d3          d         d3           |                      t          j        d2d4          d         d4           |                      t          j        d5d6          d         d6           |                      t          j        d7d8          d         d8           |                      t          j        d9d          	                    dd           d:           |                      t          j        d;d<          d=d>g           |                      t          j        d?d<          dd@g           |                      t          j        dAd          	                    dd           dB           |                      t          j        dCd<          dDdg           |                      t          j        dEd<          d@dg           |                      t          j        dFdG          d         dG           |                      t          j        dHd.          	                    dI          d            |                      t          j        dHd.                              dI          d.g           |                      t          j        dJdK          d         dL           |                      t          j        dMdK          d         dL           |                      t          j        dNdK          d            |                      t          j        dOdK          d         dK           |                      t          j        dPdQ          d         dQ           |                      t          j        dPdR          d         dS           |                      t          j        dTdQ          d         dU           |                      t          j        dTdR          d         dS           |                      t          j        dVdR          d         dR           |                      t          j        dVdW          d         dS           |                      t          j        dXdW          d         dS           |                      t          j        dYdW          d         dS           |                      t          j        dZdK          d            |                      t          j        d[dK          d         dK           |                      t          j        d\dQ          d         dQ           |                      t          j        d\dR          d         dS           |                      t          j        d]dR          d         dR           |                      t          j        d]dW          d         dS           |                      t          j        d^dW          d         dS           |                      t          j        d_dW          d         dS           |                      t          j        d`dQ          d         dQ           |                      t          j        d`dR          d         dS           |                      t          j        dadQ          d         dU           |                      t          j        dadR          d         dS           |                      t          j        dbdR          d         dR           |                      t          j        dbdW          d         dS           |                      t          j        dcdW          d         dS           |                      t          j        dddW          d         dS           |                      t          j        dedQ          d         dQ           |                      t          j        dedR          d         dS           |                      t          j        dfdR          d         dR           |                      t          j        dfdW          d         dS           |                      t          j        dgdW          d         dS           |                      t          j        dhdW          d         dS           di}|                      tQ          t          j        dj|                    d            |                      t          j        dkdl                                          d:           |                      t          j        dmdn          d         dn           t          j        do          }dp}	|                      dq |                    |	          D             drdsg           |                      t          j        dtdut          j                                                  dv           |                      t          j        dwdut          j                                                  dx           |                      t          j        dydz                                          d{           |                      t          j        d|dz          d            |                      t          j        d}d~                                          d           |                      t          j        d}d          ddg           |                      t          j        dd          	                    dd           d           |                      t          j        dd          	                    dd           d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dddg                                          d           |                      t          j        dddg                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           t          j        dddg          }
tS          j*        |
          }tS          j+        |          }
|                      |
                    d                                          d7           |                      t          j        ddt          j                                                  d{           |                      t          j        ddt          j                                                  d           |                      t          j        ddt          j                  d            |                      t          j        ddt          j                                                  d{           |                      t          j        ddt          j                                                  d           |                      t          j        ddt          j                  d            | ,                    t          j        d            | ,                    t          j        d            |                      t          t          j        d                    d           |                      t          t          j        d                    d           |                      t          j        ddt          j-                  ddg           |                      t          j        ddd                                          d           d}d}|                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        ddddg                    d           |                      t          t          j        ddddg                    d           |                      t          t          j        ddddg                    d           |                      t          t          j        ddddg                    d           |                      t          j        ddddg                                          d           |                      t          j        ddddg                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd¦                                          d           |                      t          j        ddæ          d            |                      t          j        dĐdŦ                                          dƦ           |                      t          j        dǐdȦ                                          dɦ           d}d}|                      t          t          j        ||                    d           |                      t          t          j        d̐d                    d           |                      t          t          j        d͐d                    d           |                      t          t          j        dΐd                    d           |                      t          t          j        dϐd                    d           |                      t          t          j        dАdѦ                    d           |                      t          j        dҐdӦ          
                                dԦ           |                      t          j        dՐdt          j                                                  d           |                      t          j        dՐdt          j                  j         d           |                      t          j        dאdt          j                                                  d           |                      t          j        dאdt          j                  j         d           |                      t          j        dؐdt          j                                                  dڦ           |                      t          j        dؐdt          j                  j         dۦ           |                      t          j        dܐdt          j        t          j        z                                            dަ           |                      t          j        dߐd<          d@g           |                      t          j        dd<          d@g           |                      t          j        dd          ddg           |                      t          j        dd          g            |                      t          j        dd          dg           |                      t          j        dd          g d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        d          d           |                      t          j        d de                                          d9           |                      t          j        d d                                          d9           |                      t          j        dd                                          d           |                      t          j        ddԦ                                          d           |                      t          j        ddԦ                                          d           |                      t          j        dd#          
                                d           |                      t          j        dd#          .                                dd i           |                      t          j        dd#          /                                dd.gi           |                      t          j        d	d#          
                                d           |                      t          j        d	d#          .                                dd i           |                      t          j        d	d#          /                                dd.gi           |                      t          j        d
d#          
                                d           |                      t          j        d
d#          .                                dd i           |                      t          j        d
d#          /                                dd.gi           |                      t          t          j        dd                    d           |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                     d           |                      t          t          j        d!d                     d           |                      t          j&        d"d#                              d          g d#           |                      t          j&        d"d#          	                    d          d           |                      t          j&        d$d#                              d          g d#           |                      t          j&        d$d#          	                    d          d%           |                      t          j        d&dd          j'        d           |                      t          j        d&d'd          j'        d           |                      t          j        d(dd          j'        d           |                      t          j        d)dd          j'        d           |                      t          j        d)d'd          j'        d           |                      t          j        d*dd          j'        d           |                      t          j        d*d'd          j'        d           |                      t          j        d+dd          j'        d           |                      t          j        d,dd          j'        d           |                      t          j        d,d'd          j'        d           |                      t          j        d-dd          j'        d           |                      t          j        d-d'd          j'        d           |                      t          j        d.dd          j'        d           |                      t          j        d/dd          j'        d           |                      t          j        d/d'd          j'        d           |                      t          j        d0dd          j'        d           |                      t          j        d0d'd          j'        d           |                      t          j        d1dd          j'        d           |                      t          j        d2dd          j'        d           |                      t          j        d2d'd          j'        d           |                      t          j        d3dd          j'        d           |                      t          j        d4dd          j'        d           |                      t          j        d5dd          j'        d           |                      t          j        d6dd          j'        d           |                      t          j        d7dd          j'        d           |                      t          j        d8dd          j'        d           |                      t          j        d6d.d          j'        d           |                      t          j        d7d.d          j'        d           |                      t          j        d8d.d          j'        d           |                      t          j        d9dd          j'        d           |                      t          j        d:dd          j'        d           |                      t          j        d;dd          j'        d           |                      t          j        d<dd          j'        d           |                      t          j        d=dd          j'        d           |                      t          j        d>dd          j'        d           |                      t          j        d<d.d          j'        d           |                      t          j        d=d.d          j'        d           |                      t          j        d>d.d          j'        d           |                      t          j        d?d@d          j'        d           dA}dB}t          j        ||t          j                  }|                      |j         d           |                      |j0        g dCgg f           |                      t          j        dDdE          j         dF           |                      t          j        dDdG          j         d           |                      t          j        dHdI          dIg           |                      t          t          j        dJd.                    d           |                      t          t          j        dKd.                    d           |                      t          j&        dLdK                                          d7           |                      t          j        dMdN          /                                dOgg dOgdP           |                      t          t          j        dQdR                    d           |                      t          t          j        dSdR                    d           |                      t          j        dTdU          j0        g g g dVf           |                      t          j        dWd%          j         dX           |                      t          j        dWd%          j0        dgg d gf           |                      t          j        dYd%          j         dZ           |                      t          j        dYd%          j0        g g dgf           |                      t          j        d[d%          j         dZ           |                      t          j        d[d%          j0        g g dgf           |                      t          j        d\d]          j         d^           |                      t          j        d_d]          j         d           |                      t          j        d`d]          j         d           |                      t          j        dadb          j         dc           |                      t          j        dddb          j         dc           |                      t          j&        dedf          j         d           |                      t          j&        dgdf          j         d           |                      t          j        dhdi          d            |                      t          t          j        dj                    d           |                      t          t          j        dk                    d           |                      t          j        dldm          g dn           |                      t          j        dodm          g dn           |                      t          j        dpdqt          j1                  j         dr           |                      t          t          j        dsd                    d           |                      t          t          j        dtd                    d           |                      t          j        dudv          	                                dv           |                      t          j        dudw          d            |                      t          j        dxdy          	                                dy           |                      t          j        dxdz          d            |                      t          j        dxdy          j0        g d{gg f           |                      t          j        d|dy          	                                dy           |                      t          j        d}dy          j0        g d{gg f           |                      t          j        d~          2                    d          g d           |                      t          j        d~          2                    d          g d           |                      t          j        d                              d          d            |                      t          j        d                              d          d            t          j        dt          j        t          j3        z            }|                      |                    d          	                                d           |                      |                    d          	                                d           |                      |                    d          	                                d           |                      |                    d          	                                d           d}d}t          j        ||t          j                  }|                      |                                d           |                      |.                                dddddd           t          j        ||t          j-                  }|                      |                                d           |                      |.                                dddddd           d}d}t          j        ||t          j                  }|                      |j         dF           |                      |j0        g g g f           d}t          j        ||t          j                  }|                      |j         dc           |                      |j0        ddgg g f           |                      t          j        ddd          d           |                      t          j%        ddd          d           |                      t          j        dd          4                    d          d          f |                      t          j        dd          5                    d          d           |                      t          j        dd          d            |                      t          j        ddt          j                  d            |                      t          j        dd                                          d:           |                      t          j        dd                                          d:           |                      t          j        dd          d            |                      t          j        dd                                          d9           |                      t          j        dd#          6                                d#gg d#f           |                      t          j        dd#          7                                d7gg df           |                      t          t          j&        dd                    d           |                      t          t          j&        dd                    d           |                      t          j        dde          d            |                      t          j        dde                                          d/           |                      t          j        dd                                          d           |                      t          j        dd                                          d9           |                      t          j        dd                                          d:           |                      t          j        dd                                          d:           |                      t          j        dd                                          d9           d S (  Nz(?>b)rM  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                 6    g | ]}|                                 S rS   r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>.  s2     E E E!'')) E E Er   z\((?:[^()]*+|(?0))*\)za(b(c(de)fg)hz	(c(de)fg)za(bc)dr  r   z([\da-f:]+)$r  rY  z^(?=ab(de))(abd)(e)abde)r  r  rY  z\ r   z^(a|)\1{2}br   r:   )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*)*r\   r:   r:   r   r   r   r<   r;   r;   z	a(?#xxx)*z(?=abc){3}abc	abcabcabcr>   z^(?:a(?:(?:))+)+r7  rc  za(?x: b c )dza#comment
*z(?V1)(a(?(1)\1)){1}
aaaaaaaaaar6  z(?V1)(a(?(1)\1)){2})r>   r9   z(?V1)(a(?(1)\1)){3})ro  r(  z(?V1)(a(?(1)\1)){4})r  )r4  r_   z(?V1)(a)(?<=b(?1))bazz(?fi)\L<keywords>u)   POST, Post, post, poſt, poﬆ, and poﬅrr  r>  )keywords)rs  Postrr  u   poſtrt     poﬅz(?fi)pos|post)ru  Posr>  u   poſrt  r  z(?fi)post|posz(?fi)post|anotherz(?V1)((a)(?1)|(?2))r   r  z(?V1)(\1xx|){6}rY   )rc  r  z(a|)+r  z(a|)*\dPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz^(?:a?b?)*$r
  c                  *    t          j        d          S )Nz\N{1}r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  r  r   r  za
a
r  z(q1|.)*(q2|.)*(x(a|bc)*y){2,}xayxayz(?i)[^a]rg   z(?i)[[:ascii:]]u   Kz((a|b(?1)c){3,5})baaaaca)rV  rV  r\   z(?<=:\S+ )\w+z:9 abc :10 defrC  z(?<=:\S* )\w+z(?<=:\S+? )\w+z(?<=:\S*? )\w+z(?:fe)?malefemalec                 6    g | ]}|                                 S rS   r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s,     7 7 7!'')) 7 7 7r   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                  .    t          j        ddd          S )Nr%   \r   rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    
)Cs
#
# r   z%(CAGCCTCCCATTTCAGAATATACATCC){1<e<=2}ڮtcagacgagtgcgttgtaaaacgacggccagtCAGCCTCCCATTCAGAATATACATCCcgacggccagttaaaaacaatgccaaggaggtcatagctgtttcctgccagttaaaaacaatgccaaggaggtcatagctgtttcctgacgcactcgtctgagcgggctggcaaggtCAGCCTCCCATTCAGAATATACATCCzc..+/cz
cA/c
cAb/czcAb/cz(\w+)r(  u#   अन्‍न ന്‍ किनu)   [अन्‍न] [ന്‍] [किन]z.*a.*ba.*aaababbaz(?<x>a(?<x>b))r  r%   r  z(-)c                 ,    |                      d          S )Nr%   )r,  rT   s    r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    QXXd^^ r   r  axbxcz\bt(est){i<2}z	Some textc                  *    t          j        d          S )Nz.???r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    
-
 
  r   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))?$r5   c                 6    g | ]}|                                 S rS   r  r   r%   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>!       BBB!''))BBBr   yxxxc                 6    g | ]}|                                 S rS   r  r  s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>%       ???!''))???r   c                 6    g | ]}|                                 S rS   r  r  s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>*  r  r   c                 6    g | ]}|                                 S rS   r  r  s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>.  r  r   r   z(?V0).*re   z(?V1).*z(?V0).*?r  z	|||||||||z	|t|e|s|t|z(?V1).*?z^(@)\n(?!.*?@)(.*)z\1\n==========\n\2z@
z@
==========
r7  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)r:   r:   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]r3  z(?V1)[b-e--cd]z(?V1)[[bcde]--cd]z(?V1)[bcde--cd]z ^unknown property at position 4$c                  *    t          j        d          S )Nz\p{}r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>}  s    %-(( r   z(?:()|(?(1)()|z)){2}(?(2)a|z))r\   r   r   z(?:()|(?(1)()|z)){0,2}(?(2)a|z)r   c              3   4   K   | ]}t          |          V  d S r   r  r  s     r   r  z*RegexTests.test_hg_bugs.<locals>.<genexpr>  s(      771A777777r   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  r   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)*abcrn  OXRGOOGOXr+  z.XRGz	.{1,3}XRG)r:   r  zR|RRz(.)(?(1)(?!))rE  z(y)?(\d)(?(1)\b\B)ax1y2z3b))r   r'  )r   2)r   r  z(y)?+(\d)(?(1)\b\B)c                 6    g | ]}|                                 S rS   rA   r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s,       q!&&((   r   z(?i)(?:error){e}zregex failure)r  )r  r_   )r_   ra   )ra   ra   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>	  s2     A A Aq!&&(( A A A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#(?&routine)(?(DEFINE)(?<routine>.))routinez12(*FAIL)|3123r  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]$zJune 30, December 31, 2013 2012
some words follow:
more words and numbers 1,234,567 9,876,542
more words and numbers 1,234,567 9,876,542z(?<!\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                 :    g | ]}|                     d d          S r  r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s0     * * *1!&&A,, * * *r   )r  )r   rc   )r  )6   ;   z(abcdefgh){e}z******abcdefghijklmnopqrtuvwxyz)r4  r  z(abcdefghi){e})r4  r  z(?:(?=\d)\d+\b|\w+)r  ro  z(?(?=\d)\d+\b|\w+)z (?(?<=love\s)you|(?<=hate\s)her)z
I love your  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>21r'  )kwz(?irV1)\L<kw>za|b111a222)r;   r   z(?r)a|bz(?if)<(CLI)><\1>z
<cli><cli>r  z
<cli><clI>z(?ifr)<\1><(CLI)>z\L<options>r  r  rm  z(x{6}){e<=1}xxxxxxxxxxxr  z(?r)(x{6}){e<=1}c                  *    t          j        d          S )Ns   00000\0\00\^(\00\U05000000r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    
-<
=
= r   c                  *    t          j        d          S )Ns   {e<lr  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    u}W/E/E 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ccr  z(?ir)\1dog..(?<=(\L<aa>))$z(2)(?:\1{5}){e<=1}3222212)r:   rc   z(\d)(?:\1{5}){e<=1}z&\A(?P<whole>(?>\((?&whole)\)|[+\-]))\Zz((-))z((-)+)zx.*? (.).*\1(.*)\1z	x  |y| z|r'  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   r`   )r   rk  r   za?yzxxxxyz)r   r4  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|)r6   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}rd  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)++r4   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;  dogfootrU  u   👨‍👩‍👧‍👦z(?=a)az(?!b)az
((\d)*?)*?zX(?(DEFINE)(?<mydef>(?<wrong>THIS_SHOULD_NOT_MATCHx?)|(?<right>right))).*(?<=(?&mydef).*)zx rightr  )mydefwrongr  z(?:cat){e<=1:[u]}cutz(?:cat){e<=1:u}z?(?be)(AGTGTTCCCCGCGCCAGCGGGGATAAACCG){s<=5,i<=5,d<=5,s+i+d<=10}TTCCCCGCGCCAGCGGGGATAAACCG)r   r:   r;   r  z	(?:bc){e})r:   r   r:   z(?e)(?:bc){e}r9  z(?b)(?:bc){e}z,(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){e}z$ 10,112.111.12)r4  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 worldz(?#)z(?x)(?#)z(\d+){i<=2:[ab]}123X4Y5)r  r  5z(?i)(\d+){i<=2:[ab]}z^(test){e<=5}$terstin)r   r;   r   z(?:(x*)\1\1\1)*x$z(?:(x*)\1{3})*x$zt(?:es){s<=1:\d}tte5tteztzt(?:es){i<=1:\d}ttes5ttesztr;   zt(es){i<=1,0<e<=1}tzt(?:es){i<=1,0<e<=1:\d}tz(\d+ week|\d+ days)7 days)r   r  r   10 days)r   r  r   z[ ]* Name[ ]*\* z  Name *za|\.*pb\.pyz.geojsa?  (?<=(?:\A|\W|_))(\d+ decades? ago|\d+ minutes ago|\d+ seconds ago|in \d+ decades?|\d+ months ago|in \d+ minutes|\d+ minute ago|in \d+ seconds|\d+ second ago|\d+ years ago|in \d+ months|\d+ month ago|\d+ weeks ago|\d+ hours ago|in \d+ minute|in \d+ second|in \d+ years|\d+ year ago|in \d+ month|in \d+ weeks|\d+ week ago|\d+ days ago|in \d+ hours|\d+ hour ago|in \d+ year|in \d+ week|in \d+ days|\d+ day ago|in \d+ hour|\d+ min ago|\d+ sec ago|\d+ yr ago|\d+ mo ago|\d+ wk ago|in \d+ day|\d+ hr ago|in \d+ min|in \d+ sec|in \d+ yr|in \d+ mo|in \d+ wk|in \d+ hr)(?=(?:\Z|\W|_))z1 month agoz9 hours 1 minute agoz1 minute agoz10 months 1 hour agoz
1 hour agoz1 month 10 hours agoz10 hours ago2TTCAGACGTGTGCTCTTCCGATCTCAATACCGACTCCTCACTGTGTGTCTzw(?P<insert>.*)(?P<anchor>CTTCC){e<=1}(?P<umi>([ACGT]){4,6})(?P<sid>CAATACCGACTCCTCACTGTGT){e<=2}(?P<end>([ACGT]){0,6}$))r   2   TTCAGACGTGTGCTCTTCCGATCTCAATACCGACTCCTCACTGTGTGTCT)insertanchorumisidr  zt(?P<insert>.*)(?P<anchor>AACACTGG){e<=1}(?P<umi>([AT][CG]){5}){e<=2}(?P<sid>GTAACCGAAG){e<=2}(?P<end>([ACGT]){0,6}$)&GGAAAACACTGGTCTCAGTCTCGTAACCGAAGTGGTCG&GGAAAACACTGGTCTCAGTCTCGTCCCCGAAGTGGTCGr1     z(test1)|(test2)zmatched: \1\2test1zmatched: test1zmatched: {1}{2}z(?:\bha\b){i:[ ]}havingz	(?a:\w)\wu   dжz(?a:\w)(?u:\w)z	^\p{LC}+$u   😺z	^\p{So}+$r  )r7  r  r5  z\p{HorizSpace}+u4   	   ᠎             　z\p{VertSpace}+u   
  z(?(?<=A)|(?(?![^B])C|D))z^a?(a?)b?c\1$abcarq  z(?(?=a).|..)z(?(?=b).|..)z(?(?!a).|..)z(?(?!b).|..))8r)   r/  r-   r.   V1r/   r  r@   rv   r   r<  rB   rd   rA   r}   r   UNDEF_CHAR_NAMEr  r  	BESTMATCHrH  rj   WORDspansr  r  FULLCASErI  r  r   r   rT  rB  DEBUGrN  r  r  r]  rA  ro  r#  pickledumpsloadsr  ENHANCEMATCHr)  r  rC  r  r   V0r,  r_  allcapturesallspans)r   fzseqrxr  rawrm  r  
TEST_REGEX	TEST_DATArV  r  upper_ilower_ir\   py_regex_patternrx   rU   sequences                      r   test_hg_bugszRegexTests.test_hg_bugs  sc    	emG58DDDEEtLLL 	em,C     	" 	" 	" 	'B
 )51	3 	3 	3'B
 )51	3 	3 	3'B
 (\	+ 	+ 	+'B
 &K	) 	) 	)'F
 &K	) 	) 	) E E
.1?
C
CE E E-	 	 	 	h
(9  E!HHf	& 	& 	&
 	osEG
(=  E!HHc	# 	# 	#osEG
(=  E!HHc	# 	# 	#
 	&;VDDKKMM
	 	 	
 	ek%EGDDDEEtLLL 	nc::@@AFF I 	 	 	
 	k599??1EE H 	 	 	 	j%88>>qAA5III 	&=
 uQ{{$9	; 	; 	;&={KK
	 	 	
 	&=
 588V	% 	% 	%
 	gs3388;;VDDDgt4499!<<fEEEgu55::1==vFFF 	k599??AA5III 	o{CCHHJJ M 	 	 	
 	&8#>>CCEEvNNN&8$??DDFFOOO 	nf==CCAFFOOO 	ne  q5	* 	* 	*
 	&<
 Q

$4	6 	6 	6&<
 Q

$4	6 	6 	6&<
 Q

$4	6 	6 	6&<
 Q

$6	8 	8 	8
 	&:EBBHHKK
	 	 	
 	';
?5># # #%" %" %"	# 	# 	# 	'7
?A AC< C< C<	= 	= 	= 	'7
?A AC? C? C?	@ 	@ 	@ 	';
?A AC? C? C?	@ 	@ 	@ 	&;SAAGG1
 	  	  	 
 	&8$??DDQJJ
	 	 	 	gs3399!Q??KKK 	j(;;TBBB 	mT::DAAA 	u{D,@ C" C" 	# 	# 	# 	eX66;;A>>GGG 	&E
 E!HHh	( 	( 	(
 	j#66=== 	&79JKK
	 	 	
 	&99EEKKA
Q &	( 	( 	( 	'79IJJ%.	 	 	'79IJJ%.	 	 	'8:JKK%.	 	 	'8:JKK%.	 	 	 	nh??EEGG
	 	 	 7 7
.=
46 67 7 79J
9	 	 	 	&I
! !!)% 3 3 3	 	 	
 	u{DO >$ >$ 	' 	' 	' 5 b#u??B
'	) 	) 	) 	y-@@7)LLL 	uy7
P
*      \
]
]	_ 	_ 	_ 	^X>>EEE 	%6==CCCHH LK 	 	 	
 	6+C+CWMM
	 	 	
 ]+58<<<;//666K00"555 	u{D,@ C! C! 	" 	" 	" 	gEBBBKPPPgDAAA9MMMg..	:::hUCCC\RRRhTBBB
	 	 	h//<<< 	&<
 &((J	( 	( 	(&<
 &((J	( 	( 	(&=
 &((J	( 	( 	( mF%.5=*HIIIBBS\\&-A-ABBBUGLLLV,,ug666??S\\#->->???%IIIS))E7333mF%.5;K*K
-+   BBS\\&-A-ABBBUGLLLV,,ug666??S\\#->->???%IIIS))E7333 y((UYy#v>>EEEEUYy#v>>DDD9c6::DAAAy((UYz3??MMMMUYz3??MMM:sF;;[III 	#8
el< < <=N	P 	P 	P 	%:	 i	) 	) 	)%>
 y	* 	* 	*%>
 y	* 	* 	* 	%5u==J
	 	 	%9
 y	* 	* 	*%9
 y	* 	* 	* 	%6@@M
	 	 	%:
 	, 	, 	,%:
 	, 	, 	, 	%6
  )	- 	- 	-%:
  )	- 	- 	-%:
  )	- 	- 	- 	%6@@M
	 	 	%:
 	, 	, 	,%:
 	, 	, 	, 	'?
/1 124	6 	6 	6
 	4377=== 	ek$U[AABBDIII 	':HEE
H 	 	 	'8(CCc
F 	 	 	';XFF
I 	 	 	'98DDs
G 	 	 	 	u{,N
(
(	* 	* 	* 	%D
 uQ1~~}	. 	. 	.%F
 uQ1~~}	. 	. 	. 77g77777rwwu}5H
( (      "''%-0Q
# #    	 	 	 	rwwu}5H
( (      "''%-0A
# #    	 	 	 	rwwu}5H
( (      "''%-0J
# #    	 	 	 	rwwu}5H
( (      "''%-0R
# #    	 	 	 	rwwu}5H
( (      "''%-0F"N"NOOPP	R 	R 	Rrwwu}5H
( (      "''%-u"E"EFFGG	I 	I 	Irwwu}5H
( (      "''%-0s
# #    	 	 	 	rwwu}5H
( (      "''%-0A
# #    	 	 	 	rwwu}5H
( (      "''%-0\^c"d"deeff	h 	h 	hrwwu}5H
( (      
&_
     	 	 	 	rwwu}5H
( (      "''%-0F
# #    	 	 	 	rwwu}5H
( (      "''%-0A
# #    	 	 	 	rwwu}5G
( (      "''%-  1D
# #    	 	 	 	rwwu}5I
( (      "''%-0C
# #    	 	 	
 eEll##sxx6N
) )      #((5=1W
$ $    	 	 	 	sxx6N
) )      #((5=1G#O#OPPQQ	S 	S 	Ssxx6N
) )      #((5=1I5#Q#QRRSS	U 	U 	Usxx6N
) )      #((5=1X
$ $    	 	 	 	sxx6N
) )      #((5=1L
$ $    	 	 	 	sxx6N
) )      #((5=1CU#K#KLLMM	O 	O 	Osxx6N
) )      #((5=1y  |A  $B  $B  C  C  D  D	E 	E 	Esxx6N
) )      #((5=1G#O#OPPQQ	S 	S 	Ssxx6N
) )      #((5=1_af#g#ghhii	k 	k 	ksxx6N
) )      #((5=1l
$ $    	 	 	 	sxx6N
) )      #((5=1Le#T#TUUVV	X 	X 	Xsxx6N
) )      #((5=1G#O#OPPQQ	S 	S 	Ssxx6M
) )      #((5=  2J  LQ  $R  $R  S  S  T  T	U 	U 	Usxx6O
) )      #((5=1I5#Q#QRRSS	U 	U 	U 	u|FJ??EEGGHH
//	 	 	
 	&7??FFHH K 	 	 	
 	67D998DDD:w==xHHHFGT::HEEEJ>>III 	D  	( 	( 	(D  	' 	' 	'
 	fgtDDDIIKK
	 	 	fgtDDDIIKK
	 	 	k7  	( 	( 	( 	UC005577@@@ 	%5t<<dCCC 	'<jII
+
+
+	- 	- 	-'=zJJ
+
+
+	- 	- 	- 	  EN;N
- -   BBB	D 	D 	D A A
.-
?
?A A AC# C# C#	$ 	$ 	$ 	&H
 	  	  	 &H
  	" 	" 	" 	&=tDDQGNNN&H
  "#6	8 	8 	8 	k6::@@AFF I 	 	 	}jAAD
D 	 	 	
CCf
F 	 	 	 	ov>>DDQJJ
	 	 	'8*EE
H 	 	 	':JGG6
	 	 	 	&_
 *	, 	, 	, 	&LcRRXXYbcceijjj&LcRR[[\effilhmnnn 	ne<<Q?EEE&8%@@CSIII&6>>EEE&:EBB1EuMMM&<hGGJ
	 	 	&<hGGJ
	 	 	&=xHHK
	 	 	&=xHHK
	 	 	&D
  	" 	" 	"&D
 	 	 	&D
 	 	 	&E
 	 	 	 	&:EBBDIII&?GGJ
	 	 	&@
  	" 	" 	"&@
 	 	 	&H
  	" 	" 	"&H
 	 	 	&H
 	 	 	&I
 	 	 	 	&;XFFqI
	 	 	&;XFFqI
	 	 	&<hGGJ
	 	 	&<hGGJ
	 	 	&C
  	" 	" 	"&C
 	 	 	&C
 	 	 	&D
 	 	 	 	&?JJ1M
	 	 	&?JJ1M
	 	 	&G
  	" 	" 	"&G
 	 	 	&G
 	 	 	&H
 	 	 	. 	U]+H$OOPPRSTTT 	Xt4499;;VDDD 	  &W
 $	& 	& 	& ] $  
	 	 * *


i
(
(* * *,> A ,	 	 	
 	o
+U_> >>Bdffg	O 	O 	O&6
+U_> >>Bdffg	O 	O 	O 	%;XFFKKMM
	 	 	%:HEEtLLL&I
 	) 	) 	)'J
24 46;U^	E 	E 	E 	nh??EEaKK
	 	 	mX>>DDQJJ
	 	 	>5(CCUKKK=%BBEJJJ 	%5tFFFKKMM
	 	 	%5tFFFKKMM
	 	 	 	eY77<<>>GGGi;;@@BBFKKK 	&9
 	) 	) 	)&9
 	) 	) 	)&:
 	) 	) 	) M.5%.AAALOOLOO,,..777 	^X! ! !!%	1 	1 	1^W! ! !!%	1 	1 	1^S! ! !"&	( 	( 	(%7! ! !!%	1 	1 	1%7! ! !!%	1 	1 	1%7! ! !"&	( 	( 	( 	%+ (> (> 	? 	? 	? 	%+'E'EFFF 	emK88994@@@ 	emN;;<<dCCC 	'Z
79KM M3 6 	 	 	 	&=
0$@ @ @@D I	 	 	
 85ek(W*<
   	 	 	ek(W*<
   	 	 	 	ek(W*<
   	 	 	ek(W*<
   	 	 	 	ek)g*=
   	 	 	ek)g*=
   	 	 	 	el=$E
D     	 	 	el>4U
E     	 	 	el>4U
E     	 	 	el?De
F     	 	 	 	&BIT]  !TVVV	- 	- 	-&C
' ' '(,	8 	8 	8 	&;
 TVVV	% 	% 	%&<
 TVVV	% 	% 	%
 	%R
 4666	# 	# 	#%R
 	 	 	
 	%:
 tvvv	' 	' 	'%F
02 226$&&'	C 	C 	C  yel+;Q??@@%HHH 	ek-??@@$GGGek-??@@%HHHek/5AABBDIIIek/5AABBEJJJ 	ek*]
   	 	 	 	%?
 FHHh	( 	( 	( 	ow
/ 4666	+ 	+ 	+ow
/ '	4 	4 	4 	&7
/ 4666	+ 	+ 	+&7
/ '	4 	4 	4 	&6
/ 4667	, 	, 	,&6
/ '	4 	4 	4
 	gxu~

@    DFFF	, 	, 	, 	'9:FF(	 	 	'\
 x	! 	! 	! 	'D
46 69'8)	* 	* 	* 	'B
46 679	; 	; 	;'B
46 68L7M	O 	O 	O'B
46 68= 8= 8=	> 	> 	> 	&@
 #eggz	3 	3 	3&@
 #eggz	3 	3 	3 	&A
  577J	0 	0 	0&A
  577J	0 	0 	0 	&D
 #eggz	3 	3 	3&D
 #eggz	3 	3 	3 	&E
  577J	0 	0 	0&E
  577J	0 	0 	0
 	&<
 UWWi	) 	) 	)&=
 UWWi	) 	) 	)&=
 UWWi	) 	) 	)&>
 UWWi	) 	) 	) 	gERWXXXZghhhgERVWWWYdeeegDQVWWWYdeeegDQUVVVXabbbg..<<< 	nc::??AA6JJJnc::??AA6JJJmS99>>@@&IIImR88==??HHHk266;;==vFFF 	&F
 8	% 	% 	%&F
 vtn	. 	. 	.&F
 &3%	2 	2 	2 	&J
 8	% 	% 	%&J
 vtn	. 	. 	.&J
 &3%	2 	2 	2 	&L
 8	% 	% 	%&L
 vtn	. 	. 	.&L
 &3%	2 	2 	2 	ek*>GGHH$OOO 	&8)  	( 	( 	(&<i  	( 	( 	( 	ek*@
   	 	 	ek*C
   	 	 	ek*N
   	 	 	ek*K
   	 	 	ek*K
   	 	 	ek*K
   	 	 	
 	ek*>DDEEtLLLek*=sCCDDeLLLek*?EEFFMMMek*KSQQRR
	 	 	ek*?JJKKTRRRek*A8LLMM
	 	 	ek*CXNNOO
	 	 	ek*>IIJJERRR 	)95AAJJ3OO
//	 	 	)95AAGGLL
	 	 	 	)C
 #	1 	1 	1)C
 sS	" 	" 	" 	YdCCCK
	 	 	YEEEM
	 	 	ZTBBBJ
	 	 	ZtDDDL
	 	 	ZFFFN
	 	 	YdCCCK
	 	 	YEEEM
	 	 	ZtDDDL
	 	 	ZtDDDL
	 	 	ZFFFN
	 	 	 	]D$GGGO
	 	 	]FDIIIQ
	 	 	^RFFFN
	 	 	^T4HHHP
	 	 	^VTJJJR
	 	 	]D$GGGO
	 	 	]FDIIIQ
	 	 	^T4HHHP
	 	 	^T4HHHP
	 	 	^VTJJJR
	 	 	 	T2t<<<DeLLLUB===EuMMMUB===EuMMMT2t<<<DdKKKUB===EtLLLUB===EtLLLT3===EuMMMUC>>>FNNNUC>>>FNNNXr4@@@H%PPPYDAAAI5QQQYDAAAI5QQQXr4@@@H$OOOYDAAAI4PPPYDAAAI4PPPXsDAAAI5QQQYTBBBJERRRYTBBBJERRR%5z4PPPX
	 	 	G, L$eo>>>3332vr*:;;; 	&R
 !9	. 	. 	.&R
 !9	. 	. 	. 	u
FH HG
H	J 	J 	J
 	el9c::;;TBBBel9c::;;TBBB 	>>CCEEvNNN 	  'F
 !\^^y2)& &	 	 	
 	ek*>FFGGNNNek*<eDDEEtLLL 	&h
&( ((5B7M	O 	O 	O 	\377D G 	 	 	\377E
qcH 	 	 	%5s;;H K 	 	 	%5s;;IrA3-	 	 	%5s;;H K 	 	 	%5s;;IrA3-	 	 	 	%X
 )9	6 	6 	6%[
 )9	6 	6 	6%e
 )9	6 	6 	6%[
 )9	6 	6 	6%[
 )9	6 	6 	6 	)J
 		+ 	+ 	+)K
 		+ 	+ 	+ 	&L
9; ;<@	B 	B 	B 	emF3344d;;;emJ7788$??? 	':IFF


	 	 	'>	JJ


	 	 	 	%6	  %y	2 	2 	2 	ek*>HHII4PPPek*=wGGHH$OOO 	%96BBHHJJ
	 	 	%96BBDIII%97CCIIKK
	 	 	%97CCTJJJ%9
  2sB-	1 	1 	1%;WEEKKMM
	 	 	%@
  2sB-	1 	1 	1 	'=>>DDXNNPbPbPbccc'=>>DDYOOQdQdQdeee':;;BB:NNPTUUU77>>xHH$OOOM  J
  R
W
  R
Y
  \
a
  \
d
  R
d
  e
  e
  e
-006688-HHH"899??AA>RRR"899??AA<PPP"899??AA>RRR H MKAAA7+++3Cw_f  pH  QW  )X  )X  	Y  	Y  	YK1CDDD7+++3Cw_f  pH  QW  )X  )X  	Y  	Y  	Y J;KAAA3332r2,777;KAAA333B8R*<=== 	#57GQQScddd$68JGTTVfggg&8:JKKRRScddfvwwxx&8:JKKSSTfggiyzzz 	&:HEEtLLL&:HEGTTTVZ[[[ 	\3STTYY[[]cddd%68XYY^^``bhiii 	\3YZZ\`aaa\3YZZ__aacijjj 	We44@@BBeWoooD^___We44==??6(LdLdLdAefff 	eo.@  Cl  m  m  n  n  pt  	u  	u  	ueo.?A[\\]]_cddd 	%@#FFMMM&A3GGLLNNPVWWW 	&6??DDFFOOO 	_d;;@@BBFKKK_d;;@@BBFKKK_d;;@@BBFKKK_d;;@@BBFKKKKKr   c                    |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        d	d                    d           |                      t          t          j        d
d                    d           |                      t          t          j        d	d                    d           |                      t          t          j        d
d                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                     d           |                      t          t          j        d!d"                    d           |                      t          t          j        d!d#                    d           |                      t          t          j        dd$                    d           |                      t          t          j        dd%                    d           |                      t          t          j        d&d'                    d           |                      t          t          j        d&d(                    d           d S ))Nz(?r)(?:a){e<=1:[a-z]}rY  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  rA  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ßrc  rC   s    r   test_fuzzy_extzRegexTests.test_fuzzy_ext  s   eo.FLLMM
	 	 	eo.BCHHII
	 	 	eo.BCHHII
	 	 	eo.FLLMM
	 	 	 	eo.BDIIJJ
	 	 	eo.F
   	 	 	eo.BDIIJJ
	 	 	eo.F
   	 	 	 	eo.CTJJKK	 	 	eo.G   	 	 	eo.CTJJKK	 	 	eo.G   	 	 	 	eo.BDIIJJ	 	 	eo.F   	 	 	eo.BDIIJJ	 	 	eo.F   	 	 	 	eo.e
   	 	 	eo.e
   	 	 	eo.f
   	 	 	eo.f
   	 	 	eo.e
   	 	 	eo.e
   	 	 	eo.f
   	 	 	eo.f
   	 	 	 	eo.e   	 	 	eo.e   	 	 	eo.f   	 	 	eo.f   	 	 	eo.e   	 	 	eo.e   	 	 	eo.f   	 	 	eo.f   	 	 	 	eo.I-/ / 0 015	7 	7 	7eo.I-/ / 0 015	7 	7 	7eo.J-/ / 0 015	7 	7 	7eo.J-/ / 0 015	7 	7 	7eo.I-/ / 0 016	8 	8 	8eo.I-/ / 0 016	8 	8 	8eo.J-/ / 0 016	8 	8 	8eo.J-/ / 0 016	8 	8 	8 	8 	8r   c                 j   |                      t          j        dd                              d          d           |                      t          j        dd                              d          d           |                      t          j        dd                              d          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        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-   rB   r_  r]  rC   s    r   test_subscripted_capturesz$RegexTests.test_subscripted_capturesP  sZ   \
 -..	? 	? 	?\
 KLL
	 	 	 	\
 KLL
	 	 	 	L2G
 	! 	! 	!L
<eE E
	 	 	 	L
<eE E
	 	 	 	 	r   c                    t           j        dk    r|                     t          j        dd          g d           |                     t          j        ddd          d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d	           |                     d
 t          j        dd          D             g d           d S d S )Nr   z\b|:+za::bc)r   r\   r   r   r  r   r   z-a---bc-)r   r   r   r   r   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z2RegexTests.test_more_zerowidth.<locals>.<listcomp>j  s,       1affhh   r   )r6   r  r9   r  r  r  c                 6    g | ]}|                                 S rS   r  r   s     r   r   z2RegexTests.test_more_zerowidth.<locals>.<listcomp>l  s,       1affhh   r   z
(?m)^\s*?$z	foo


bar)r  )r   r  r.  )r   r   r)   r-   r   rj   r/   r  rC   s    r   test_more_zerowidthzRegexTests.test_more_zerowidthc  sP   y((U[7;; > > >   UYxg>>
KKKU]8W== @ @ @     x1 1   AAAC C C  }1 1    8 8 8: : : : : )(r   r   )r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r5  r6  r7  r8  r9  r:  r  r  r  r  r  r  DUPLICATE_GROUPr  r
  r*   r2   rD   rJ   rl   ro   rr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r*  r-  r0  rC  rK  rO  rU  r[  r`  ru  rw  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  r  r;  rB  rJ  rN  ro  rt  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r  r  r  r  r  r  r   rD  rP  rY  r`  rd  rl  r{  r!  r)  r+  r0  rS   r   r   r   r      s>       .MU1J2N-J%O#M1J'*GKK>CGMK"N-N*N+'O0J'O=M0O
  
  
  
   
9 
9 
9" " "B B B>  
	 	 	
3 
3 
3  
7 7 7rC C C  ? ? ?) ) )2 2 2.H H H1 1 1f  E E E2  N N N6. . .." " " O O O' ' '
#B #B #BJ/ / /<' ' 'B1 1 1  
J J JF F F4VN VN VNp< < <E E E> > >8 8 8
8 
8 
8
 
 
" " "
$ $ $ 
& 
& 
&I I I
A A A# # #  6 6 6K K KD D D     $  1 1 1G G G    
1 1 1; ; ;D D D= = =8
9 
9 
9 %  %  %D% % %6	` 	` 	`     v2 v2 v2pB B BM M M`E `E `ED? ? ?J J J48- 8- 8-t) ) )"L L L. . .`L L L*  "J J J0  

/ 
/ 
/1 1 10(I (I (IT4= 4= 4=lKL KL KLZf7 f7 f7PL L LP P PH H H(, , ,(' ' '44 4 4l  BEJ EJ EJN)) )) ))VF F F  ,J J JX3O 3O 3Oj]L ]L ]L~&V8 V8 V8p  &
: 
: 
: 
: 
:r   r   c                  0    t          j        d           d S )Nr   )	verbosity)unittestmainrS   r   r   	test_mainr6  o  s    MAr   __main__)weakrefr   rS  r  r-   r@  r   r4  rG   r   r  r   TestCaser   r6  r   rS   r   r   <module>r:     s             



 7 7 7 7 7# 7 7 79 9 9 9 9E 9 9 9[E: [E: [E: [E: [E:" [E: [E: [E:zJ   zIKKKKK r   