
    gXc                        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        yy)    )proxyNc                        e Zd Z fdZ xZS )StrSubclassc                 4    t        t        | 	  |            S N)r   super__getitem__selfindex	__class__s     E/var/www/openai/venv/lib/python3.12/site-packages/regex/test_regex.pyr	   zStrSubclass.__getitem__   s    57.u566    __name__
__module____qualname__r	   __classcell__r   s   @r   r   r   
   s    7 7r   r   c                        e Zd Z fdZ xZS )BytesSubclassc                 4    t        t        | 	  |            S r   )r   r   r	   r
   s     r   r	   zBytesSubclass.__getitem__   s    UW0788r   r   r   s   @r   r   r      s    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 Zy)
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                 P      j                  ||        fd ||       y )Nc                     t        |t        t        f      rt        | |      D ]  \  }} ||        y j	                  t        |       t        |             y r   )
isinstancetuplelistzipassertIstype)actualexpectxymsgrecurser   s       r   r(   z,RegexTests.assertTypedEqual.<locals>.recurse2   sI    &5$-0/DAqAqM 0 d6lDL#>r   )assertEqual)r   r#   r$   r'   r(   s   `  `@r   assertTypedEqualzRegexTests.assertTypedEqual/   s&    -	? 	r   c                     d}t        j                  d      }t        |      }|j                  d      |j                  d      k7  r| j	                          y y )NQabbbcRzab+c)regexcompiler   findallfail)r   sr%   r&   s       r   test_weakrefzRegexTests.test_weakref;   sF    MM&!!H99Y199Y#77IIK 8r   c                    | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                         d       | j                  t        j                  d	d
      d        | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      d        y )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77:FCdE27796BdE277:FCdE27796Bc5148T5166q96BT51668&AT6277:FCT627796BT5148r   c                 :    t        |d         }t        |dz         S )Nr   r:   )intstr)r   matchobj	int_values      r   bump_numzRegexTests.bump_numN   s    $	9q=!!r   c                 6   | j                  t        j                  ddd      d       | j                  t        j                  d| j                  d      d       | j                  t        j                  d| j                  dd      d	       | j                  t        j                  d
d d      d       | j                  t        j                  d
dd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      t	        d      t	        d      z   t	        d      z   t	        d      z   t	        d      z   t	        d      z          | j                  t        j                  d d!d"      d#       | j                  t        j                  dd$d      d       | j                  t        j                  dd%d      d       | j                  t        j                  dd&d      d       | j                  t        j                  dd'd      d(       | j                  t        j                  d)d*d)      d+       y ),N(?i)b+r%   	bbbb BBBBx x\d+z08.2 -2 23x99yz9.3 -3 24x100yr;   z9.3 -3 23x99y.c                      y)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   sp   8S+>F64==:JK
	64==:JAN
	 	3=uE3s3T::}dCVL:}dCVL<1BDI
	<EvN3(93?AQR3<nM3<c!fs2w>NG?"g? #B?(*-a&?1 	2 	7C8'B4#6=4C8$?4<dC4)F
	 	5(D95Ar   c                 R    | j                  t        j                  ddd      d       y )Nr[   z\g<1>\g<1>\brY   zxxxxr)   r-   rj   rC   s    r   test_bug_449964zRegexTests.test_bug_449964q   s"    =/4H
	r   c                 <   | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       y )Nz\r\nrR   z
abc
def
zabc
def

rW   rn   rC   s    r   test_bug_449000zRegexTests.test_bug_449000v   s    7E3CD
	652BC
	7D2BC
	641AB
	r   c                 P   t        j                  d      | j                  t        | j                  fd       | j                  t        | j                  fd       | j                  t        | j                  fd       | j                  t        | j                  fd       y )NrP   c                  N    t        j                   dt         j                        S Nrg   )r-   rB   Ipatterns   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %++gsEGG4r   c                  N    t        j                   dt         j                        S ru   )r-   r@   rv   rw   s   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %,,wUWW5r   c                  N    t        j                   dt         j                        S ru   )r-   r/   rv   rw   s   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %--egg6r   c                  L    t        j                   t         j                        S r   )r-   r.   rv   rw   s   r   rV   z*RegexTests.test_bug_1661.<locals>.<lambda>   s    %--1r   )r-   r.   assertRaisesRegex
ValueErrorFLAGS_WITH_COMPILED_PATr   rx   s    @r   test_bug_1661zRegexTests.test_bug_1661   s}    --$z4+G+G
4	6z4+G+G
5	7z4+G+G
6	8z4+G+G
1	3r   c           	          | j                  t        t        t        j                  d                  | j
                         y )Nz(?P<quote>)(?(quote)))r)   reprr"   r-   r.   PATTERN_CLASSrC   s    r   test_bug_3629zRegexTests.test_bug_3629   s/    d5==1H#IJK


	r   c                 
   | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  dd	d      d
       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d
       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d        | j                  t        j                  | j
                  d!        | j                  t        j                  | j
                  d"        | j                  t        j                  | j
                  d#        | j                  t        j                  | j
                  d$        | j                  t        j                  | j
                  d%        | j                  t        j                  | j
                  d&        | j                  t        j                  | j
                  d'        | j                  t        j                  | j
                  d(        | j                  t        j                  | j
                  d)        | j                  t        j                  | j
                  d*        | j                  t        j                  | j
                  d+        | j                  t        j                  | j
                  d,        | j                  t        j                  d-d.d      d       | j                  t        j                  d/d0d1      d2       | j                  t        j                  d/d3d1      d4       y )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                  0    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                  0    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                  0    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                  0    t        j                  ddd      S )Nr%   \11r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>       
))C
%r   c                  0    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                  0    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                  0    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                  0    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                  0    t        j                  ddd      S )Nr%   \118r   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>       
))C#
&r   c                  0    t        j                  ddd      S )Nr%   \11ar   rS   r   r   rV   z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>   r   r   c                  0    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                  0    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   s	   3s3T:35v>35v>35zB35zB35v>35v>3#6@3#6E34f=34f=34jA34jA34jA35x@35x@448'B448'Bu{{D,B,B E% 	&u{{D,B,B E% 	&u{{D,B,B E% 	&u{{D,B,B E& 	'u{{D,B,B E& 	'u{{D,B,B E& 	'u{{D,B,B E& 	'u{{D,B,B E& 	'u{{D,B,B E' 	(u{{D,B,B E' 	(u{{D,B,B E' 	(u{{D,B,B E' 	( 	#<fcJ
	#=wN
	#=wN
	r   c                     | j                  t        j                  ddd      d       | j                  t        j                  dddd      d       y )Nr\   baaaaabbbbbr:   baaaarn   rC   s    r   test_qualified_re_subz RegexTests.test_qualified_re_sub   s>    3W5w?3Wa8'Br   c                 R    | j                  t        j                  ddd      d       y )Nz(\S)\s+(\S)z\1 \2zhello  therezhello therern   rC   s    r   test_bug_114660zRegexTests.test_bug_114660   s"    >8^L
	r   c                 d   t         j                  dk\  r(| j                  t        j                  ddd      d       n'| j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d	       y )
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(UYYy#v>
KUYYy#v>	J9c6:JG4f5v>r   c                 ~    d}| j                  t        j                  d|z   dz   d      j                  |      d       y )N   ÿz(?P<z>a)abcr\   )r)   r-   r@   group)r   
group_names     r   test_bug_14462zRegexTests.test_bug_14462   s;    
g
&:U&B
z"C	)r   c                    | j                  t        j                  | j                  d        | j                  t        j                  | j                  d        | j                  t        j                  | j
                  d        | j                  t        j                  | j                  d        | j                  t        j                  | j                  d        | j                  t        | j                  d        | j                  t        j                  ddd	      d
       | j                  t        j                  ddd	      d
       | j                  t        j                  | j                  d        y )Nc                  0    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                  0    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                  0    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                  0    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
1r   c                  0    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                  0    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
0r   z(?P<a>x)|(?P<b>y)z\g<b>rY    z\2c                  0    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{{DOO >/ 	0u{{D,C,C F. 	/u{{DOO >- 	.u{{D,?,? B2 	3u{{D,?,? B2 	3z4+?+? B1 	2
 	#6$GL#6tDbI 	u{{D,?,? B1 	2r   c                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  d	dd      d
       | j                  t        j                  d	ddd      d       y )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D#{;]KD#u5zBD#u5~FD#ua8,Gr   c                    | j                  t        j                  dd      g d       t        j                  dk\  r| j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  d	d      g d       | j                  t        j                  d
d      g d       n| j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  d	d      g d       | j                  t        j                  d
d      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j
                  dd      D cg c]  }| c}g d       | j                  t        j                  dd      g d       | j                  t        j
                  dd      D cg c]  }| c}g d       | j                  t        j                  dd      g d       | j                  t        j
                  dd      D cg c]  }| c}g d       | j                  t        j                  dd      g d       | j                  t        j
                  dd      D cg c]  }| c}g d       | j                  t        j                  dd      g d       | j                  t        j                  d d      g d!       | j                  t        j                  d"d      g d#       y c c}w c c}w c c}w c c}w )$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%   xaxbxcz(?r)x)r   r   r\   r   z(x)|(y))
r   r%   Nr\   r%   Nr   r%   Nr   z(?r)(x)|(y))
r   r%   Nr   r%   Nr\   r%   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   	splititerr   rU   s     r   test_re_splitzRegexTests.test_re_split   sP   S)46MNy(U[[y9 <  !U[[; >@ AU[[9= @$ %U[[; >K L U[[y9;NOU[[; ># $U[[9= @ U[[; >" #Y	: = 	Z; >> 	?^Y? B 	 	S(35HIU__S(%CD%C!%CD G 	 	Wh79LMU__Wh%GH%G!%GH K 	 	Y9 <* 	+U__Y%IJ%I!%IJ
>	@ 	]H= @. 	/U__]H%MN%M!%MN
>	@ 	Z9 < 	Z9 < 	Z9 < 	+ E I
 K
 Os    	O&	O+<	O0	O5c                    | j                  t        j                  ddd      g d       | j                  t        j                  ddd      g d       | j                  t        j                  ddd      g d       t        j                  d	k\  r*| j                  t        j                  d
dd      g d       y | j                  t        j                  d
dd      g d       y )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79JKS)Q79JKUIq9 < 	 y(U[[A> A  U[[A> A r   c                    | j                  t        j                  dd      g        | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd	      d
g       | j                  t        j                  dd	      d
g       | j                  t        j                  dd      dg       | j                  t        j                  dd      dg       | j                  t        j                  dd      dg       | j                  t        j                  dd      dg       | j                  t        j                  dd      dg       | j                  t        j                  dd      dg       y )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3R8t\:<NOv|< ? 	y,? B# 	$ 	'C
"	%'C
"	%'@(K(	 	@5'J'8'BWIN'8(CfXN'B
 /0	2 	'G
!#%B$C	Er   c                 T    | j                  t        j                  dd      g d       y )Nz(a|(b))aba)r\   r   )r   r   r   r   rC   s    r   test_bug_117612zRegexTests.test_bug_117612Y  s"    z59 < 	r   c                    | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      j                  dd      d       t        j                  d      }| j                  |j                  d      d d  d       | j                  |j                  d	      d d  d
       | j                  |j                  d      d d  d       | j                  |j                  d      d d  d       | j                  |j                  d      d d  d       t        j                  dd      }| j                  |j                         d       | j                  |j                  d      d       | j                  |j                  d      d       | j                  |j                  dd      d       t        j                  d      }| j                  |j                  d      j                  ddd      d       | j                  |j                  d	      j                  ddd      d       | j                  |j                  d      j                  ddd      d       y )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]  sL   S#.q16:UC03Z@VS1!4c:VS1!4c:VS1771=zJmmO,3*,GH3*,GH4+-HI4+-HI4+-HI KKs#C(S)S)A
3mm?@3--aA68IJ3--dD$? B 	4..q$:<LMr   c                    | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd	      d d  d
       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       t        j                  d      }| j                  |j                  d      d d  d       | j                  |j                  d      d d  d       | j                  |j                  d      d        | j                  |j                  d      d        y )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  s   %?GJ
	%?EaH K 	%?FM%?FM%=tDQG J 	%=tDQG J 	%<dCAF I 	%<cB1E H 	 MM;<*,BCq)+AB.-r   c                 2   | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  d	d
      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      dg       y )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  s   %95A!D G 	%:C@C F 	%94@$G%94@$G%7>qA D 	%8#>qA D 	 	'o
247  6!	"r   c                 r    | j                  t        j                  dd      j                         ddd       y )N#(?P<first>first) (?P<second>second)first secondfirstsecondr  r   )r)   r-   rB   	groupdictrC   s    r   test_groupdictzRegexTests.test_groupdict  s0    %J
#)+H'M	Or   c                 n    | j                  t        j                  dd      j                  d      d       y )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  s/    %J
 &!>?
%	'r   c                 	   | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d   d       | j                  t        j                  d	d      d   d       | j                  t        j                  d
d      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  d d            d       | j                  t        t        j                  d!d            d       | j                  t        t        j                  d"d            d       | j                  t        t        j                  dd            d       | j                  t        j                  d#d      d        | j                  t        t        j                  d#d$            d       y )%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94@]E:DA^U;TB_e<dC\59!<cB^U;A>D^U;A>D_e<Q?E]E:1=sC_e<Q?E_e<Q?E_e<Q?EXu5t<Y6=Z7>[%8$?We4Q7=Xu5a8#>Y6q93?Z7:B?ekk(E:;TBekk*e<=tDekk*e<=tDekk+u=>Eekk)U;<dCekk+u=>Eekk+u=>Eekk+u=>EWe4d;ekk'59:DAr   c           
      .   | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  t        j
                  t        j                  z  t        j                  z         | j                  t        j                  d      j                  t        j                  t        j
                  z  t        j                  z         | j                  t        j                  d      j                  d       | j                  t        j                  d      j                  i        | j                  t        j                  d      j                  ddd       | j                  t        j                  dd      j                  d	       | j                  t        j                  dd      j                  d       | j                  t        j                  d
d      j                  d	       | j                  t        j                  d
d      j                  d       | j                  t        j                  d
d      j                         d       | j                  t        j                  d
d      j                  d      d       | j                  t        j                  dd      j                   d       | j                  t        j                  dd      j"                  d       | j                  t%        t'        t        j                  dd      j(                              | j*                         t        j                  d      }d	|j                  d<   | j                  |j                  d   d       y )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:   r0  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<<lK|4::EGGegg<M


=  	!}5;;UWWuww=N!!>" 	#|4;;Q?|4??D'EFQQ
"	$ 	UC044a8UC077;fh7;;Q?fh7>>Bfh7<<>Gfh7<<Q?HUC077=UC0557GHd5;;uc#:#=#=>?


	 MM*+Sc*A.r   c                    | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  ddt        j                        d   d	       | j                  t        j                  d
dt        j                        d   d	       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j
                        d   d       | j                  t        j                  ddt        j
                        d   d       | j                  t        j                  ddt        j
                        d        | j                  t        j                  dd      d   d	       | j                  t        j                  d
d      d   d	       | j                  t        j                  ddt        j
                        d   d       | j                  t        j                  ddt        j
                        d   d       | j                  t        j                  ddt        j
                        d        | j                  t        j                  dd      d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       y )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  s   k3DEaH$Ok3DEaH$Ol4F
,,!	#l4F
,,!	#k3D
--!	#k3D
--!	# 	h	577CAFNlE577CAFNlIuwwGNl4FGJ
	l4FGJ
	iUWWEaH
	mVUWWEaH
	mZI
	 	ox@CXN&6	
,,%	'ox
--%	'r   c           	      d   | j                  t        j                  dd      d   d       | j                  t        j                  ddt        j                        d   d       | j                  dj	                  t        j
                  ddt        j                              d       | j                  dj	                  t        j
                  ddt        j                              d       | j                  dj	                  t        j
                  d	dt        j                              d       y )
Nz([\u2222\u2223])u   ∢r:   r   rP   u   eèéêëēěėr2  z%[e\xe8\xe9\xea\xeb\u0113\u011b\u0117]z*e|\xe8|\xe9|\xea|\xeb|\u0113|\u011b|\u0117)r)   r-   rB   rB  joinr/   rC   s    r   test_bigcharsetzRegexTests.test_bigcharset  s    %8(CAF
	%8(
--%	's
/u}}"F G
/	1 	/W
/u}}"F G
/	1 	/\
/u}}"F G
/	1r   c                     | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       y )Na.ba
br   a.*bza

b)r)   r-   rB   DOTALLrC   s    r   test_anyallzRegexTests.test_anyall  sQ    UFELLA!DfMVXu||DQG
	r   c                    | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  d	d
      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd
      d   d       | j                  t        j                  dd
      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       y )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   sj   %5u=a@#F%6>qA3G%6>qA3G%7@CSI^U;A>D_f=a@#F%8%@CSI%5u=a@#F%6>qA3G^U;A>D%8%@CSIr   c                 <   | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  d	d
t        j                        d   d
       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  ddt        j                        d   d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       y )Nr   ABCr   r@  s   ABCz
(a\s[^a]*)za bbr:   z
(a\s[abc])rP  z(a\s[abc]*)z	((a)\s\2)rQ  z
((a)\s\2*)rR  z((a)\s(abc|a))z((a)\s(abc|a)*)z[Z-a]_r0  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.  s3   UE577;A>FVVUWW=a@&I]FEGGDQG
	]E577CAFN^VUWWEaH
	\5%''B1EuM]FEGGDQG
	%6uwwGJ
	%7I!L
	 	Xs388:FC\37<<>Gekk*e<=tDekk-BCTJekk-BCTJekk(H=>Er   c                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  d	d
      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  d	d      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       d}|D ]3  }|D ],  }t        j                  d|z   |      r| j                          . 5 | j                  t        t        j                  dd             d!       | j                  t        t        j                  dd"            d!       | j                  t        t        j                  d#d             d!       | j                  t        t        j                  d#d"            d!       | j                  t        t        j                  d$d             d!       | j                  t        t        j                  d%d             d!       | j                  t        t        j                  dd             d!       | j                  t        t        j                  d#d             d!       | j                  t        t        j                  d$d             d!       | j                  t        t        j                  d%d             d!       | j                  t        t        j                  d&d            d!       | j                  t        t        j                  d&d            d!       | j                  t        j                  d'd(      d)d*g       | j                  t        j                  d+d(      d)d*g       | j                  t        j                  d,d-      j                         d.       | j                  t        j                  d/d-      j                         d.       | j                  t        j                  d0d-      j                         d.       | j                  t        j                  d1d2dg3      j                         d4       | j                  t        j                  d1d5d6g3      j                         d7       y )8Nz(?fi)ssSSr   r   z(?fi)SSss   ßr0  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   r-  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<<>Gj$7<<>Gj
*,,0DFF	<&L
	  	&I
	 j
'))-	9j
-//3tvv	? 	k
+--1TVV	=k
.004	@k
(**.$&&	:&I
	!k
(**.$&&	: 	k
(**.$&&	:k
(**.$&&	:k
(**.$&&	:&J
	!&J
	!&J
	! %C{{8c>37IIK  
 	ell;GH
	ell;GH
	ell;GH
	ell;GH
	ell=.IJ
	ell+;
  	"ell;GH
	ell;GH
	ell=.IJ
	ell+;
  	"ell+;YGH
	ell+;YGH
	 	'Y
:<>G
>	 	'Y
:<>G
>	 	&M
	(&S	)&T	)&<h12448DFF	D&<
+eW>>Bdff	Nr   c                 V    | j                  t        j                  dd      d   d       y )Nz(\s)r   r:   rS  rC   s    r   test_categoryzRegexTests.test_category  s"    Wc215s;r   c                     | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       y )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  sB    k48;SAlE:1=tDr   c                     | j                  t        j                  dd      d   d       | j                  t        j                  dd      d   d       y )Nz\s(b)r   r:   r   za\sr   r   rs  rC   s    r   test_search_coveragezRegexTests.test_search_coverage  sB    h5a8#>fd3A6=r   c                    d}| j                  t        j                  |      |       t        dd      D ]  }|t	        |      z  }| j                  t        t        j                  t        j                  t	        |            t	        |                  d       | j                  t        j                  t        j                  t	        |            t	        |            j                         d        t        j                  t        j                  |            }| j                  |j                  |      j                         d       y )Nr   r      Tr0  r   rx  )	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%++ell3q6.BCF"KLU[[c!f)=s1vFKKM	  mmELLO,1**,h7r   c           
      V   d}| j                  t        j                  |      |       t        dd      D ]  }t	        |g      }||z  }| j                  t        t        j                  t        j                  |      |            d       | j                  t        j                  t        j                  |      |      j                         d        t        j                  t        j                  |            }| j                  |j                  |      j                         d       y )Nr   r   rx  Tr0  ry  )	r)   r-   rz  r{  bytesr(  rB   rA   r.   )r   r  r|  r   r	  s        r   test_re_escape_bytezRegexTests.test_re_escape_byte  s    a!,q#Aqc
AFAT%++ell1oq"ABDIU[[a!<AACVL	  mmELLO,1**,h7r   c                    t         j                  t         j                  k7  r| j                          t         j                  t         j
                  k7  r| j                          t         j                  t         j                  k7  r| j                          t         j                  t         j                  k7  r| j                          t         j                  t         j                  k7  r| j                          y y r   )r-   rv   
IGNORECASEr0   LrA  rC  	MULTILINESrM  rd   VERBOSErC   s    r   test_constantszRegexTests.test_constants  s    77e&&&IIK77ell"IIK77eoo%IIK77ell"IIK77emm#IIK $r   c                 ,   t         j                  t         j                  t         j                  t         j                  t         j
                  fD ]D  }| j                  t        t        t        j                  d|                  | j                         F y )Nz	^pattern$)r-   rv   rC  rd   r  r  r)   r   r"   r.   r   )r   flags     r   
test_flagszRegexTests.test_flags  sZ    WWegguwwADT$u}}[$'G"HI  " Br   c                 J   dD ]q  }| j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d|z  t	        |      dz               d       | j                  t        t        j                  d|z  t	        |      dz               d       | j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d	|z  t	        |      dz               d       | j                  t        t        j                  d
|z  t	        |      dz               d       t | j                  t        j                  | j                  d        y )Nr   rd         @            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<   2AT%++hlCF"CDdKT%++i!mSVc\"JKT%++i!mSVc\"JKT%++i!mSV"DEtLT%++j1nc!fsl"KLT%++j1nc!fsl"KL 3 	u{{D,B,B E# 	$r   c                 2   dD ]e  }| j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d|z  t	        |                  d       | j                  t        t        j                  d|z  t	        |                  d       h | j                  t        j                  | j                  d	        y )
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"   2AT%++j1nc!f"EFMT%++kAos1v"FGNT%++kAos1v"FGNT%++kAos1v"FGNT%++lQ.>A"GH$OT%++lQ.>A"GH$O 3 	u{{D,A,A D% 	&r   c                 B   | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j	                  d      d       | j                  t        j                  dd      j                  d      d       y )Nz(a)|(b)r   r:   r  r  )r)   r-   rB   startendrA   rC   s    r   test_bug_113254zRegexTests.test_bug_113254  st    Z5;;A>CZ599!<bAZ5::1=xHr   c                    | j                  t        j                  dd      j                  d        | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       y )	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<<dC[6@@!D%:4@JJ
	]D9CCSIWc2<<a@r   c                 \    | j                  t        j                  | j                  d        y )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  s#     	u{{DLL ;" 	#r   c                    | j                  t        j                  dddz  dz         j                  d      d       | j                  t        j                  dddz  d	z   ddz  z   d
z         j                  d      d       | j                  t        j                  dddz  dz         j                  d      d       | j                  t        j                  dddz  dz         j                  d      d       y )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EEaH
	WdTkC.?$+.M
/ Q	 Weemd.BCGGJ
	 	j%$,2EFJJ1M
	r   c                     dt        j                  d      z   dz   }| j                  t        j                  |      xr dd       y )N[u   ‹]r:   )r-   rz  r)   r.   )r   r	  s     r   test_bug_612074zRegexTests.test_bug_612074  s8    ELL**S0s+115r   c                    | j                  t        j                  dddz        d   d       | j                  t        j                  dddz  dz         d   d       | j                  t        j                  dddz  dz         d   d       y )Nz(x)*iP  r%   r:   z(x)*yr&   z(x)*?yrS  rC   s    r   test_stack_overflowzRegexTests.test_stack_overflow  sz     	VUS[9!<cBWeckC.?@CSIXus{S/@A!DcJr   c           	      L   d }d }d }d }t        j                  d|fd|fd|fd|fd	g      }| j                  t        t	        |j
                  j                  d
      j                              | j                         | j                  |j                  d      g dd
f       y )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%L%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=84--/7!;k
>UOnj%A D!  	d7??#:#:2#>#F#FGH


	 	&BC G>?AFC 	Dr   c                     dD ]Z  }| j                  t        j                  d|z  d      d d  d       | j                  t        j                  d|z  d      d d  d       \ y )N)r   ?*z
((.%s):)?zr  )r  NNa:z)r  za:r\   rS  )r   ops     r   test_bug_448951zRegexTests.test_bug_448951/  sd     BU[[);SA!D G U[[);UCAF I  r   c                    | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  d	d      d d  d
       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       y )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])*?crS  rC   s    r   test_bug_725106zRegexTests.test_bug_7251068  s0   [%8;=MN^U;A> A 	^U;A> A 	_e<Q? B 	]E:1= @ 	%5v>qA D 	%5u=a@ C 	%6>qA D 	r   c                     | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       y )Nz(a)(?:(?=(b)*)c)*abbr\   r\   Nz(a)((?!(b)*))*)r\   r\   NNrS  rC   s    r   test_bug_725149zRegexTests.test_bug_725149J  sP    %8%@C F 	%5u=a@ C 	r   c                      G d dt               }t        j                   |d            }| j                  |j	                  d      d        y )Nc                       e Zd Zy).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  s6    ##mmJu-.5)40r   c                     t        j                  dd      }| j                  |D cg c]  }|d   	 c}g d       y c c}w )Nr   r   r   r   )r-   finditerr)   )r   ititems      r   test_finditerzRegexTests.test_finditerW  s9    ^^E<0b1bd$q'b13EF1s   =c                 z    t        j                  d      t        j                  d      u r| j                          y y )N
bug_926075s
   bug_926075)r-   r.   r0   rC   s    r   test_bug_926075zRegexTests.test_bug_926075[  s+    ==&%--*FFIIK Gr   c                 t    d}| j                  t        j                  |      j                  d      g d       y )Nu   [.。．｡]za.b.cr\   r   r   )r)   r-   r.   r   r   s     r   test_bug_931848zRegexTests.test_bug_931848_  s1    .w/55g> A 	r   c                    t        j                  dd      | j                  t              j	                         d       | j                  t        fd       t        j                  d      j                  d      }| j                  |j                         j	                         d       | j                  |j                         d        y )N\srP  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-)9:--&..u5)..0&9)40r   c                    t        j                  dd      | j                  t              j	                         d       | j                  t              j	                         d       | j                  t        fd       y )Nz.*asdfrj  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   r  s    @r   test_bug_817234zRegexTests.test_bug_817234m  sX    ^^E6*b&1b&1-)9:r   c                    dd l }dD ]~  }|j                  |      }| j                  t        j                  d      j	                  |      d        | j                  t        j                  d      j	                  |      dd  d        y )Nr   bBuhHiIlLfds   blar   r:   rS   )arrayr)   r-   r.   rB   )r   r  typecoder\   s       r   test_empty_arrayzRegexTests.test_empty_arrays  sl    %HH%AU]]6288;TBU]]3/55a8>C &r   c                    t        d      }t        d      }t        j                  |t        j                  t        j                  z        }| j                  t        |j                  |            d       t        j                  |t        j                  t        j                  z        }| j                  t        |j                  |            d       t        j                  d|z   t        j                        }| j                  t        |j                  |            d       t        j                  d|z   t        j                        }| j                  t        |j                  |            d       t        j                  d|z         }| j                  t        |j                  |            d       t        j                  d|z         }| j                  t        |j                  |            d       | j                  t        t        j                  dd            d       | j                  t        j                  dd      d        y )	Ni  i  Tz(?i)z(?iu)(?i)arg   za(?i))rk   r-   r.   rv   r3  r)   r(  rB   )r   
upper_char
lower_charr  s       r   test_inline_flagszRegexTests.test_inline_flags{  s   [
[
MM*egg&78aggj12D9MM*egg&78aggj12D9MM&:-uww7aggj12D9MM&:-uww7aggj12D9MM'J./aggj12D9MM'J./aggj12D9 	ekk(C894@Xs3T:r   c                    t        j                  d      }| j                  |j                  dd      d       | j                  |j                  dd      d       | j                  |j                  dd      d       t        j                  dt         j                        }| j                  |j                  dd      d	       | j                  |j                  dd      d
       | j                  |j                  dd      d       y )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(3Z@S)4jAS$/8--U__5S(4kBS)4lCS$/8r   c                 4   t        j                  d      t        j                  d      | j                  t        | j                  fd       | j                  t        | j
                  fd       | j                  t        | j                  fd       | j                  t        | j                  fd       | j                  t        | j                  fd       | j                  t        | j
                  fd       | j                  t        | j                  fd	       | j                  t        | j
                  fd
       | j                  t        | j                  d        | j                  t        | j                  d        | j                  t        | j                  d        | j                  t        | j                  d        | j                  t        | j                  d        | j                  t        | j                  d        y )NrP      .c                  &     j                  d      S )N   brB   r	  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
))D/r   c                  &     j                  d      S )Nr   r  bpats   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
**S/r   c                  (     j                  dd      S Nr  r   rj   r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
''$
r   c                  (     j                  dd      S Nr      cr  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
''#t
r   c                  (     j                  dd      S )Nr  r  r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
''$
r   c                  (     j                  dd      S r  r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
((4
r   c                  (     j                  dd      S r  r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
((3
r   c                  (     j                  dd      S Nr   r   r  r  s   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
((3
r   c                  J    t        j                  dt         j                        S )N   \wr-   r.   rB  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                  l    t        j                  dt         j                  t         j                  z        S )N\w)r-   r.   rB  ASCIIrS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
--u}}u{{:
;r   c                  J    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                  J    t        j                  dt         j                        S )N(?a)\wr  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
--	5==
1r   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   mmC }}T"y$*?*? B 	y$*?*? B 	y$*B*B E 	y$*?*? B 	y$*?*? B 	y$*?*? B 	y$*B*B E 	y$*?*? B 	 	z4+B+B E/ 	0z4+B+B E$ 	%z4+;+; >< 	=z4+;+; >0 	1z4+;+; >2 	3z4+;+; >$ 	%r   c                    dt         j                  fD ]  }t        j                  d|t         j                  z        }| j	                  t        |j                  d            d       t        j                  d|      }| j	                  t        |j                  d            d        t        j                  dt         j                  t         j                  z        }| j	                  |j                  d      d        t        j                  dt         j                        }| j	                  |j                  d      d        t        j                  dt         j                        }| j	                  |j                  d      d        t        j                  d      }| j	                  |j                  d      d        dt         j                  fD ]  }t        j                  d|t         j                  z        }| j	                  |j                  d	      d        t        j                  d
      }| j	                  |j                  d	      d         | j                  t        | j                  d        y )Nr      À   àTr"  u   (?a)Àr&        r  c                  ,    t        j                  d      S r(  r  rS   r   r   rV   z8RegexTests.test_ascii_and_unicode_flag.<locals>.<lambda>  r   r   )r-   rB  r.   r  r)   r(  rB   r#  r|   r}   r/  )r   r2  r	  s      r   test_ascii_and_unicode_flagz&RegexTests.test_ascii_and_unicode_flag  s   'E--0@0@(@ACT#))F"34d;--u-CT#))F"34d;	 ( mmFEKK%2B2B$BC6*D1mmJ(8(896*D1mmE5;;/6*D1mmI&6*D1 %E--1A1A)ABCSYYw/6--'CSYYw/6	 & 	z4+;+; >$ 	%r   c           	      l   t        j                  dd      }|s| j                  d       nA|r.|d   |j                  d      k7  s|d   |j                  d      k7  r| j                  d       |s| j                  d       y |d d  dk7  r-| j                  dj	                  t        |d d                     y y )	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asciir   s     r   test_subscripting_matchz"RegexTests.test_subscripting_match  s    KKT*II@Aadaggaj(AaDAGGAJ,>IIhII@AqTZIIJQQRWXYZ[X\R]^_  r   c                     t        j                  dd      }t        j                  dd      }|r|r|d d  |d d  k(  s| j                  d       y y )Nz	(?P<a>\w)r%   r9  r;  )r-   rB   r0   )r   m0m1s      r   test_new_named_groupsz RegexTests.test_new_named_groups  sF    [[s+[[c*rber!unIIh -r   c           
      r   | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        t        j                  dd            d       | j                  t        t        j                  dd	            d       | j                  t        t        j                  d
d            d       | j                  t        t        j                  dd            d       | j                  t        j                  dd      d        | j                  t        j                  d
d      d        | j                  t        j                  dd      d        | j                  t        j                  dd	      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  d d            d       | j                  t        t        j                  d!d            d       | j                  t        t        j                  d"d            d       | j                  t        t        j                  d#d            d       | j                  t        t        j                  d$d            d       | j                  t        t        j                  d%d            d       | j                  t        t        j                  d&d            d       | j                  t        t        j                  d'd            d       | j                  t        t        j                  d(d            d       | j                  t        t        j                  d)d            d       | j                  t        t        j                  d*d            d       | j                  t        t        j                  d+d            d       | j                  t        t        j                  d,d            d       | j                  t        t        j                  d-d            d       | j                  t        t        j                  d.d/            d       | j                  t        t        j                  d0d1            d       | j                  t        t        j                  dd            d       | j                  t        j                  d.d2      d        | j                  t        j                  d0d2      d        | j                  t        j                  dd2      d        | j                  t        j                  d3d/      d        | j                  t        j                  d4d1      d        | j                  t        j                  d5d      d        | j                  t        t        j                  d3d2            d       | j                  t        t        j                  d4d2            d       | j                  t        t        j                  d5d2            d       | j                  t        t        j                  d6d            d       | j                  t        t        j                  d6d7            d       | j                  t        t        j                  d8d            d       | j                  t        t        j                  d9d7            d       | j                  t        t        j                  d:d7            d       | j                  t        t        j                  d:d            d       | j                  t        t        j                  dd/            d       | j                  t        t        j                  dd7            d       | j                  t        t        j                  dd;            d       | j                  t        j                  d<d      j	                         d=       | j                  t        j                  d<d>      j	                         d?       | j                  t        j
                  d<d@      g dA       | j                  t        j
                  dBd@      dCdDg       | j                  t        j
                  d<dE      g dF       | j                  t        t        j                  d9d7            d       dG}dH}t        dIj                               }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 ]R  \  }}}	 |d d j                  t        j
                  ||            |k7  r | j                  dj                  |             T | j                  t        t        j                  dd/            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       y # t        $ r5}| j                  dj                  |t        |                   Y d }~d }~ww xY w)Ns   (?ai)r5  s	   (?ai)\xC0s   (?a)\wr"  r3  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   rW  \Xr0     àr\     aààeéér\   r3  rJ  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}rW     á)z(?i)\p{InBasicLatin}rW  r\   )z(?i)\P{InBasicLatin}rW  rX  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   rG  r0   r<  	Exceptionr=  )	r   chars_uchars_bword_settestsrx   charsexpectedrM  s	            r   test_propertieszRegexTests.test_properties  s   \7;TB]G<dCZ94@ekk%894@ 	ekk*d;<dCekk*d;<dCekk*d;<dCZ6=Z6=Z6=Z6=Z6=Z6=ekk*d;<dCekk*d;<dCekk*d;<dCekk/
)+ ,-1	3ekk*=
)+ ,-1	3ekk*;
)+ ,-1	3ekk*@
)+ ,-1	3ekk*;
)+ ,-1	3ekk*?
)+ ,-1	3ekk*;
)+ ,-1	3ekk*=
)+ ,-1	3ekk*B
)+ ,-1	3ekk*=
)+ ,-1	3ekk*A
)+ ,-1	3 	ekk/
&( )*.	0ekk*;
&( )*.	0ekk*@
&( )*.	0ekk*;
&( )*.	0ekk*?
&( )*.	0ekk*:
&( )*.	0ekk*<
&( )*.	0ekk*A
&( )*.	0ekk*<
&( )*.	0ekk*@
&( )*.	0ekk*<
&( )*.	0ekk*>
&( )*.	0ekk*C
&( )*.	0ekk*>
&( )*.	0ekk*B
&( )*.	0 	ekk%56=ekk%56=ekk%56=UC0$7UC0$7UC0$7UC0$7UC0$7UC0$7ekk%56=ekk%56=ekk%56=ekk(C894@ekk(C894@ekk)S9:DAekk)S9:DAekk(C894@ekk(C894@ekk%56=ekk%56=ekk%56=UF388:FCUI6;;=vFu
$&(	 	x
$&(6'G	Iu.CD
-	/ 	ekk)S9:DA(<BBD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 ).$GUHL#A;##EMM'5$ABhNIIl11':; ). 	ekk*?EF
	ekk*A
(* +,0	2ekk*A
(* +,0	2  L		077qJKKLs   Aw88	x6*x11x6c                 B   | j                  t        j                  dd      dg       | j                  t        j                  dd      ddg       | j                  t        j                  dd      g d       | j                  t        j                  d	d      g d
       y )N\w+u    हिन्दी,   हिन्दीz\W+r   ,r   )r   rf  rg  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1
2	4 	v
24693Z	AZ
2467	8 	Z
246A	Br   c                 T    | j                  t        j                  dd      ddg       y )N\G\w{2}abcd efr  r  r   rC   s    r   test_search_anchorzRegexTests.test_search_anchor  s!    z9=d|Lr   c                    | j                  t        j                  dd      g d       | j                  t        j                  ddd      g d       | j                  t        j                  dd      dd	g       | j                  t        j                  ddd      g d
       | j                  t        j                  ddd      ddg       | j                  t        j                  dd      D cg c]  }|d   	 c}g d       | j                  t        j                  ddd      D cg c]  }|d   	 c}g d
       | j                  t        j                  dd      D cg c]  }|d   	 c}g d       | j                  t        j                  ddd      D cg c]  }|d   	 c}g d
       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }|d   	 c}g d       | j                  t        j                  dd      D cg c]  }|d   	 c}g d       | j                  t        j                  dd      D cg c]  }|d   	 c}g d       | j                  t        j                  dd      D cg c]  }|d   	 c}g d       | j                  t        j                  dd      ddg       | j                  t        j                  dd      ddg       | j                  t        j                  dd      g        | j                  t        j                  dd      dg       | j                  t        j                  d d!      g d"       | j                  t        j                  d#d!      g d"       | j                  t        j                  d$d!      g d%       | j                  t        j                  d&d!      g d%       | j                  t        j                  d'dd(d)*      d+d,g       | j                  t        j                  d'dd(d-*      d+d,g       | j                  t        j                  d'dd(d)*      D cg c]  }|d   	 c}d+d,g       | j                  t        j                  d'dd(d-*      D cg c]  }|d   	 c}d+d,g       | j                  t        j                  ddd(d)*      D cg c]  }|d   	 c}d,d+g       | j                  t        j                  ddd(d-*      D cg c]  }|d   	 c}d,d+g       | j                  t        j                  ddd(d)*      d,d+g       | j                  t        j                  ddd(d-*      d,d+g       | j                  t        j                  d.d/t        j                        d0d1g       | j                  t        j                  d2d/t        j                        d1d0g       | j                  t        j                  d3d      d	g       | j                  t        j                  d3dd      d	dg       | j                  t        j                  d4d5      d6d7g       | j                  t        j                  d8d5      d9d:g       | j                  t        j                  d3d      D cg c]  }|d   	 c}d	g       | j                  t        j                  d3dd      D cg c]  }|d   	 c}d	dg       | j                  t        j                  d4d5      D cg c]  }|d   	 c}d;d<g       | j                  t        j                  d8d5      D cg c]  }|d   	 c}d=d>g       | j                  t        j
                  d?d?      j                         d@       | j                  t        j
                  dAd?      j                         d@       | j                  t        j
                  dBdC      j                         d@       | j                  t        j
                  dDdC      j                         d@       | j                  t        j                  dEdFd      d       | j                  t        j                  dGdFd      d       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )HNz(?r).r   )r   r   r\   T
overlapped(?r)..abcder  r  r  r  r  r  (?r)(.)(-)(.)a-b-cr   r   r   r\   r   r   r   ^|\w+foo barr   r  r  
(?V1)^|\w+	(?r)^|\w+r  r  r   (?rV1)^|\w+rj  rk  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;   r7  r8  r   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  r  zthird fourthzfourth fifthzsecond thirdr,  rh  z
(?r)abcdefz
(?i)abcdefABCDEFz(?ir)abcdef(.)r   (?r)(.))r)   r-   r/   r  rv   r@   rA   rj   r   s     r   test_search_reversezRegexTests.test_search_reverse  s   x7Ix4H K 	y':T4LIy'dK
"	$'7,o>	@ 	x(GH(G1!A$(GH K 	y')  )1!A$ ) 5	7x(GH(G1!A$(GH K 	y')  )1!A$ ) 5	7 	x; > 	}i@ C 	|Y? B 	~yA D 	 	x(KL(K1!A$(KL
	}
)  )1!A$ ) )	+|
)  )1!A$ ) )	+~
)  )1!A$ ) )	+ 	z9=d|L'7@4,O~yA2F~yAD6Juf57IJz6:<NOy&9;MN{F; > 	 	sF!Ds
G 	sF"E
H 	sF)  )1!A$ ) Cj	"sF)  )1!A$ ) Sz	# 	wA)  )1!A$ ) Cj	"wA)  )1!A$ ) Sz	#wAaH3
K 	wAbI*	 	wegg>c
K{D%''BS#JO{E:TFC{EdK,	~
+-/B E /	 	'9
+-/B E /	 	{E(JK(J1!A$(JK&	{E)  )1!A$ ) "D\	+~
+)- . )-1!A$ )- .0>
0	 	7I
+)- . )-1!A$ )- .0>
0	 	h9>>@&IlH=BBDfMlH=BBDfMmX>CCEvN65%8%@:ue<eDm IH M$( L..s`   2d'-d,&d1!d6:d;3e ,e%e
4e0e,e(ee# e(9e-2e2c                 P    | j                  t        j                  dd      d        y )Nz(?>a*)ar  rs  rC   s    r   test_atomiczRegexTests.test_atomic  s    j$7>r   c                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  d	d
      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd
      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        y )Nza?ar\   r0  za*ar<   r>   za+aza{1,3}az	(?:ab)?abr  r\  z	(?:ab)*ababababrh  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7796Bfe499;VDfe499;VDj%8==?H 	lD9>>@&IlH=BBDfMlH=BBDfM&6AFFH K 	 	gs3T:gu5t<gu5t<k594@ 	mT:DAmX>EmX>E&7BDIr   c                 6	   t         j                  dk\  r)| j                  t        j                  dd      g d       n'| j                  t        j                  dd      dg       | j                  t        j                  dd      g d       | j                  t        j
                  dd      g d       | j                  t        j                  dd      D cg c]  }|d	   	 c}g d       | j                  t        j
                  d
d      g d       | j                  t        j                  d
d      D cg c]  }|d	   	 c}g d       | j                  t        j
                  dd      g d       | j                  t        j                  dd      D cg c]  }|d	   	 c}g d       | j                  t        j
                  dd      g d       | j                  t        j                  dd      D cg c]  }|d	   	 c}g d       t         j                  dk\  r_| j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }| c}g d       n\| j                  t        j                  dd      dg       | j                  t        j                  dd      D cg c]  }| c}dg       t         j                  dk\  r_| j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }| c}g d       n\| j                  t        j                  dd      dg       | j                  t        j                  dd      D cg c]  }| c}dg       | j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }| c}g d       | j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }| c}g d       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w )Nr   z\brP  )r   r\   r   r   r   r   rw  rx  ry  r   r{  r|  rz  r}  r   r   )r   r%   r\   r%   r   r%   r   r   z(?r))r   r   r%   r   r%   r\   r%   r   z(?V1)z(?rV1))r   r   r)   r-   r   r/   r  r   r   s     r   test_zerowidthzRegexTests.test_zerowidth8  s$   y(U[[6 9  U[[6@Z7 : 	 	x; > 	x(KL(K1!A$(KL
	|Y? B 	|
)  )1!A$ ) )	+}i@ C 	}
)  )1!A$ ) )	+~yA D 	~
)  )1!A$ ) )	+ y(U[[X6 9! "X)FG)FAa)FG J0 1 U[[X6
CX)FG)FAa)FGj y(U[[: =! ")JK)JAa)JK46 U[[:XJG)JK)JAa)JKj 	Wh7 : 	U__Wh%GH%G!%GH K, 	- 	Xx8 ; 	U__Xx%HI%H!%HI L, 	-U M H H L L
 I
 Js<   Q)8Q.Q3:Q8.	Q=	R<	R	R7	R	Rc                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  ddt        j                  	      d        | j                  t        j                  d
dt        j                  	      d        | j                  t        j                  ddt        j                  	      j                         d       y )Nz(?i)Abr  r\  z(?i:A)bzA(?i)bz(?V0)Abz(?V1)Abz(?-i)AbrF  z(?-i:A)bzA(?-i)b)r)   r-   r@   rA   rv   rC   s    r   test_scoped_and_inline_flagsz'RegexTests.test_scoped_and_inline_flagsr  s
   i6;;=vFj$7<<>Gi6=j$7>j$7>j$eggFMk4uwwGNj$eggFKKM
	r   c                 <   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       y )Nz(?:a+)+r<   r>   z(?:(?:ab)+c)+abcabcrh  z
(?:a+){2,}r  rC   s    r   test_repeated_repeatsz RegexTests.test_repeated_repeats  sw    j%8==?H&6AFFH K 	 	mU;@@BFKr   c           	         | j                  t        j                  dd      j                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      j                         d       | j                  t	        t        j
                  dd            d       | j                  t        j
                  d	d      d        | j                  t	        t        j
                  d
d            d       | j                  t        j
                  dd      d        | j                  t        j
                  dd      d        | j                  t        j
                  dd      d        | j                  t	        t        j
                  dd            d       | j                  t        j
                  dd      d        | j                  t	        t        j
                  dd            d       | j                  t	        t        j
                  dd            d       | j                  t        j
                  dd      d        | j                  t	        t        j
                  dd            d       | j                  t        j
                  dd      d        | j                  t	        t        j
                  dd            d       | j                  t        j
                  dd      d        | j                  t        j
                  dd      d        | j                  t        j
                  dd      d        | j                  t	        t        j
                  dd            d       | j                  t	        t        j
                  dd            d       | j                  t        j
                  dd      d        | j                  t	        t        j
                  dd            d       | j                  t        t        t        j                  d                  | j                         y )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  sn   ov>CCEvNov>Eov>Eov>CCEvNekk/5ABDI_e<dCekk.%@A4H^U;TB%BEJ
	%BEJ
	ekk*G
 	%BEJ
	ekk*G
 	 	ekk*F
 	%A5I
	ekk*F
 	%A5I
	ekk*F
 	 	%<eDdK%<eDdK%<eDdKekk*A5IJ
	 	ekk*@%HI
	%;UCTJekk*@%HI
	 	d5==#=>?


	r   c                 :   t         j                  dk\  r(| j                  t        j                  ddd      d       n'| j                  t        j                  ddd      d       | j                  t        j                  ddd      d       t         j                  dk\  r(| j                  t        j                  ddd      d	       n'| j                  t        j                  ddd      d
       | j                  t        j                  ddd      d	       t         j                  dk\  r(| j                  t        j                  ddd      d       n'| j                  t        j                  ddd      d       | j                  t        j                  ddd      d       y )Nr   z(?V0)(x)?(y)?z\2-\1r:  zy-x-zy-xz(?V1)(x)?(y)?r%   z-x-z-xr&   zy--zy-r   rC   s    r   test_unmatched_in_subz RegexTests.test_unmatched_in_sub  sD    y(UYY'74H UYY'74H#3XtDfMy(UYY'73GOUYY'73GN#3XsCUKy(UYY'73GOUYY'73GN#3XsCUKr   c                 b   t        j                  d      }t        j                  dk\  r$| j	                  |j                  d d      d       n#| j	                  |j                  d d      d       | j	                  |j                  d      D cg c]  }|j                          c}dd	g       t        j                  d
      }| j	                  |j                  d d      d       | j	                  |j                  d      D cg c]  }|j                          c}dd	g       y c c}w c c}w )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>      akk0AC0Gr   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:   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!++,=,Cr   )r-   r.   r   r   r)   r   r  r   r  s      r   test_bug_10328zRegexTests.test_bug_10328  s   mmcdy(SXX&GFH SXX&G46S\\)-DE-D!'')-DE
H 	mmcd"C
B	DS\\)-DE-D!'')-DE
H 	 F
 Fs   D'D,c                    | j                  t        j                  dd      ddg       | j                  t        j                  ddd      g d       | j                  t        j                  dd      d	d
g       | j                  t        j                  ddd      g d       | j                  t        j                  ddd      ddg       | j                  t        j                  dd      D cg c]  }|d   	 c}ddg       | j                  t        j                  ddd      D cg c]  }|d   	 c}g d       | j                  t        j                  dd      D cg c]  }|d   	 c}d	d
g       | j                  t        j                  ddd      D cg c]  }|d   	 c}g d       | j                  t        j                  ddd      D cg c]  }|j	                          c}ddg       | j                  t        j                  ddd      D cg c]  }|j	                          c}ddg       y c c}w c c}w c c}w c c}w c c}w c c}w )N..rq  r  r  Trn  )r  r  r  r  rp  r  r  rr  z	(.)(-)(.)rt  rv  ru  r   rs  )r)   r-   r/   r  r5  r   s     r   test_overlappedzRegexTests.test_overlapped  sL   ug6tEug$G J 	y':T4LIy'dK
"	$|WNO
,	. 	ug(FG(F1!A$(FG$
J 	ug)  )1!A$ ) 5	7y'(JK(J1!A$(JK,	y')  )1!A$ ) 5	7 	enn\
d/$ % /$!((* /$ %'6&H	Jenn=M
d/$ % /$!((* /$ %'6&H	J HK%%s$   2I-I	&I!II"Ic                     | j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }| c}g d       y c c}w )Nrg  za,b,,c,)r\   r   r   r   r   )r)   r-   r   r   r   s     r   test_splititerzRegexTests.test_splititer  sS    T957NOU__T9%EF%E!%EF I 	Fs   	A c                    | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      g d       | j                  t        j                  dd      d	d
g       | j                  t        j                  dd      g d       y )NrI  r3  r0  rJ  r\  rK  rL  rO  rP  rQ  rR  rS  )r)   r-   rB   rA   r/   rC   s    r   test_graphemezRegexTests.test_grapheme  s    UF388:FCUI6;;=vFu
$&(	 	x
$&(6'G	Iu.CD
-	/r   c                    d}| j                  t        j                  d|      g d       | j                  t        j                  d|      g d       d}| j                  t        j                  d|      g d       | j                  t        j                  d|      g d       d}| j                  t        j                  d|      g d	       | j                  t        j                  d|      g d
       y )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  rg  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  s    FZ6 9 	 	[$7 : 	
 Z6 9 	[$7 : 	 .Z6 9 	 	[$7 :0 	1r   c                 
   | j                  t        j                  dd      ddg       | j                  t        j                  dd      dg       | j                  t        j                  dd      ddg       | j                  t        j                  d	d      ddg       | j                  t        j                  d	d      ddg       | j                  t        j                  d	d      ddg       | j                  t        j                  d
d      j	                         d       | j                  t        j                  d
d      d        | j                  t        j                  d
d      d        | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      d        | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       | j                  t        j                  dd      j	                         d       y )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.@AH
D 	u.@A
	 u.DEz
"	$y2DEX
	 y2DEX
	 y2HIX
	  	gu5;;=qAgw7>gw7>k59??A1Ek7;TBk7;TBgu5;;=qAgw7==?Cgw7>k59??A1Ek7;AACQGk7;AACQGk59??A1Ek7;AACQGk7;TBlE:@@BAFlG<BBDaHlG<BBDaHk59??A1Ek7;AACQGk7;TBlE:@@BAFlG<BBDaHlG<BBDaHr   c                 p	   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d	       | j                  t        j                  dd
      j                         d       | j                  t        j                  dd      j                         d	       | j                  t        j                  dd
      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j	                         dgdgd       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j	                         d d!gg d       y )"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   rM  r  )r  r   rM  z (?|(?<a>a)(?<b>b)|(?<b>c)(d))(e)z(?|(?<a>a)(?<b>b)|(c)(d))(e))r   r  rM  z (?|(?<a>a)(?<b>b)|(c)(?<a>d))(e)r\   r   )r\   r   )r  NrM  r   r  )r)   r-   rB   r5  capturesdictrC   s    r   test_branch_resetzRegexTests.test_branch_resetJ  s   %6=DDF I 	%6=DDF I 	%B
*	,%B
*	, 	%I
0	2%I
0	2%95AHHJ
	! 	%95AHHJ
	!%95AHHJ
	%>ELLN
	%>ELLN
	%>ELLN
	 	%>ELLN
	 	%L
?	,%L
?	,%H
?	,%H
?	,%D
?	,%D
?	, 	%H
?	,%H
uC5!9	;%H
+	-%H
Sz!;	=r   c           	      J   | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd	d
      d       | j                  t        j
                  dd      dg       | j                  t        j
                  dd      dg       | j                  t        j
                  dd      ddg       | j                  t        j
                  dd      ddg       | j                  t        j
                  dd      ddg       | j                  t        j
                  dd      ddg       | j                  t        j
                  dd      g d       | j                  t        j
                  dd      g d       | j                  t        j
                  dd      dg       | j                  t        j
                  dd      dg       | j                  t        j
                  dd      dg       | j                  t        j
                  dd      dg       | j                  d j                  t        j
                  d!d"            d#       | j                  d j                  t        j
                  d$d"            d%       | j                  d j                  t        j
                  d&d'            d(       | j                  d j                  t        j
                  d)d*            d+       | j                  d j                  t        j
                  d,d*            d+       | j                  d j                  t        j
                  d-d.            d*       d j                  d/ t        d0      D              }| j                  t        t        j
                  d1|            d2       | j                  t        t        j
                  d3|            d4       | j                  t        t        j
                  d5|            d6       | j                  t        t        j
                  d7|            d8       | j                  t        t        j
                  d9|            d8       | j                  t        t        j
                  d:|            d6       | j                  t        t        j
                  d;|            d<       | j                  t        t        j
                  d=|            d>       | j                  t        t        j
                  d?|            d@       | j                  t        t        j
                  dA|            dB       | j                  t        t        j
                  dC|            dB       | j                  t        t        j
                  dD|            dE       | j                  t        t        j
                  dF|            dG       | j                  t        t        j
                  dH|            dG       | j                  t        t        t        j                  dI                  | j                         | j                  t        j
                  dJdK      ddLg       | j                  t        j
                  dMdK      ddLg       | j                  t        j
                  dNdK      ddLg       | j                  t        j
                  dOdK      ddLg       y )PNz[a]r\   r0  z(?i)[a]rg   z[a-b]z	(?i)[a-b]z(?V0)([][])r   za[b]crt  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]rP  r   z[^b\S]z[^8\d]za 1b2c              3   2   K   | ]  }t        |        y wr   rk   .0r   s     r   	<genexpr>z&RegexTests.test_set.<locals>.<genexpr>  s     9LqCFL   rx  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/   rG  r{  lenr   r"   r.   r   )r   	all_charss     r   test_setzRegexTests.test_set  s   VS1668&AZ5::<fEXt499;VD\48==?H>4A7K~t<seD'94@3%H>c
K>c
K':EBS
E 	':EBS
E 	 	'8&A D 	'<fE H 	 	~t<seD~t<seD=uE=uEz:!FG
	y*!EF
	|[!IJ
	y%!@A3Gy%!@A3Gy'!BCUKGG9E%L99	U]]<CDcJU]]=)DE
	U]]<CDbI 	U]]+J
 	U]]+U
 	U]]+T
 	U]]+F
 	U]]+I
 	U]]+F
 	U]]+C
 	U]]+J
 	U]]?IFG
	U]]+L
 	U]]+L
 	 	d5==#ABC


	'=uE
H 	'>F
I 	u=SzJ'7>c
Kr   c           
      K   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        d       fdKdEdt        dE      fdLdGdt        d       fdMdGdt        dG      fdNdGdt        dG      fdOddt         j                  | j                  fdPdQdQdt        dQ      fdQdRdt        d       fdQdSdt        d       fdQdTdt        d       fdQdUdt        dQ      fdQdVdt        dQ      fdWdQdt        dQ      fdXdQdt        dQ      fdXdYdt        dY      fdXdZdt        dZ      fd[dYdt        dY      fd[dQdt        d       fd[d\dt        d       fd[dZdt        dZ      fd]dYdt        dY      fd]dQdt        dQ      fd]dZdt        d       fd^dQdt        dQ      fd_dQdt        dQ      fd_d`dt        d       fdad`dt        dQ      fd_dbdt        d       fdcdbdt        dQ      fdddQdt        d      fdedQdt        d      fdfdQdt        dQ      fdfdSdt        dS      fdgdhdt        dh      fdgdidt        d       fdjdQdt        d       fdjdkdt        dk      fdldkdt        d       fdldmdt        dm      fdndodt        dp      fdqdrdt        dr      fdsdrdt        dr      fdtdrdt        dr      fdudvdt         j                  | j                  fdwdvdt         j                  | j                  fdxdvdt         j                  | j                  fdydvdt         j                  | j                  fdzdvd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~dkdt        d       fdddt        d      fdddt        d       fdddt        d       fdddt        d      fddrd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ddrd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ddQd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ddQdt        d      fddQdt        d      fdddt        dQ      fdddt        d      fdddt        d      fdddt        d      fddvdt         j                  | j                  fdddt        d      fdQd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ddQdt        dͫ      fddQdt        dϫ      fdddt        dѫ      fdddt        dѫ      fdddt        dԫ      fdddt        d֫      fdddt        d       fddQdt        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ddpdt        dp      fddd	t        dQ      fddd	t        dQ      fddd	t        d      fdddt        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&dQdt        d       fd)d'dt        d*      fd+dodt        d,      fd-ddt         j                  | j                  fd.dd/t        d0      fd1dd/t        d2      fd3ddt         j                  | j                  fd4d5dt        d5      fd6d5dt         j                  | j                  fd7d8dt        d8      fd7d8dt        d9      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@dAdt        dA      fdBd>dt        d>      fdQdQdt        dQ      fdQdRdt        d       fdQdSdt        d       fdQdTdt        d       fdQdUdt        dQ      fdQdVdt        dQ      fdWdQdt        dQ      fdXdQdt        dQ      fdXdYdt        dY      fdXdZdt        dZ      fdCdZdt        dZ      fd[dYdt        dY      fd[dQdt        d       fd[d\dt        d       fdDd\dt        d       fd[dZdt        dZ      fdDdZdt        dZ      fdEdZdt        dZ      fdFdZdt        dZ      fdGdZdt        d       fd]dYdt        dY      fd]dQdt        dQ      fdHdQdt        dQ      fd]dZdt        d       fd^dQdt        dQ      fdIdQdt        dQ      fd_dQdt        dQ      fd_d`dt        d       fdad`dt        dQ      fd_dbdt        d       fdcdbdt        dQ      fdddQdt        d      fdedQdt        d      fdfdQdt        dQ      fdfdSdt        dS      fdgdhdt        dh      fdgdidt        d       fdjdQdt        d       fdjdkdt        dk      fdldkdt        d       fdldmdt        dm      fdndodt        dp      fdqdrdt        dr      fdtdrdt        dr      fdJdvdt         j                  | j                  fdudvdt         j                  | j                  fdwdvdt         j                  | j                  fd{d{dt        d{      fd|d}dt        d}      fd~ddt        d      fd~dkdt        d       fdddt        d      fdddt        d       fdddt        d       fdddt        d      fddQdt        d      fdddt        d      fdddt        d      fdKdvdt         j                  | j                  fdLdvdt         j                  | j                  fdddt        d       fdxdvdt         j                  | j                  fdddt        d      fdddt        d      fdddt        d      fdddt        d      fdydvdt         j                  | j                  fdzdvdt         j                  | j                  fddQdt        d      fddQdt        d      fdddt        dQ      fdMddt        dQ      fdNdvdt         j                  | j                  fdOddt        dQ      fdddt        d      fdPddt        d      fdddt        d      fdQddt        d      fdddt        d      fdRddt        d      fddvdt         j                  | j                  fdddt        d      fdQddt        d       fdddt        d      fdSdTdt        dU      fdVddt        dW      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ddQdt        dͫ      fddQdt        dϫ      fdddt        dѫ      fdddt        dѫ      fdddt        dԫ      fdddt        d֫      fdddt        d       fddQdt        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dXd
dYt        d
      fdZd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ddpdt        dp      fddd	t        dQ      fddd	t        dQ      fd]d^dt        d^      fd]d_dt        d       fd]d`dt        d       fd]dadt        d       fd]dbdt        d^      fd]dcdt        d^      fddd^dt        d^      fded^dt        d^      fdedfdt        df      fdgdhdt        dh      fdidhdt        dh      fdjdfdt        df      fdkd^dt        d       fdkdldt        d       fdmdldt        d       fdkdhdt        dh      fdndhdt        dh      fdodhdt        dh      fdpdhdt        dh      fdqdhdt        d       fdrdfdt        df      fdrd^dt        d^      fdsd^dt        d^      fdrdhdt        d       fdtd^dt        d^      fdud^dt        d^      fdvd^dt        d^      fdvdwdt        d       fdxdwdt        d^      fdvdydt        d       fdzdyd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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ddvdt         j                  | j                  fddvdt         j                  | j                  fddvd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ddvdt         j                  | j                  fddvdt         j                  | j                  fdddt        d       fddvdt         j                  | j                  fdddt        d      fdddt        d      fdddt        d      fdddt        d      fddvdt         j                  | j                  fddvdt         j                  | j                  fdd^dt        d      fdd^dt        d      fdddt        d^      fdddt        d^      fddvd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ddvd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dYt        d      fdddt        d      fddd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dmd	t        d      fddmd	t        d      fddmd	t        d      fddm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dad-dt        d       fd.d-dt        dQ      fd/d0dt        dQ      fdCdEdt        d       fdKdEdt        dE      fd1d2dt        d3      fd4d2dt        d3      fd5d6dt        dQ      fd7d6dt        dQ      fd8d9dt        d9      fd:d;d<t        d=      fd>d;d<t        d=      fd?d@dAt        dB      fdCddt         j                  | j                  fdDdEdt        dk      fdFddt         j                  | j                  fdGdHdt        dH      fdIddt        d      fdJdKdt        d       fdLdKdt        dK      fdMdKdt        dK      fdNdOdt        dP      fdQdRdt        dR      fdSdTdt        dT      fdUdVdt        dV      fdUdWdt        dW      fdXdYd	t        d      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d_d`dt        d`      fdadbdt        d       fdcdddt        d       fdedKdt        d       fdfddAt        dg      fdhdQdt        di      fdjdQdt        di      fdkdQdt        di      fdld
dt        d
      fdldmdt        dm      fdndmdt        dm      f}|D ]  }d }	 t!        |      dok(  r|\  }}}}n|\  }}}}}g }|r2|j#                  dp      D ]  }		 |j%                  t'        |	              |A| j+                  ||q      5  | j-                  ||t         j.                  ||       d d d        t        j.                  ||      }
|
r*|rt         |
j0                  |       }nt        |
d d        }nt        |
      }| j3                  ||        y # t(        $ r |j%                  |	       Y w xY w# 1 sw Y   *xY w# t(        $ r] drj5                  |d ds D cg c]  }t        |       nc c}w c}dtgz         }| j7                  duj9                  |             Y w xY w(v  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 \\rJ  acbrK  rL  zacc
ccbza.{4,5}bzabza.b(?s)z(?s)a.bza.*(?s)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?cr?  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\br:  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)r  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|erM  z(a|b|c|d|e)fr~  )r~  rM  zabcd*efgabcdefgzab*	xabyabbbzxayabbbzz(ab|cd)erq  )r  r  z[abhgefdc]ijhijz	^(ab|cd)ez(abc|)efr,  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)r  r  Nij)r  r  jeffgbcddreffgzz(((((((((a)))))))))zmultiple words of textzuh-uhzmultiple wordszmultiple words, yeahz	(.*)c(.*))rq  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)r  r\   z([ac])+xaacx)r  r   z([^/]*/)*sub1/zd:msgs/tdir/sub1/trial/away.cpp)zd:msgs/tdir/sub1/ztdir/z([^.]*)\.([^:]*):[T ]+(.*)track1.title:TBlah blah blahz0,1,2,3)r  track1titlezBlah blah blahz	([^N]*N)+abNNxyzN)r   xyzNabNNxyz)abNNNz	([abc]*)xabcx)r%  r   z	([xyz]*)x)r%   r   z	(a)+b|aac)r  Nz(?P<i d>aaa)az(?P<id>aaa)az0,id)r  r<   z(?P<id>aa)(?P=id))r  r  z(?P<id>aa)(?P=xd)r   gz\g<1>z(.)\g<1>gg)r'  r&  z\Nr$  \N{LATIN SMALL LETTER A}z\pr  rH  z\PPz\P{Lu}zab{0,}bczab{1,}bcz	ab{1,3}bcz	ab{3,4}bcz	ab{4,5}bcz	ab{0,1}bczab{0,1}cza[b-a]z*az(*)bza{1,}b{1,}cza**za.+?cz
(a+|b){0,}z
(a+|b){1,}z(a+|b){0,1}z	([abc])*dabbbcd)r*  r   z([abc])*bcd)r  r\   z((((((((((a))))))))))10z((((((((((a))))))))))\10z((((((((((a))))))))))\41z(?i)((((((((((a))))))))))\41z(?i)abcrV  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)rA  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))rV  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)*)r  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)rF  r  z(?i)([abc])*bcd)r>  rg   z(?i)a|b|c|d|eEz(?i)(a|b|c|d|e)fr@  )r@  rG  z(?i)abcd*efgABCDEFGz(?i)ab*	XABYABBBZXAYABBBZz(?i)(ab|cd)eABCDE)rE  CDz(?i)[abhgefdc]ijHIJz(?i)^(ab|cd)ez(?i)(abc|)efr  z(?i)(a|b)c*d)BCDr  z(?i)(ab|ab*)bc)rV  rg   z(?i)a([bc]*)c*)rV  BCz(?i)a([bc]*)(c*d))r>  rO  Dz(?i)a([bc]+)(c*d)z(?i)a([bc]*)(c+d))r>  r  rL  z(?i)a[bcd]*dcdcdeADCDCDEz(?i)a[bcd]+dcdcdez(?i)(ab|a)b*c)rV  r  z(?i)((a)(b)c)(d))rV  rg   r  rP  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)rU  rU  NIJ)rV  rV  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(.*))rK  r  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   rM  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(?i)wz"(?x)w# comment 1
x y
# comment 2
zzjkl
abc
xyzr  r  zjkl
xyzabc
123re  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)NNrd  z((.)\1+)z.*dzabc
abdr  z[\41]!z(x?)?z	 (?x)foo r  z	(?x) foo z(?x)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   rg  )rx   r9  r  r;   ...z%Incorrect number of test fields: ({}))r-   r   r   r   MISSING_RPARENr=  UNKNOWN_GROUPr   rk   TRAILING_CHARSr  
BAD_ESCAPEBAD_CHAR_RANGENOTHING_TO_REPEATMULTIPLE_REPEAT
OPEN_GROUPr  r   appendrF   r}   subTestr|   r@   r   r)   rG  r0   r<  )r   r`  r  excvalrx   r9  r5  rb  
group_listr   rU   r#   ffieldss                 r   test_variouszRegexTests.test_various  s9   y

BEKKAy

 Rd.A.ABy

 Rd.A.AB	y


 BEKK1D1DEy

 )$EKK!!#y

 $T3c
;y

 $T2u{{!!#y

 %dB!!#y

 $T2u{{!!#y

" *4U[[  "#y

( sCs4)y

* *4eCjA+y

0 (r5;?1y

2 #D#uSz:3y

4 #D"eDk:5y

6 )$EKK  "7y

< c3c
3=y

> )$U3Z@?y

D CU[[$*@*@AEy

F ,Gy

H SVc\3c!fsl(;<Iy

J c3c
+Ky

L 9:Je346My

T D#uT{+Uy

V tS%+.Wy

X tS%+.Yy

Z b%+.[y

` !"2C$%'ay

d -.>$%'ey

h fc5S?3iy

n #FBd<oy

p vr5;/qy

r E$K0sy

v E$K0wy

x eO6LMyy

z eO6LM{y

| nc5Q#b'9I"g:B: "%b':*,/F:3 44 5}y

@ ).#N#%Ay

F .<c89;Gy

P E3e-Qy

R FBd,Sy

T ZU4[1Uy

V Rt5Wy

X FCv/Yy

\ E$K0]y

^ U6]3_y

` Rt5ay

b S%
*;<cy

d ZeJ.?@ey

h "b%++t':':;iy

j  ky

l E3e-my

n E2uT{+oy

p E2uT{+qy

r E2uT{+sy

t GS%,/uy

v GS%,/wy

x UCu.yy

z eS%,/{y

~ fc5=1y

@ hU8_5Ay

B fc5=1Cy

D eRt-Ey

F eRt-Gy

H hU8_5Iy

J fc5=1Ky

L eS%,/My

N hE$K0Oy

P UCu.Qy

T eS%,/Uy

V fb%+.Wy

X VS%,/Yy

Z fb%+.[y

\ VS%,/]y

^ %eBi(_y

` %eBi(ay

b E3e-cy

d E3e-ey

f Wc5>2gy

j Wb%+.ky

l ub%+.my

n uc5<0oy

p r5;/qy

r sE%L1sy

t uc5;/uy

v dCt-wy

x c5;/yy

z dCt-{y

| S"ekk4<<8}y

@ 3EKK6Ay

B CU[[$//:Cy

D S"ekk4+>+>?Ey

F S"ekk4+>+>?Gy

H 4eDk*Iy

J eS%,/Ky

L eS%,/My

N sE%L1Oy

P r5;/Qy

R sE%L1Sy

V r5;/Wy

X r5;/Yy

Z sE%L1[y

\ c5:.]y

^ c5:._y

` sE#J/ay

b b%+.cy

d b%+.ey

f r5;/gy

h UBd,iy

l UCs,my

n UCs,oy

p UBd,qy

r UBd,sy

t b%+.uy

v b%+.wy

x r5;/yy

z b%+.{y

| b%+.}y

~ c5:.y

B c5:.Cy

D sE#J/Ey

F eS%+.Gy

H fc5;/Iy

J UE5#45Ky

L 3E$K(My

N eRx1Oy

P tS%+.Qy

R vsE&M2Sy

T vsE&M2Uy

X eWeO&<=Yy

Z w.?(@A[y

\ ieEl3]y

^ eU;%78_y

` eU;%78ay

b eU:%67cy

d 3EKK)<)<=ey

f uc5<0gy

h BE$K(iy

j 2sE"I&ky

n #sE#J/oy

p T5%*<=qy

r Cy)9:sy

t KeDk2uy

v JU3Z0wy

x %})=>yy

z UCu6{y

| '2uT{3}y

~ 5%
*;<y

@ l(;<Ay

D 5%|)<=Ey

F 5%})=>Gy

H fgu5H/IJIy

J fgu5H/IJKy

L fgu5H/IJMy

N ieI.>?Oy

P iU4[9Qy

R %m(<=Sy

T VY6L0MNUy

V &wU7^DWy

Z "5%|1DE[y

\ &w @ : ]y

` &tWe = 7 ay

d &vr5;?ey

f &vr5;?gy

h &x% A ; iy

l #CeCj9my

n &wE$K@oy

p 5s$%'qy

t '7E2G,HIuy

x  5%
2CDyy

z D"eDk*{y

| tS%+.}y

~ 3e5y

@ Hc5<8Ay

B c5:.Cy

D '5%*@AEy

F 62uT{3Gy

H 5%0A*BCIy

J HeU3D-EFKy

N tUE+$67Oy

P eU;%78Qy

R ueK&89Sy

T u\':;Uy

V %l(;<Wy

X E5%*=>Yy

Z E5%*=>[y

\ %l(;<]y

^ HeU3D-EF_y

` 4%0B*CDay

d feU=%9:ey

f m(<=gy

h @%235iy

l +,J  ) *+my

r *eU3G-HIsy

t )UE-,@Auy

v &%)?@wy

x %U4[1yy

z &%y)9:{y

| %m(<=}y

B fb%++t7J7JKCy

D VVU?-CDEy

F !&&%2GHGy

H !&"ekk4;M;MNIy

N CeCj)Oy

P sBT-C-CDQy

R $U4[1Sy

T $E+$67Uy

V CeCj)Wy

X )#sE#J?Yy

Z CeCj)[y

\ S%*-]y

^ CeCj)_y

` S%*-ay

f E3e-gy

h E2uT{+iy

j E2uT{+ky

l E2uT{+my

n GS%,/oy

p GS%,/qy

t UCu.uy

v eS%,/wy

x fc5=1yy

z hU8_5{y

| 3h8}y

~ fc5=1y

@	 eRt-A	y

B	 eRt-C	y

D	 E$K0E	y

F	 hU8_5G	y

J	 3h8K	y

L	 (Cx9M	y

N	 (Cx9O	y

P	 (Bd4Q	y

R	 fc5=1S	y

T	 eS%,/U	y

V	 %eEl3W	y

X	 hE$K0Y	y

Z	 UCu.[	y

\	 U5\2]	y

`	 eS%,/a	y

b	 fb%+.c	y

d	 VS%,/e	y

f	 fb%+.g	y

h	 VS%,/i	y

j	 %eBi(k	y

l	 %eBi(m	y

n	 E3e-o	y

p	 E3e-q	y

r	 Wc5>2s	y

v	 Wb%+.w	y

x	 ub%+.y	y

z	 uc5<0{	y

|	 r5;/}	y

~	 sE%L1	y

@
 uc5;/A
y

B
 dCt-C
y

D
 dCt-E
y

F
 sBT-@-@AG
y

H
 S"ekk4<<8I
y

L
 3EKK6M
y

N
 4eDk*O
y

P
 eS%,/Q
y

R
 sE%L1S
y

T
 r5;/U
y

V
 sE%L1W
y

X
 r5;/Y
y

Z
 r5;/[
y

\
 sE%L1]
y

^
 eS%+._
y

b
 fc5;/c
y

d
 UE5#45e
y

f
 3EKK)?)?@g
y

h
 S"ekk4+A+ABi
y

j
 3E$K(k
y

l
 CU[[$//:m
y

n
 eRx1o
y

p
 tS%+.q
y

r
 vsE&M2s
y

t
 vsE&M2u
y

x
 S"ekk4+>+>?y
y

z
 S"ekk4+>+>?{
y

|
 eWeO&<=}
y

~
 w.?(@A
y

@ ieEl3Ay

B IsE%L9Cy

D CU[[$*>*>?Ey

F hU5\2Gy

H eU;%78Iy

J 4k(:;Ky

N eU;%78Oy

P 4k(:;Qy

R eU:%67Sy

T D%z):;Uy

V 3EKK)<)<=Wy

X uc5<0Yy

Z BE$K([y

\ 2sE"I&]y

^ (E5+AB_y

` FE5+?@ay

d #sE#J/ey

f T5%*<=gy

h Cy)9:iy

j KeDk2ky

l JU3Z0my

n %})=>oy

p UCu6qy

r '2uT{3sy

t 5%
*;<uy

v l(;<wy

z 5%|)<={y

| 5%})=>}y

~ fgu5H/IJy

@ fgu5H/IJAy

B fgu5H/IJCy

D ieI.>?Ey

F iU4[9Gy

H %m(<=Iy

J VY6L0MNKy

L &wU7^DMy

P "5%|1DEQy

R &w @ : Sy

V &tWe = 7 Wy

Z &vr5;?[y

\ &vr5;?]y

^ &x% A ; _y

b %c4s<cy

d )$U4[Aey

n )"b%++$$&oy

r -b"ekk$$&sy

x #CeCj9yy

z &wE$K@{y

| 5s$%'}y

@ '7E2G,HIAy

B  5%
2CDCy

D D"eDk*Ey

F tS%+.Gy

H 3e5Iy

J Hc5<8Ky

L sE%L1My

P r5;/Qy

R r5;/Sy

T r5;/Uy

V eEl3Wy

X eEl3Yy

Z U5\2[y

\ %eEl3]y

^ &#uV}5_y

` 8S%/:ay

b hU8_=cy

f 63f6gy

h %U4[1iy

j %U4[1ky

l UBd4my

n (Cx9oy

p hU8_=qy

r xeHo>sy

t xeHo>uy

v xU4[9wy

x 63f6yy

| 5#uU|4}y

~ uc5<8y

@ 8Rt5Ay

B %eEl3Cy

D eS%,7Ey

F %eEl3Gy

H &"eDk2Iy

J eEl3Ky

L &"eDk2My

N eEl3Oy

R eS%),Sy

T eS%),Uy

V sE%L1Wy

X sE%L1Yy

Z '3g7[y

\ "eDk2]y

^ 5"eDk2_y

` 5#uU|4ay

b E2uT{3cy

d E3e5ey

h 5#uT{3iy

j $U4[1ky

l $U4[1my

n 3EKK1D1DEoy

p b%++t||<qy

r sBT\\:sy

t tS%+.uy

v %eEl3wy

x E3e5yy

z E2uT{3{y

~ E3e5y

@ E2uT{3Ay

B E2uT{3Cy

D E3e5Ey

F %eDk2Gy

H &#uT{3Iy

J uZ'89Ky

L sBT-C-CDMy

N b%++t/E/EFOy

P sBd,Qy

T Rdoo>Uy

V %U8_5Wy

X 4eDk2Yy

Z 63f6[y

\ 63f6]y

^ b%++t/B/BC_y

` b%++t/B/BCay

b %%*@Acy

d E7E2C,DEey

f )S%,7gy

j 	3e=ky

l Rd.B.BCmy

n (Cu6oy

p (Cu6qy

r hU5\:sy

t D%{);<uy

v tUE+,>?wy

x D%{);<yy

z tUE+,>?{y

| D%z):;}y

@ eU:->?Ay

B  ueJ.?@Cy

D sBT-@-@AEy

F 5#uU|4Gy

H Bd,Iy

J r3b	*Ky

L hu_/EFMy

N u]/CDOy

P c3c
3Qy

R  ueK.@ASy

V YU9-=>Wy

X S%+6Yy

Z 
Cs4[y

\ WeU=-AB]y

^  U5\:_y

` gr5;7ay

b XueJ.?@cy

d VUE,,?@ey

f ueU<-@Agy

h ueU=-ABiy

l !&'59L3MNmy

n !&'59L3MNoy

p !&'59L3MNqy

r !)S%	2BCsy

t !)Rt=uy

v eUE-,@Awy

x  E ; 5 yy

| *7CwH}y

~ &ueU<5HIy

@ *7GU D > Ay

F *4% A ; Gy

J *62uT{CKy

L *62uT{CMy

N *8We E ? Oy

R )#tU3Z@Sy

T -dCtEUy

Z 'S%*=[y

\ ;CCj]y

` ?SCjay

d *7BdDey

h "#93#$&iy

l gw6K0LMmy

n $XueJ6GHoy

p b%+.qy

v 4eDk2wy

x XsE%L9yy

z #uU|<{y

| U4[1}y

~ U4[1y

@ &#uT{3Ay

D eS%*5Ey

F uc5:6Gy

H sE#J7Iy

J )%j8IJKy

P #L#uXGQy

T )-eI>NOUy

X 'c5?KYy

` S"ekk43F3FGay

b 0eFmLcy

p c3d,qy

r c3c
+sy

t c3c
+uy

z c5="{y

F  
E$KGy

L  U5\My

T  U5\Uy

^ FBd,_y

` U6]3ay

f _c5+=>gy

h U;-?@iy

j ]Cu6ky

l }c5<8my

n XsE(O<oy

t & H# B$ %uy

x  '5 B# <$ %yy

F &vw ? 9 Gy

L "b%++t?My

P ZeEl3Qy

T 2r5;;(;(;<Uy

V sCs,Wy

Z sCs,[y

` 5#uT{3ay

b 5#uU|4cy

d %eEl3ey

h {Cu>iy

l c5+>?my

p %eEl3qy

r  3h@sy

t  Cy1ABuy

x #9c59=yy

| sE%L1}y

~ sE%L1y

@ %eEl3Ay

B %eEl3Cy

L !'3g?My

P *Bd<Qy

T %U4[1Uy

X ub%+.Yy

\ tWe4F.GH]y

` "5%|1DEay

b !%l0CDcy

d "5%|1DEey

h sCs,iy

j BCFmky

n ?Fmoy

v AF7q6Q;895GVVX@A=GVVXv
  
!'c!25&--c%j9 "3 %gfE..x!6+ FE Wf5A%%*7177J+?%@F%*1Q4[F!&q$$VX6C    * 5&--e45 FE  Ra1g#>gE!Hg#>%#HI		AHHPQRsP   P0BUQ)BT*R$BU
T*BUUBUU
BU	UBV=U4BVV3BV=V<BV=c                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  dt        j                  d      d      d       | j                  t        j                  ddd      d       | j                  t        j                  dd	 d      d       y )
Nztest\?zresult\?\.
ztest?r  \1\1r%   rY   z\\1\\1c                      y)Nr|  rS   rT   s    r   rV   z-RegexTests.test_replacement.<locals>.<lambda>	  s    Gr   )r)   r-   rj   rz  rC   s    r   test_replacementzRegexTests.test_replacement	  s    9.@'J
	 	5'37>5%,,w*?EwO5)S97C5*;SA7Kr   c           	         t         j                  t         j                  z   t         j                  z   }|dz  }d|z   dz   |z   dz   }| j	                  t        t        t        j                  |                  | j                         y )Nr   r  r  r  )
r9  ascii_lowercasedigitsascii_uppercaser)   r   r"   r-   r.   r   )r   allsideregexps       r   test_common_prefixzRegexTests.test_common_prefix	  sk    $$v}}4v7M7MMQwtc!D(3.d5==#89:D<N<NOr   c                    | j                  t        j                  dd      j                  d      g d       | j                  t        j                  dd      j                  dd      dgddgf       | j                  t        j                  d	d
      j                  dd      dgg df       | j                  t        j                  dd      j                  dd      g dg df       | j                  t        j                  dd      j                  ddd      dgg ddgf       | j                  t        j                  dd      j                  d      dg       | j                  t        j                  dd      j                  d      ddg       | j                  t        j                  dd      j                  d      dg       y ) Nz(\w)+r   r:   r  z(\w{3})+r,  r   r  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??B E 	k8<EEaK:u~
&	(&F
!!Q5)5F)G	I%G
!!)!Q2J
(2*	+ 	%@
"(1a+tf6N&.	 	ot<EEaH%	&96BKKAN*	gs3<<Q?#Gr   c                    t        j                  dd      }| j                  |j                  ddd      d       t        j                  dd      }| j                  |j                  ddd      d       t        j                  d	d
      }| j                  |j                  ddd      d       t        j                  dd      }| j                  |j                  dd      d       t        j                  dd      }| j                  |j                         d       t        j                  dd      }| j                  |j                         d       y )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)rh  r  )   r-  zA\s*?.*?(\n+.*?\s*?){0,2}\(Xz
A
1
S
1 (X)r   r_   )r  rd  z	Derde\s*:zaaaaaa:
Derde:)rd     zaaaaa:
Derde:)rc   ra   )r-   r@   r)   rA   r   s     r   test_guardszRegexTests.test_guards	  s   LL3
%'1a*GHLL4
%'1a*GHLL98D1a*DELL8/J1'89LL'897+LL'787+r   c           
         d}t               }t               }|j                  d      D ]u  }|j                  d      \  }}|j                  ||f       |j                  ||f       |j                  ||f       |j                  ||f       |j                  ||f       w |D ]  }|D ]  }t	        j
                  d|z   dz   |      }|r;||f|vs(| j                  dj                  t        |      t        |                   \||f|v sc| j                  dj                  t        |      t        |                     y )Nu   I=i;I=ı;i=İ;=z(?i)\A\Zz{} matching {}z{} not matching {})	r[  r   updateaddr-   rB   r0   r<  r=  )r   pairsr  matchingpairrl  rm  rU   s           r   test_turkiczRegexTests.test_turkic	  s%   'E	5KK$Dzz#HCc3Z(LL#s$LL#s$LL#s$LL#s$ % C KK	C% 7=Sz1		"2"9"9%**#& ' SzX-		"6"="=eCj*#& ' ! r   c                 .   g d}| j                  t        j                  dd|      j                         d       | j                  t        j                  dd|      j                         d       | j                  t        j                  dd|      d        g d}| j                  t        j                  d	d
|      j                         d
       | j                  t        j                  dd|      j                         d       | j                  t        j                  d	d|      d        | j                  t	        t        t        j                  dg d                  | j                         | j                  t        j                  ddt        g d            g        | j                  t        j                  ddt        g d            dg       dg}| j                  t        j                  dd|      j                         d       ddg}| j                  t        j                  dd|      j                         d       dg}| j                  t        j                  dd|      j                         d       dg}| j                  t        j                  dd|      j                         d        | j                  t        j                  dd!|      j                         d        | j                  t        j                  d"d#      j                         d$       | j                  t        j                  d"d%      j                         d$       | j                  t        j                  d&d'g       j                         d(       y ))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}drf  z+solid QWERT)r  r  +solidr  STRASSE(?fi)\L<words>u   straßewordsrh  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/   r[  rA   r@   )r   rg  s     r   test_named_listszRegexTests.test_named_lists	  s   )%5{uw	-%9;uw	-%5|	 -%6uw	.%:Luw	.%6	 	d5==1F%$' ( )*.*<*<	> 	9:<=?	A568:B	E +%6
/w@@D I	 h'%6
/w@@D I	 99%6		) '&6	)&6
9	) 	&;
9;;?467	L&;
9;;?467	L 	&6BGLLN
	r   c           	          | j                  t        t        t        j                  d                  | j
                         | j                  t        t        t        j                  d                  | j
                         | j                  t        t        t        j                  d                  | j
                         | j                  t        t        t        j                  d                  | j
                         | j                  t        t        t        j                  d                  | j
                         | j                  t        t        t        j                  d                  | j
                         d}| j                  t        j                  d|      d        | j                  t        j                  d	|      j                  d
d      d       | j                  t        j                  d|      d        | j                  t        j                  d|      d
   d       | j                  t        j                  d|      d
   d       d}| j                  t        j                  d|      j                  d
d      d       | j                  t        j                  d|      j                  d
d      d       | j                  t        j                  d|      j                  d
d      d       | j                  t        j                  d|      j                  d
d      d       | j                  t        j                  d|      j                  d
d      d       | j                  t        j                  d|      j                  d
d      d       | j                  t        t        t        j                  d                  | j
                         | j                  t        j                  dd      j                  d
d      d       | j                  t        j                  dd      j                  d
d      d        | j                  t        j                  d!d      j                  d
d      d"       | j                  t        j                  d#d$      j                  d
d      d%       | j                  t        j                  d#d&      d        | j                  t        j                  d'd(      j                  d
d      d)       | j                  t        j                  d*d+      j                  d
d      d,       | j                  t        j                  d*d-      j                  d
d      d       | j                  t        j                  d.d-      j                  d
d      d/       | j                  t        j                  d0d1      j                  d
d      d       | j                  t        j                  d0d2      j                  d
d      d3       | j                  t        j                  d0d4      j                  d
d      d3       | j                  t        j                  d0d5      j                  d
d      d3       | j                  t        j                  d0d6      j                  d
d      d       | j                  t        j                  d0d7      j                  d
d      d       | j                  t        j                  d0d8      j                  d
d      d       | j                  t        j                  d0d9      j                  d
d      d:       | j                  t        j                  d0d;      j                  d
d      d:       | j                  t        j                  d0d<      j                  d
d      d:       | j                  t        j                  d0d=      d        | j                  t        j                  d0d>      d        | j                  t        j                  d0d?      d        | j                  t        j                  d0d@      d        | j                  t        j                  d0dA      d        | j                  t        j                  dBdC      j                  d
d      dD       | j                  t        j                  dEdC      j                  d
d      dF       | j                  t        j                  dGdH      j                  d
d      dI       | j                  t        j                  dGdJ      d        | j                  t        j                  dGdK      j                  d
d      dL       dM}| j                  t        j                  dN|      j                  d
d      dO       | j                  t        j                  dP|      j                  d
d      dQ       | j                  t        j                  dR|      j                  d
d      dS       | j                  t        j                  dTdUdVj                         W      dXdYg       | j                  t        j                  dTdZdVj                         W      d[dXg       | j                  t        j                  d\dZdVj                         W      dYdXg       | j                  t        j                  d]dUdVj                         W      d^dXg       | j                  t        j                  d_dUdVj                         W      dYdXg       | j                  t        j                  d]dZdVj                         W      dXdYg       | j                  t        j                  d`dadbj                         W      dcddg       | j                  t        j                  d`dedbj                         W      dfdcg       | j                  t        j                  dgdedbj                         W      dddcg       | j                  t        j                  dhdadbj                         W      didcg       | j                  t        j                  djdadbj                         W      dddcg       | j                  t        j                  dhdedbj                         W      dcddg       | j                  t        j                  dkdl      j                         dm       | j                  t        j                  dndl      j                         dm       | j                  t        j                  dodp      j                         dq       | j                  t        j                  drds      dsdtg       | j                  t        j                  dudv      dvdtg       | j                  t        j                  dwdx      j                         dy       | j                  t        j                  dwdz      j                         d{       | j                  t        j                  dwd|      j                         d}       | j                  t        j                  dwd~      d        | j                  t        j                  dwd      j                         d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  d       | j                  t        j                  dd      j                  g ddgg f       | j                  t        t        j                  dd            d       y )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)rh  rh  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   rd  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)r-  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;   r-  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}rq  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   r-  r_   r`   r;   z(?:fo){e<=1}|(?:fo){e<=2}FOT)r)   r   r"   r-   r.   r   r@   rA   r/   r   r5  rB   	fullmatchfuzzy_countsfuzzy_changesr(  r  s     r   
test_fuzzyzRegexTests.test_fuzzy4
  sU   d5==#ABC


	d5==#<=>


	d5==#>?@


	d5==1K#LMN


	d5==1Q#RST


	d5==1P#QRS


	 ?&DdK
	&D
Q
.	0&94@$G&<dCAF
	&;TB1E
	 5&=tDII!
	 &A
Q
.	0&=tDII!
 	"&A
Q
.	0&:DAFFq!L
	&>EJJ1
 	" 	d5==1N#OPQ


	 	m
!!%a-=	?&7
!!%a-=	?&7
!!%a-A	C 	&6
41:'7	9&6GN 	&@
#tAqz+=	? 	&9:FKKA
	 &9
&((,Q
4D	F&=
&((,Q
4H	J 	&8(CHHAN
	&8)DII!
	 &8)DII!
	 &8)DII!
	 &8(CHHAN
	&8(CHHAN
	&8(CHHAN
	&8'BGG1M
	&8'BGG1M
	&8'BGG1M
	&8*EtL&8*EtL&8*EtL&8)DdK&8)DdK
 	&H
466:d1aj C	 	&L
466:d1aj C	
 	&9;GLLQ
	 &9:FM&9:FKKA
	 O&?FKKA
$	&&@$GLLQ
#	%&;TBGG1M
	!
 	'=
y'8:<A5>	K'=
y'8:<BE?	L'A
y'8:<A5>	K'A
y'8:<BE?	L'B
y'8:<A5>	K'A
y'8:<A5>	K'>
 
(8(8(:<>Df=M	O'>
 
(8(8(:<>Ev=N	P'B
 
(8(8(:<>Df=M	O'B
 
(8(8(:<>Ev=N	P'C
 
(8(8(:<>Df=M	O'B
 
(8(8(:<>Df=M	O 	&99ELLN
	&=
VX~	/&:
fh 0	2 	'8'BW
E 	|U;eR[I 	%D
"dfg	/%D
 DFG	-%D
!TVW	.%D
 $	&%D
 ""&$&'	3 	)>
y	*)B
y	* 	)>
,		+)B
,		+ 	)G
!\9	. 	&X
,}~sB.G	I 	ekk*EtLM
	r   c                 
   | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d	       | j                  t        j                  dd
      d d  d       | j                  t        j                  dd      d        | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd
      d d  d       | j                  t        j                  dd      d        | j                  t        j                  dd      d d  d       | j                  t        j                  dd      j                  d      g d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      j                  d      g d       | j                  t        j                  dd      d d  d       | j                  t        j                  dd      d d  d       | j                  t        j                  d d!      d d  d"       | j                  t        j                  d#d!      d d  d"       t        j                  d$      }| j                  t        |j                  d%            d&       | j                  t        |j                  d'            d(       | j                  t        |j                  d)            d&       | j                  t        |j                  d*            d(       | j                  t        |j                  d+            d(       | j                  t        |j                  d,            d(       | j                  t        |j                  d-            d&       | j                  t        |j                  d.            d&       | j                  t        |j                  d/            d(       | j                  t        |j                  d0            d&       | j                  t        |j                  d1            d&       | j                  t        |j                  d2            d&       y )3Nz(\w)(?:(?R)|(\w?))\1rY   )rY   r%   r   r   )r   r\   r   abba)r
  r\   Nkayak)r  r  Npaper)papr  r\   dontmatchmez(?r)\2(?:(\w?)|(?R))(\w))rY   r   r%   )r   r   r\   )r
  Nr\   )r  Nr  )r  r\   r  z\(((?>[^()]+)|(?R))*\)
(ab(cd)ef))r  r~  r:   )r  r  (cd)r~  z(?r)\(((?R)|(?>[^()]+))*\))r  r  )r~  r  r  r  z\(([^()]+|(?R))*\)zsome text (a(b(c)d)e) more text)(a(b(c)d)e)rM  z(?r)\(((?R)|[^()]+)*\))r  r\   z!(foo(\(((?:(?>[^()]+)|(?2))*)\)))foo(bar(baz)+baz(bop)))r  r  z(bar(baz)+baz(bop))zbar(baz)+baz(bop)z%(?r)(foo(\(((?:(?2)|(?>[^()]+))*)\)))zv^\s*(<\s*([a-zA-Z:]+)(?:\s*[a-zA-Z:]*\s*=\s*(?:'[^']*'|"[^"]*"))*\s*(/\s*)?>(?:[^<>]*|(?1))*(?(3)|<\s*/\s*\2\s*>))\s*$z<foo><bar></bar></foo>Tz<foo><bar></foo></bar>Fz<foo><bar/></foo>z<foo><bar></foo>z<foo bar=baz/>z<foo bar="baz">z<foo bar="baz"/>z<    fooo   /  >z	foo<foo/>z<foo>foo</foo>z<foo><bar/>foo</foo>z<a><b><c></c></b></a>)r)   r-   r@   r  r.   r(  )r   rgxs     r   test_recursivezRegexTests.test_recursive
  s   &=tDaI
	&=uEqJ
	&=vFK
	&=wGL
	 &=wGL
	&=}M
	 	&A4H!M
	&A5I1N
	&A6JA  	"&A7KQ !	#&A7KQ 	 &A
	  	&?N
#	%&?
 %?	A 	&C
2	4&C
 %?	A 	&;
+-./23G	I 	&?
+-./23G	I 	&J
"$%&)+	 
 	&N
"$%&)+	 
 mm  Z  [cjj)ABCTJcjj)ABCUKcjj)<=>Ecjj);<=uEcjj)9:;UCcjj):;<eDcjj);<=tDcjj);<=tD 	cjj56>cjj)9:;TBcjj)?@A4Hcjj)@ABDIr   c                    t        j                  d      }| j                  t        j                  |      |u        | j                  t        j                  |      |u        |j                  d      }| j                  t        j                  |      |u       | j                  t        j                  |      |u       | j                  |j                  d u       t        j                  |      }|j                          | j                  |j                  d u       | j                  |j                  d u        t        j                  dd      }t        j                  |      }| j                  t        |      j                         d       | j                  t        |      j                         d       t        j                  dd      }t        j                  |      }| j                  t        |      j                         d       | j                  t        |      j                         d       t        j                  dd      }t        j                  |      }| j                  t        |      d       | j                  t        |      d       t        j                  dd      }t        j                  |      }| j                  t        |      d       | j                  t        |      d       y )Nr\   rP   r  r   r   rP  )r-   r.   
assertTruecopydeepcopyrB   r9  detach_stringr  r)   r  r   r   )r   rrU   m2r  it2s         r   	test_copyzRegexTests.test_copy<  s   MM#		!)*a(A-.
 GGCL		!A-.a(12,-YYq\
,-		T)* ^^C&iimb)3/c*C0 ^^C&mmBb)3/c*C0 __S%(iimb3'cC( __S%(mmBb3'cC(r   c                    | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d	       | j                  t        j                  dd      j                  d      d       y )
Nr  z{0} => {2} {1}rx  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_formatg  s    N4D
*	,$B
Y()2	4 	^5E
/	1%C
Y()7	9 	^
W-.0D	Fr   c           
         | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd	            d       | j                  t        t        j                  dd
d	            d       | j                  t        t        j                  dd
dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd	            d       | j                  t        t        j                  dd
d	            d       | j                  t        t        j                  dd
dd            d       y )Nr   Tr%  Fr;   )r8  xabcr:   )r7  r  r   r  z(?r)abcr)   r(  r-   r  rC   s    r   test_fullmatchzRegexTests.test_fullmatchu  s   eoofe<=tDeooff=>FeooffQGH$Oeooff!DEtLeoofg1EFNeoofg1 	 	eooj%@A4Heooj&ABEJeooj&KL
	 	eooj&aHI
	eooj'qIJ
	eooj'q 	r   c           	      0   | j                  t        j                  ddd      d       | j                  t        j                  dt        d      t        d            d       | j                  t        j                  ddd      d       | j                  t        j                  dt	        d      t	        d            d       | j                  t        j                  dt        d      t        d            d       | j                  t        j                  dt        d      t        d            d       d	t        d	      fD ]  }| j                  t        j                  d
|      g d       t        j                  dk\  rQ| j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | j                  t        j                  d|      g d        dt	        d      t        d      t        d      fD ]  }| j                  t        j                  d|      g d       t        j                  dk\  rQ| j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | j                  t        j                  d|      g d        dt        d      fD ]z  }| j                  t        j                  d|      g d       | j                  t        j                  d|      g d       | j                  t        j                  d |      g d!       | d"t	        d"      t        d"      t        d"      fD ]z  }| j                  t        j                  d#|      g d$       | j                  t        j                  d%|      g d$       | j                  t        j                  d&|      g d'       | dt        d      fD ]  }| j                  t        j                  d|      j                         d(       | j                  t        j                  d)|      j                         d*       | j                  t        j                  d)|      j                  d+      d       | j                  t        j                  d)|      j                  d,      d       | j                  t        j                  d)|      j                  d,d,      d-        dt	        d      t        d      t        d      fD ]  }| j                  t        j                  d|      j                         d(       | j                  t        j                  d.|      j                         d/       | j                  t        j                  d.|      j                  d+      d       | j                  t        j                  d.|      j                  d,      d       | j                  t        j                  d.|      j                  d,d,      d0        y )1Nr&   r\   r   xaz   yrF  s   xyzs   xazr   r   r   r   r   r   r   r   r   r   s   :a:b::c   :)r   rF  r  r   r  s   :*)r   r   rF  r   r  r   r  r   s   (:*))r   r,  r   r   rF  r,  r   r   r     ::r   r   r  r   r   )r   rF  r  r  )r   r,  rF  r,  r  r-  r  r   r   r   r   r   r   s
   a:b::c:::ds   :+)r,  r-  s   :::s   (:+)s   (:)(:*)))r,  r   )r,  r,  )r,  r-  rS   r   r   r   r:   r  s   (a))rF  )rF  rF  )r*   r-   rj   r   r   	bytearray
memoryviewr   r   r   r/   r)   rB   r5  r   )r   r9  s     r   test_issue_18468zRegexTests.test_issue_18468  sY   eiiS%8%@eii[-=
e
$	&eiidF;VDeiimD.A

!"(	*eiiio
F
$	&eiij.>
V
%	'  Y!77F!!%++c6": = 9,%%ekk$&? B( )%%ekk&&&A DL M %%ekk$&? B %%ekk&&&A D, - 8 "=#<
J
J!79F!!%++dF"; > 9,%%ekk%&@ C3 4%%ekk'6&B E  %%ekk%&@ C %%ekk'6&B E1 29  #K$==F!!%--f"= @ !!%--"? B !!%--	6"B E' ( > %mM&B
M
"J}$=?F!!%--v"> A !!%--"@ C !!%--
F"C F1 2? ;s++FU[[f5<<>CU[[7>>@&IU[[7==a@#FU[[7==a@#FU[[7==aC F  , ]40)D/
T
FU[[v6==?DU[[8??A7KU[[8>>qA4HU[[8>>qA4HU[[8>>q!D G r   c                 h
   | j                  t        j                  ddd      j                  d       | j                  t        j                  ddd      j	                         d       | j                  t        j                  ddd      j                  d       | j                  t        j                  ddd      j	                         d       | j                  t        j                  dd	d      d        | j                  t        j                  d
dd      j                  d       | j                  t        j                  d
dd      j	                         d       | j                  t        j                  d
dd      j                  d       | j                  t        j                  d
dd      j	                         d       | j                  t        j                  ddd      j                  d       | j                  t        j                  ddddg      j                  d       | j                  t        j                  ddddg      j	                         d       | j                  t        j                  ddddg      j                  d       | j                  t        j                  ddddg      j	                         d       | j                  t        j                  ddddg      j                  d       | j                  t        j                  ddddg      j	                         d       | j                  t        j                  ddddg      j                  d       | j                  t        j                  ddddg      j	                         d       | j                  t        j                  ddddg      d        | j                  t        j                  ddd      j	                         d       | j                  t        j                  ddd      j	                         d       | j                  t        j                  ddd      j	                         d       | j                  t        j                  ddd      j	                         d       | j                  t        j                  ddd      j	                         d       | j                  t        j                  dd d      d        | j                  t        j                  dd!d      d        y )"Nr  r\   Tpartialr0  r   r  r>   catchzabc\w{3}r,  Frh  rq  r  z\d{4}$1234z	\L<words>post)r3  r  rj  r7  r  POST   poﬆPOSz	[a-z]*4R$r\  ab4a4a4R4aa44)r)   r-   rB   r3  rA   rC   s    r   test_partialzRegexTests.test_partial  s   T3=EEtLT3=BBDfMWeTBJJ
	WeTBGGI L 	WgtDdK[(	([(	(['	'['	( 	YEMM
	 	\64!'5	*\64$&&	*\5$!'4	)\5$$&&	* 	%6%gu	.%6"dff	.%6t%gt	-%6t"dff	.%6
ug'(,	. 	\3EJJL
	\4FKKM
	\5$GLLN
	\4FKKM
	\5$GLLN
	\4FM\5$GNr   c                    | j                  t        t        j                  dt        j                              d       | j                  t        t        j                  dt        j                              d       | j                  t        j
                  dd      ddg       | j                  t        j
                  d	d      ddg       | j                  t        j
                  dd
      dg       | j                  t        j
                  dd      dg       | j                  t        j
                  dd      dg       | j                  t        j                  dd      D cg c]  }|j                          c}dg       | j                  t        j                  ddt        j                  t        j                  z        j                  d      d       | j                  t        j                  ddt        j                  t        j                  z        j                  d      d       | j                  t        j                  ddt        j                  t        j                  z        j                  d      d       | j                  t        j                  dd      j                         d       | j                  t        t        j                  ddt        j                              d       | j                  t        j                  dd      j                  dd      d        | j                  t        j                  d!d"      j                  dd      d#       | j                  t        j                  d$d%      j                  d      d%       | j                  t        j                  d&d'      d        | j                  t        j                  d(d)      j                  d      d       | j                  t        j                  d*d+      j                  d      d,       | j                  t        j                  d*d-      j                  d      d.       | j                  t        j                  d*d/      j                  d      d0       | j                  t        j                  d1d/      j                         d/       | j                  t        j                  d2d3      j                         d4       | j                  t        j                  d5d+      j                         d6       | j                  t        j                  d5d-      j                         d7       | j                  t        j                  d8d      j                  d      d       | j                  t        j                  d9d/t        j                        j                  d      d/       | j                  t        j                  d:d;      j                  dd      d<       | j                  t        j                  d=d;      j                  dd      d>       | j                  t        j                  d?d;      j                  dd      d@       | j                  t        j                  dAd;      j                  dd      dB       | j                  t        j                  dCdD      j                  d      d+       | j                  t        j
                  dEdFdGdHgI      g dJ       | j                  t        j
                  dKdF      g dL       | j                  t        j
                  dMdF      g dJ       | j                  t        j
                  dNdF      g dJ       | j                  t        j                  dOd+      j                  dddP      dQ       | j                  t        j                  dRdS      j                  dd      dT       | j                  t        j                  dUd+      j                  dd      dV       | j                  t        j                  dWdX      d        | j                  t        j                  dYdZ      d        | j                  t        j                  | j                   d[        | j                  t        j                  d\d]      j                  d      d^       | j                  t        j                  d_d`      j                  d      d`       | j                  t        j                  dadb      d        | j                  t        j                  dcdd      d        | j                  t        j                  dedf      j                  dddP      dg       | j                  t        j
                  dhdi      d"djg       | j                  t        j
                  dkdi      d"djg       | j                  t        j
                  dldi      d"djg       | j                  t        j
                  dmdi      d"djg       | j                  t        j                  dndo      j                         do       | j                  t        j                  dpdq      D cg c]  }|j                          c}drdsg       | j                  t        j                  dtdu      j#                  dv      g dw       | j                  t        j                  | j$                  dx        dy}dz}| j                  t        j                  ||t        j&                        d   d{       | j                  t        j
                  d|d}      d~g       | j                  t)        t        j*                  dddt        j,                              t)        d             | j                  t        j                  dd      d        | j                  t        j                  dd      j/                  d      dd7g       | j                  t        j*                  dd d      d       t        j                  dt        j                        }| j                  |j                  d      d        | j                  |j                  d      g        | j                  t        j                  | j0                  d        | j                  t        j2                  dd      d       | j                  t        j2                  dd      d       | j                  t        j2                  d      d       | j                  t        j2                  dd      d       | j                  t        j2                  dd      d       | j                  t        j2                  d      d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       t        j                  dt        j4                  t        j6                  z        }| j                  |j                  d      D cg c]  }|j                          c}dg       | j                  |j                  d      dg       d}| j                  |j                  |      D cg c]  }|j                          c}dg       | j                  |j                  |      dg       t        j                  dt        j4                  t        j8                  z  t        j6                  z        }| j                  |j                  d      D cg c]  }|j                          c}dg       | j                  |j                  d      dg       d}| j                  |j                  |      D cg c]  }|j                          c}dg       | j                  |j                  |      dg       t:        j<                  dk\  r(| j                  t        j*                  ddd      dS       n'| j                  t        j*                  ddd      d       | j                  t        j*                  ddd      dS       t:        j<                  dk\  r(| j                  t        j*                  ddd      d       n'| j                  t        j*                  ddd      d       | j                  t        j*                  ddd      d       | j                  t        j*                  dddt        j>                        d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j                  dd      j@                  d       | j                  t        j
                  dd      g        | j                  t        j*                  ddd      d       | j                  t        t        j                  d+d+t        jB                              d       | j                  t        j
                  ddë      ddg       | j                  t        j
                  ddë      ddg       | j                  t        j
                  ddë      ddg       | j                  t        j
                  ddë      ddg       | j                  t        j                  ddȄ        | j                  t        j                  dd+      j                  dddP      dʫ       | j                  t        j                  dd+      j                  dddP      dʫ       djE                  d̈́ tG        dΫ      D              }| j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         tI        tG        d            }| j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d |                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        djE                  t        j
                  d|                  t)        djE                  t        j
                  d|                         | j                  t)        t        j                  d	d
      j                               t)        d             | j                  t        j                  dd      j                         d       | j                  t        j*                  ddd      d       | j                  t        j*                  ddd      d       | j                  t        jJ                  ddd      d       | j                  t        jJ                  ddd      d       | j                  t        jL                  ddd      j                         d7       | j                  t        jL                  ddd      jN                  d       | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      j                         d       | j                  t        j                  dd      j                         d6       | j                  t        j                  dd      d        | j                  t        j
                  d d!      g d"       | j                  t        j
                  d#d!      g d"       | j                  t        j                  d$d%      D cg c]  }|j                          c}g d&       | j                  t        j                  d'd%      D cg c]  }|j                          c}g d&       | j                  t        j                  d(d)      d   d)       | j                  t        j                  d(d*      d   d*       | j                  t        j                  d+d,      d   d,       | j                  t        j                  d-d.      d   d.       | j                  t        j                  d/d      j                  dd      d0       | j                  t        j
                  d1d2      d3d4g       | j                  t        j
                  d5d2      dd6g       | j                  t        j                  d7d      j                  dd      d8       | j                  t        j
                  d9d2      d:dg       | j                  t        j
                  d;d2      d6dg       | j                  t        j                  d<d=      d   d=       | j                  t        j                  d>d+      j                  d?      d        | j                  t        j                  d>d+      j#                  d?      d+g       | j                  t        j                  d@dA      d   dB       | j                  t        j                  dCdA      d   dB       | j                  t        j                  dDdA      d        | j                  t        j                  dEdA      d   dA       | j                  t        j                  dFdG      d   dG       | j                  t        j                  dFdH      d   dI       | j                  t        j                  dJdG      d   dK       | j                  t        j                  dJdH      d   dI       | j                  t        j                  dLdH      d   dH       | j                  t        j                  dLdM      d   dI       | j                  t        j                  dNdM      d   dI       | j                  t        j                  dOdM      d   dI       | j                  t        j                  dPdA      d        | j                  t        j                  dQdA      d   dA       | j                  t        j                  dRdG      d   dG       | j                  t        j                  dRdH      d   dI       | j                  t        j                  dSdH      d   dH       | j                  t        j                  dSdM      d   dI       | j                  t        j                  dTdM      d   dI       | j                  t        j                  dUdM      d   dI       | j                  t        j                  dVdG      d   dG       | j                  t        j                  dVdH      d   dI       | j                  t        j                  dWdG      d   dK       | j                  t        j                  dWdH      d   dI       | j                  t        j                  dXdH      d   dH       | j                  t        j                  dXdM      d   dI       | j                  t        j                  dYdM      d   dI       | j                  t        j                  dZdM      d   dI       | j                  t        j                  d[dG      d   dG       | j                  t        j                  d[dH      d   dI       | j                  t        j                  d\dH      d   dH       | j                  t        j                  d\dM      d   dI       | j                  t        j                  d]dM      d   dI       | j                  t        j                  d^dM      d   dI       d_}	| j                  tQ        t        j
                  d`|	            d       | j                  t        j                  dadb      j                         d7       | j                  t        j                  dcdd      d   dd       t        j                  de      }
df}| j                  |
j                  |      D cg c]  }|j                  ddP       c}dgdhg       | j                  t        j                  didjt        j&                        j                         dk       | j                  t        j                  dldjt        j&                        j                         dm       | j                  t        j                  dndo      j                         dp       | j                  t        j                  dqdo      d        | j                  t        j                  drds      j                         dt       | j                  t        j
                  drdu      dvdwg       | j                  t        j                  dxdy      j                  dd      dz       | j                  t        j                  d{dy      j                  dd      dz       | j                  t        j*                  dxd|dy      d}       | j                  t        j*                  d{d|dy      d}       | j                  t        j                  d~ddg      j                         d       | j                  t        j                  dddg      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       t        j                  dddg      }tS        jT                  |      }tS        jV                  |      }| j                  |j                  d      j                         d4       | j                  t        j                  ddt        j&                        j                         dp       | j                  t        j                  ddt        j&                        j                         d       | j                  t        j                  ddt        j&                        d        | j                  t        j                  ddt        j&                        j                         dp       | j                  t        j                  ddt        j&                        j                         d       | j                  t        j                  ddt        j&                        d        | jY                  t        j                  d        | jY                  t        j                  d        | j                  t        t        j                  d            d       | j                  t        t        j                  d            d       | j                  t        j
                  ddt        jZ                        ddg       | j                  t        j                  ddd      j                         d       d}d}| j                  t        t        j                  d|z   |            d       | j                  t        t        j                  d|z   |            d       | j                  t        t        j                  d|z   |            d       | j                  t        t        j                  d|z   |            d       | j                  t        t        j                  d|z   |            d       | j                  t        t        j                  d|z   |            d       | j                  t        t        j                  ddddg            d       | j                  t        t        j                  ddddg            d       | j                  t        t        j                  ddddg            d       | j                  t        t        j                  ddddg            d       | j                  t        j                  ddddg      j                         d       | j                  t        j                  ddddg      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      d        | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       d}d}| j                  t        t        j                  ||            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dÐd            d       | j                  t        t        j                  dĐd            d       | j                  t        t        j                  dŐdƫ            d       | j                  t        j                  dǐdȫ      j                         dɫ       | j                  t        j                  dʐdt        j&                        j                         d       | j                  t        j                  dʐdt        j&                        j@                  d       | j                  t        j                  d̐dt        j&                        j                         d       | j                  t        j                  d̐dt        j&                        j@                  d       | j                  t        j                  d͐dt        j&                        j                         dϫ       | j                  t        j                  d͐dt        j&                        j@                  dЫ       | j                  t        j                  dѐdt        j4                  t        j8                  z        j                         dӫ       | j                  t        j
                  dԐd2      d6g       | j                  t        j
                  dՐd2      d6g       | j                  t        j
                  d֐d׫      dؐdg       | j                  t        j
                  dڐd׫      g        | j                  t        j
                  dېd׫      dg       | j                  t        j
                  dܐd׫      g dݢ       | j                  t        j                  dސd߫      j                         d       | j                  t        j                  dd߫      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd߫      j                         d       | j                  t        j                  dd߫      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d       | j                  t        j2                  ddd      d       | j                  t        j2                  ddd      d       | j                  t        j2                  ddd      d       | j                  t        j2                  ddd      d       | j                  t        j2                  d      d       | j                  t        j                  ddb      j                         d6       | j                  t        j                  dd      j                         d6       | j                  t        j                  dd      j                         d       | j                  t        j                  dd̫      j                         d       | j                  t        j                  dd̫      j                         d       | j                  t        j                  dd"      j                         d       | j                  t        j                  dd"      j]                         dd i       | j                  t        j                  dd"      j_                         dd+gi       | j                  t        j                  dd"      j                         d       | j                  t        j                  dd"      j]                         dd i       | j                  t        j                  dd"      j_                         dd+gi       | j                  t        j                  dd"      j                         d       | j                  t        j                  dd"      j]                         dd i       | j                  t        j                  dd"      j_                         dd+gi       | j                  t        t        j                  d d            d       | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      j                         d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  d	d            d       | j                  t        t        j                  d
d            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        jL                  dd"      j#                  d      g d       | j                  t        jL                  dd"      j                  d      d       | j                  t        jL                  dd"      j#                  d      g d       | j                  t        jL                  dd"      j                  d      d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  ddd      jN                  d       | j                  t        j                  d dd      jN                  d       | j                  t        j                  d!dd      jN                  d       | j                  t        j                  d!dd      jN                  d       | j                  t        j                  d"dd      jN                  d       | j                  t        j                  d"dd      jN                  d       | j                  t        j                  d#dd      jN                  d       | j                  t        j                  d$dd      jN                  d       | j                  t        j                  d$dd      jN                  d       | j                  t        j                  d%dd      jN                  d       | j                  t        j                  d%dd      jN                  d       | j                  t        j                  d&dd      jN                  d       | j                  t        j                  d'dd      jN                  d       | j                  t        j                  d'dd      jN                  d       | j                  t        j                  d(dd      jN                  d       | j                  t        j                  d)dd      jN                  d       | j                  t        j                  d*dd      jN                  d       | j                  t        j                  d+dd      jN                  d       | j                  t        j                  d,dd      jN                  d       | j                  t        j                  d-dd      jN                  d       | j                  t        j                  d+d+d      jN                  d       | j                  t        j                  d,d+d      jN                  d       | j                  t        j                  d-d+d      jN                  d       | j                  t        j                  d.dd      jN                  d       | j                  t        j                  d/dd      jN                  d       | j                  t        j                  d0dd      jN                  d       | j                  t        j                  d1dd      jN                  d       | j                  t        j                  d2dd      jN                  d       | j                  t        j                  d3dd      jN                  d       | j                  t        j                  d1d+d      jN                  d       | j                  t        j                  d2d+d      jN                  d       | j                  t        j                  d3d+d      jN                  d       | j                  t        j                  d4d5d      jN                  d       d6}d7}	t        j                  ||	t        j&                        }| j                  |j@                  d       | j                  |j`                  g d8gg f       | j                  t        j                  d9d:      j@                  d;       | j                  t        j                  d9d<      j@                  d       | j                  t        j
                  d=d>      d>g       | j                  t        t        j                  d?d+            d       | j                  t        t        j                  d@d+            d       | j                  t        jL                  dAdA      j                         d4       | j                  t        j                  dBdC      j_                         dDgg dDgdE       | j                  t        t        j                  dFdG            d       | j                  t        t        j                  dHdG            d       | j                  t        j                  dIdJ      j`                  g g g dKf       | j                  t        j                  dLd      j@                  dM       | j                  t        j                  dLd      j`                  dgg dgf       | j                  t        j                  dNd      j@                  dO       | j                  t        j                  dNd      j`                  g g dgf       | j                  t        j                  dPd      j@                  dO       | j                  t        j                  dPd      j`                  g g dgf       | j                  t        j                  dQdR      j@                  dS       | j                  t        j                  dTdR      j@                  d       | j                  t        j                  dUdR      j@                  d       | j                  t        j                  dVdW      j@                  dX       | j                  t        j                  dYdW      j@                  dX       | j                  t        jL                  dZd[      j@                  d       | j                  t        jL                  d\d[      j@                  d       | j                  t        j                  d]d^      d        | j                  t        t        j                  d_            d       | j                  t        t        j                  d`            d       | j                  t        j
                  dadb      g dc       | j                  t        j
                  dddb      g dc       | j                  t        j                  dedft        jb                        j@                  dg       | j                  t        t        j                  dhd            d       | j                  t        t        j                  did            d       | j                  t        j                  djdk      j                         dk       | j                  t        j                  djdl      d        | j                  t        j                  dmdn      j                         dn       | j                  t        j                  dmdo      d        | j                  t        j                  dmdn      j`                  g dpgg f       | j                  t        j                  dqdn      j                         dn       | j                  t        j                  drdn      j`                  g dpgg f       | j                  t        j                  ds      je                  dt      g du       | j                  t        j                  ds      je                  dv      g dw       | j                  t        j                  dx      j                  dy      d        | j                  t        j                  dz      j                  d{      d        t        j                  d|t        j                  t        jf                  z        }| j                  |j                  d}      j                         d}       | j                  |j                  d~      j                         d       | j                  |j                  d      j                         d       | j                  |j                  d      j                         d       d}d}t        j                  ||t        j&                        }| j                  |j                         d       | j                  |j]                         dddddd       t        j                  ||t        jZ                        }| j                  |j                         d       | j                  |j]                         dddddd       d}d}t        j                  ||t        j&                        }| j                  |j@                  d;       | j                  |j`                  g g g f       d}t        j                  ||t        j&                        }| j                  |j@                  dX       | j                  |j`                  ddgg g f       | j                  t        j*                  ddd      d       | j                  t        jJ                  ddd      d       | j                  t        j                  dd      ji                  d      d      f | j                  t        j                  dd      jk                  d      d       | j                  t        j                  dd      d        | j                  t        j                  ddt        j                        d        | j                  t        j                  dd      j                         d7       | j                  t        j                  dd      j                         d7       | j                  t        j                  dd      d        | j                  t        j                  dd      j                         d6       | j                  t        j                  dd"      jm                         d"gg df       | j                  t        j                  dd"      jo                         d4gg df       | j                  t        t        jL                  dd            d       | j                  t        t        jL                  dd            d       | j                  t        j                  ddb      d        | j                  t        j                  ddb      j                         d,       | j                  t        j                  dd      j                         d       | j                  t        j                  dd      j                         d6       | j                  t        j                  dd      j                         d7       | j                  t        j                  dd      j                         d7       | j                  t        j                  dd      j                         d6       | j                  t        j                  ddg       j                         d       | j                  t        j                  d      j                  d+      j                         d6       | j                  t        j                  dt        j                        j                  d+      j                         d6       | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      d        | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      d        | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      d        | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      j                         d       | j                  t        j                  ddd      d        | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       | j                  t        t        j                  ddd            d       y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w (  Nz(?>b)rF  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))*\)z\((?:[^()]*+|(?0))*\)za(b(c(de)fg)hz	(c(de)fg)za(bc)dr  r   z([\da-f:]+)$rG  rM  z^(?=ab(de))(abd)(e)abde)r  r  rM  z\ r   z^(a|)\1{2}br   r:   )r   r   z	^(a){0,0}r   rD  z(?>.*/)bza/bz((?i)blah)\s+\1z	blah BLAHz(\()?[^()]+(?(1)\)|)z(abcdz(a*)*r\   r:   r:   r  r   r   r<   r;   r;   z	a(?#xxx)*z(?=abc){3}abc	abcabcabcr>   z^(?:a(?:(?:))+)+r0  r\  za(?x: b c )dza#comment
*z(?V1)(a(?(1)\1)){1}
aaaaaaaaaar/  z(?V1)(a(?(1)\1)){2})r>   r9   z(?V1)(a(?(1)\1)){3})rh  r  z(?V1)(a(?(1)\1)){4})r  )r-  r_   z(?V1)(a)(?<=b(?1))bazz(?fi)\L<keywords>u)   POST, Post, post, poſt, poﬆ, and poﬅr6  r7  )keywords)r7  Postr6  u   poſtr8     poﬅz(?fi)pos|post)r9  Posr7  u   poſr8  rJ  z(?fi)post|posz(?fi)post|anotherz(?V1)((a)(?1)|(?2))r   r  z(?V1)(\1xx|){6}rY   )r\  rC  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)r  r  r\   z(?<=:\S+ )\w+z:9 abc :10 defr  z(?<=:\S* )\w+z(?<=:\S+? )\w+z(?<=:\S*? )\w+z(?:fe)?malefemalez!(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                  0    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                 $    | j                  d      S )Nr%   )r%  rT   s    r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    QXXd^r   rt  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   yxxxr   z(?V0).*re   z(?V1).*z(?V0).*?r  z	|||||||||z	|t|e|s|t|z(?V1).*?z^(@)\n(?!.*?@)(.*)z\1\n==========\n\2z@
z@
==========
r  cazr  r  z(?b)(?:cats|cat){e<=1}z(?:cat){e<=1}z(?e)(?:cat){e<=1}z(?b)(?:cat){e<=1}z(?:cats){e<=2}zc ats)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]r,  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>n  s    %--(r   z(?:()|(?(1)()|z)){2}(?(2)a|z))r\   r   r   z(?:()|(?(1)()|z)){0,2}(?(2)a|z)r   c              3   2   K   | ]  }t        |        y wr   r  r  s     r   r  z*RegexTests.test_hg_bugs.<locals>.<genexpr>}  s     71Ar  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]+rx  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)*abcr2  OXRGOOGOXr  z.XRGz	.{1,3}XRG)r:   r  zR|RRz(.)(?(1)(?!))r:  z(y)?(\d)(?(1)\b\B)ax1y2z3b))r   r  )r   2)r   r  z(y)?+(\d)(?(1)\b\B)z(?i)(?:error){e}zregex failure)r  )r  r_   )r_   ra   )ra   ra   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
)r  )r   rc   )r  )6   ;   z(abcdefgh){e}z******abcdefghijklmnopqrtuvwxyz)r-  r  z(abcdefghi){e})r-  r  z(?:(?=\d)\d+\b|\w+)rc  rh  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)rx  bbbz
(?p)a*(.*)r   ry  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  rf  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/Er   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>.*))re  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   rd  r   za?yzxxxxyz)r   r-  z(?:(?![a-d]).)+z.(?(DEFINE)(?P<mydef>(?:(?![a-d]).)))(?&mydef)+z((\w{1,3})(\.{2,10})){1,3}z("Erm....yes. T..T...Thank you for that."zErm....Ermz....zT...Trk  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[)rZ  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]*?:rx  z(?r):[a-z]*? [a-z]+z(?u)\p{Script:Beng}u   ৯z(?u)\p{Script:Bengali}z!(?u)\p{Script_Extensions:Bengali}z(?u)\p{Script_Extensions:Beng}z(?u)\p{Script_Extensions:Cakm}z(?u)\p{Script_Extensions:Sylo}z(?u)\p{scx:Latin}r)  z(?u)\p{scx:Ahom}z(?u)\p{scx:Common}4z(?u)\p{scx:Caucasian_Albanian}z(?u)\p{scx:Arabic}u   تz(?u)\p{scx:Balinese}z(?u)\p{scx:Devanagari}u   जz(?u)\p{scx:Batak}z(?P<x>.)*(?&x)r  z(?P<x>.)(?P<x>.)(?P<x>.)r   z(?:ab)*ababz(?:ab)*?z(?:ab)*+z(?:ab)+z(?:ab)+?z(?:ab)++z(?r)(?:ab)*z(?r)(?:ab)*?z(?r)(?:ab)*+z(?r)(?:ab)+z(?r)(?:ab)+?z(?r)(?:ab)++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  dogfootrI  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}r  z(?b)(?:bc){e}z,(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){e}z$ 10,112.111.12)r-  r   r  z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=1}z9(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=1,i<=1,d<=1}z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=3}z$ 10,1a2.111.12)r   r   r   z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=2}z(?e)(?:0?,0(?:,0)?){s<=1,d<=1}z,0;0z(?e)(?:0??,0(?:,0)?){s<=1,d<=1}z#\b(?e)(?:\d{6,20}){i<=5:[\-\\\/]}\bz-cat dog starting at 00:01132.000. hello worldz(?#)z(?x)(?#)z(\d+){i<=2:[ab]}123X4Y5)rn  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&GGAAAACACTGGTCTCAGTCTCGTCCCCGAAGTGGTCGr     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  )r0  r  r.  z\p{HorizSpace}+u4   	   ᠎             　z\p{VertSpace}+u   
  z(?(?<=A)|(?(?![^B])C|D))z^a?(a?)b?c\1$abcarj  z(?(?=a).|..)z(?(?=b).|..)z(?(?!a).|..)z(?(?!b).|..)z(\L<foo>){e<=5}blah)r  r(  z
[^/]*b/ccczb/ccczb/ccbzb/ccz
[^/]*b/xyzzb/xyzb/yzz(?i)[^/]*b/cccz(?i)[^/]*b/xyzz<thinking>.*?</thinking>r  z	<thinkingz
<thinking>z<thinking>xz<thinking>xyz abcz<thinking>xyz abc fooz<thinking>xyz abc foo z<thinking>xyz abc foo bar)8r)   r(  r-   r.   V1r/   r  r   r@   rv   r5  rB   rd   rA   r|   r   UNDEF_CHAR_NAMEr  ro  	BESTMATCHr=  rj   WORDspansrr  rz  FULLCASErB  r  r   r   rM  r  DEBUGrG  r{  r  r!  r  r3  r  pickledumpsloadsr  ENHANCEMATCHr"  r  r  r  r   V0r%  r#  allcapturesallspans)r   rU   fzseqrxr	  r%   rawra  r  
TEST_REGEX	TEST_DATAr  r  upper_ilower_ir\   py_regex_patternrx   sequences                       r   test_hg_bugszRegexTests.test_hg_bugs  sN    	emmG588DEtL 	emm,C  	" 	'B
)51	3'B
)51	3'B
(\	+'B
&K	)'F
&K	)
..1?
CE
C )*!'')
CE-	 	h
((9 E!Hf	&
 	osEGG
((= E!Hc	#osEGG
((= E!Hc	#
 	&;VDKKM
	
 	ekk%EGGDEtL 	nc:@@AF I 	
 	k59??1E H 	 	j%8>>qA5I
 	&8+FM 	&=
58V	%
 	gs388;VDgt499!<fEgu5::1=vF 	k59??A5I 	o{CHHJ M 	
 	&8#>CCEvN&8$?DDFO 	nf=CCAFO 	neq5	*
 	&<
Q
$4	6&<
Q
$4	6&<
Q
$4	6&<
Q
$6	8
 	&:EBHHK
	
 	';
?5>#%"	# 	'7
?AC<	= 	'7
?AC?	@ 	';
?AC?	@ 	&;SAGG1
	 
 	&8$?DDQJ
	 	gs399!Q?K 	j(;TB 	mT:DA 	u{{D,@,@ C" 	# 	eX6;;A>G 	&E
E!Hh	(
 	j#6= 	&79JK
	
 	&99EKKA
Q&	( 	'79IJ%.	'79IJ%.	'8:JK%.	'8:JK%.	 	nh?EEG
	
..=
4676 )*!'')679J
9	 	&I
!!)% 3	
 	u{{DOO >$ 	' 5 b#u?B
'	) 	y-@7)L 	uyy7
P
**   \
]	_ 	^X>E 	%6=CCCH LK 	
 	6+CWM
	
 ]]+588<;/6K0"5 	u{{D,@,@ C! 	" 	gEBKPgDA9Mg.	:hUC\RhTB
	h/< 	&<
&(J	(&<
&(J	(&=
&(J	( mmF%..5==*HIS\\&-AB-A!'')-ABUGLV,ug6S\\#->?->!'')->?%IS)E73mmF%..5;K;K*K
--+ S\\&-AB-A!'')-ABUGLV,ug6S\\#->?->!'')->?%IS)E73 y(UYYy#v>EUYYy#v>D9c6:DAy(UYYz3?MUYYz3?M:sF;[I 	#8
ell<=N	P 	%:	i	)%>
y	*%>
y	* 	%5u=JJ
	%9
y	*%9
y	* 	%6@MM
	%:
<	,%:
<	, 	%6
 L)	-%:
 L)	-%:
 L)	- 	%6@MM
	%:
<	,%:
<	, 	'?
/124	6
 	437= 	ekk$U[[ABDI 	':HE
H 	'8(Cc
F 	';XF
I 	'98Ds
G 	 	u{{,N
(	* 	%D
uQ1~}	.%F
uQ1~}	. 7g77rwwu}}5H
(   "''%--0Q
#  	 	rwwu}}5H
(   "''%--0A
#  	 	rwwu}}5H
(   "''%--0J
#  	 	rwwu}}5H
(   "''%--0R
#  	 	rwwu}}5H
(   "''%--0F"NOP	Rrwwu}}5H
(   "''%--u"EFG	Irwwu}}5H
(   "''%--0s
#  	 	rwwu}}5H
(   "''%--0A
#  	 	rwwu}}5H
(   "''%--0\^c"def	hrwwu}}5H
(   
&_
  	 	rwwu}}5H
(   "''%--0F
#  	 	rwwu}}5H
(   "''%--0A
#  	 	rwwu}}5G
(   "''%--  1D
#  	 	rwwu}}5I
(   "''%--0C
#  	
 eEl#sxx6N
)   #((5==1W
$  	 	sxx6N
)   #((5==1G#OPQ	Ssxx6N
)   #((5==1I5#QRS	Usxx6N
)   #((5==1X
$  	 	sxx6N
)   #((5==1L
$  	 	sxx6N
)   #((5==1CU#KLM	Osxx6N
)   #((5==1y  |A  $B  C  D	Esxx6N
)   #((5==1G#OPQ	Ssxx6N
)   #((5==1_af#ghi	ksxx6N
)   #((5==1l
$  	 	sxx6N
)   #((5==1Le#TUV	Xsxx6N
)   #((5==1G#OPQ	Ssxx6M
)   #((5==  2J  LQ  $R  S  T	Usxx6O
)   #((5==1I5#QRS	U 	u||FJ?EEGH
/	
 	&7?FFH K 	
 	67D98D:w=xHFGT:HEJ>I 	D	(D	'
 	fgtDIIK
	fgtDIIK
	k7	( 	UC0557@ 	%5t<dC 	'<jI
+	-'=zJ
+	- 	ENN;N
-  -q!&&( - B	D
..-
?A
? ()!&&(
?AC#	$ 	&H
	 &H
 	" 	&=tDQGN&H
 "#6	8 	k6:@@AF I 	}jAD
D 	
Cf
F 	 	ov>DDQJ
	'8*E
H 	':JG6
	 	&_
*	, 	&LcRXXYbceij&LcR[[\efilhmn 	ne<Q?E&8%@CSI&6>E&:EB1EuM&<hGJ
	&<hGJ
	&=xHK
	&=xHK
	&D
 	"&D
	&D
	&E
	 	&:EBDI&?GJ
	&@
 	"&@
	&H
 	"&H
	&H
	&I
	 	&;XFqI
	&;XFqI
	&<hGJ
	&<hGJ
	&C
 	"&C
	&C
	&D
	 	&?J1M
	&?J1M
	&G
 	"&G
	&G
	&H
	. 	U]]+H$OPRST 	Xt499;VD 	  &W
$	& ]] $ 
	 	


i
(*
( ,-!&&A,
(*,> A ,	
 	o
+U__>>Bdfg	O&6
+U__>>Bdfg	O 	%;XFKKM
	%:HEtL&I
	)'J
246;U^	E 	nh?EEaK
	mX>DDQJ
	>5(CUK=%BEJ 	%5tFKKM
	%5tFKKM
	 	eY7<<>Gi;@@BFK 	&9
	)&9
	)&:
	) MM.5%.ALLOLLO,,.7 	^X!!%	1^W!!%	1^S!"&	(%7!!%	1%7!!%	1%7!"&	( 	%++ (> 	? 	%++'EF 	emmK894@ 	emmN;<dC 	'Z
79K9KM3 6 	 	&=
0$@@D I	
 85ekk(W*<
 	ekk(W*<
 	 	ekk(W*<
 	ekk(W*<
 	 	ekk)g*=
 	ekk)g*=
 	 	ell=$E
D  	ell>4U
E  	ell>4U
E  	ell?De
F  	 	&BIT]!TVV	-&C
'(,	8 	&;
TVV	%&<
TVV	%
 	%R
466	#%R
	
 	%:
tvv	'%F
0226$&'	C  yell+;Q?@%H 	ekk-?@$Gekk-?@%Hekk/5ABDIekk/5ABEJ 	ekk*]
 	 	%?
FHh	( 	ow
//466	+ow
//'<	4 	&7
//466	+&7
//'<	4 	&6
//467	,&6
//'<	4
 	gxu~~


@  DFF	, 	'9:F(	'\
x	! 	'D
469'8)	* 	'B
4679	;'B
468L7M	O'B
468=	> 	&@
#egz	3&@
#egz	3 	&A
 57J	0&A
 57J	0 	&D
#egz	3&D
#egz	3 	&E
 57J	0&E
 57J	0
 	&<
UWi	)&=
UWi	)&=
UWi	)&>
UWi	) 	gERWXZghgERVWYdegDQVWYdegDQUVXabg.< 	nc:??A6Jnc:??A6JmS9>>@&ImR8==?Hk26;;=vF 	&F
8	%&F
vtn	.&F
&3%	2 	&J
8	%&J
vtn	.&J
&3%	2 	&L
8	%&L
vtn	.&L
&3%	2 	ekk*>GH$O 	&8)	(&<i	( 	ekk*@
 	ekk*C
 	ekk*N
 	ekk*K
 	ekk*K
 	ekk*K
 	
 	ekk*>DEtLekk*=sCDeLekk*?EFMekk*KSQR
	ekk*?JKTRekk*A8LM
	ekk*CXNO
	ekk*>IJER 	)95AJJ3O
	)95AGGL
	 	)C
#	1)C
sS	" 	YdCKK
	YEMM
	ZTBJJ
	ZtDLL
	ZFNN
	YdCKK
	YEMM
	ZtDLL
	ZtDLL
	ZFNN
	 	]D$GOO
	]FDIQQ
	^RFNN
	^T4HPP
	^VTJRR
	]D$GOO
	]FDIQQ
	^T4HPP
	^T4HPP
	^VTJRR
	 	T2t<DDeLUB=EEuMUB=EEuMT2t<DDdKUB=EEtLUB=EEtLT3=EEuMUC>FFNUC>FFNXr4@HH%PYDAII5QYDAII5QXr4@HH$OYDAII4PYDAII4PXsDAII5QYTBJJERYTBJJER%5z4PXX
	G, LL$eoo>32vr*:; 	&R
!\9	.&R
!\9	. 	u
FHG
H	J
 	ell9c:;TBell9c:;TB 	>CCEvN 	  'F
!\^y2)&	
 	ekk*>FGNekk*<eDEtL 	&h
&((5B7M	O 	\37DD G 	\37EE
qcH 	%5s;HH K 	%5s;IIrA3-	%5s;HH K 	%5s;IIrA3-	 	%X
)\9	6%[
)\9	6%e
)\9	6%[
)\9	6%[
)\9	6 	)J
,		+)K
,		+ 	&L
9;<@	B 	emmF34d;emmJ78$? 	':IF
	'>	J
	 	%6	%y	2 	ekk*>HI4Pekk*=wGH$O 	%96BHHJ
	%96BDI%97CIIK
	%97CTJ%9
 =2sB-	1%;WEKKM
	%@
 =2sB-	1 	'=>DDXNPbc'=>DDYOQde':;BB:NPTU7>>xH$OMM  J
  R
W
  R
Y
  R
Y
  \
a
  \
d
  \
d
  R
d
  e
-0668-H"89??A>R"89??A<P"89??A>R H MKKA7+3Cw_f  pH  QW  )X  	YKK1C1CD7+3Cw_f  pH  QW  )X  	Y J;KKA32r2,7;KKA3B8R*<= 	#57GQScd$68JGTVfg&8:JKRRScdfvwx&8:JKSSTfgiyz 	&:HEtL&:HEGGTVZ[ 	\3STYY[]cd%68XY^^`bhi 	\3YZ\`a\3YZ__acij 	We4@@BeWoD^_We4==?6(LdAef 	eoo.@  Cl  m  n  pt  	ueoo.?A[\]_cd 	%@#FM&A3GLLNPVW 	&6?DDFO 	_d;@@BFK_d;@@BFK_d;@@BFK_d;@@BFK 	%7RHMMOQWX 	'BCII#NSSUW]^'B%''RXXY\]bbdflm 	]GTJOOQSYZ]GTJDQ]FDINNPRXY]FDINNPRXY]FDI4P%6NSSUW]^%6NPTU%6MRRTV\]%6MRRTV\]%6MtT 	ekk*EsTXYZ\`aekk*E{\`abdhiekk*E|]abceijekk*E}^bcdfjkekk*EGZdhijlpqekk*EG^hlmnptuekk*EG_imnoquvekk*EGblpqrtxyI'EN7T C @
 C @rAh*sC   %FP8FP=)FQFQ2FQ@FQTFQU"FQzFQ c                    | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  d	d            d       | j                  t        t        j                  d
d            d       | j                  t        t        j                  d	d            d       | j                  t        t        j                  d
d            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd            d       | j                  t        t        j                  dd             d       | j                  t        t        j                  d!d"            d       | j                  t        t        j                  d!d#            d       | j                  t        t        j                  dd$            d       | j                  t        t        j                  dd%            d       | j                  t        t        j                  d&d'            d       | j                  t        t        j                  d&d(            d       y ))Nz(?r)(?:a){e<=1:[a-z]}rM  Tz(?:a){e<=1:[a-z]}r   Frh  r  z(?:ab){e<=1:[a-z]}z(?r)(?:ab){e<=1:[a-z]}z(a)\1{e<=1:[a-z]}z(?r)\1{e<=1:[a-z]}(a)r  r  z4(?fiu)(?:\N{LATIN SMALL LETTER SHARP S}){e<=1:[a-z]}tsstz5(?firu)(?:\N{LATIN SMALL LETTER SHARP S}){e<=1:[a-z]}z-szs-z4(?fiu)(\N{LATIN SMALL LETTER SHARP S})\1{e<=1:[a-z]}ssstsstsz5(?firu)\1{e<=1:[a-z]}(\N{LATIN SMALL LETTER SHARP S})stsstssszss-szsss-z5(?firu)(\N{LATIN SMALL LETTER SHARP S})\1{e<=1:[a-z]}z(?fiu)(ss)\1{e<=1:[a-z]}u   ßtsu   ßstz(?firu)\1{e<=1:[a-z]}(ss)u   stßu   tsßu   ß-su   ßs-z(?firu)(ss)\1{e<=1:[a-z]}u   s-ßu   -sßr'  rC   s    r   test_fuzzy_extzRegexTests.test_fuzzy_ext  sD   eoo.FLM
	eoo.BCHI
	eoo.BCHI
	eoo.FLM
	 	eoo.BDIJ
	eoo.F
 	eoo.BDIJ
	eoo.F
 	 	eoo.CTJK	eoo.G 	eoo.CTJK	eoo.G 	 	eoo.BDIJ	eoo.F 	eoo.BDIJ	eoo.F 	 	eoo.e
 	eoo.e
 	eoo.f
 	eoo.f
 	eoo.e
 	eoo.e
 	eoo.f
 	eoo.f
 	 	eoo.e 	eoo.e 	eoo.f 	eoo.f 	eoo.e 	eoo.e 	eoo.f 	eoo.f 	 	eoo.I-/ 015	7eoo.I-/ 015	7eoo.J-/ 015	7eoo.J-/ 015	7eoo.I-/ 016	8eoo.I-/ 016	8eoo.J-/ 016	8eoo.J-/ 016	8r   c                 ,   | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  dd      j                  d      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       | j                  t        j                  ddd      d       y )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_captures_  s    \
-.	?\
KL
	 	\
KL
	 	L2G
	!L
<eE
	 	L
<eE
	r   c                 @   t         j                  dk\  r | j                  t        j                  dd      g d       | j                  t        j
                  ddd      d       | j                  t        j                  dd      g d       | j                  t        j                  dd      D cg c]  }|j                          c}g d       | j                  t        j                  d	d
      D cg c]  }|j                          c}g d       y y c c}w c c}w )Nr   z\b|:+za::bc)r   r\   r   r   r  r   r   z-a---bc-)r   r   r   r   r   )r6   rB  r9   rD  r  r  z
(?m)^\s*?$z	foo


bar)r  )r   r  r  )	r   r   r)   r-   r   rj   r/   r  rA   r   s     r   test_more_zerowidthzRegexTests.test_more_zerowidthr  s    y(U[[7; > UYYxg>
KU]]8W= @ x1  11affh 1 AC}1  11affh 1  8: )s   /D3Dc                     | j                  t        j                  dd      g d       | j                  t        j                  dd      g d       y )Nz\Ru   

  )rq   rW   rT     u    u    s   \Rs   

)s   
ri            r   rC   s    r   test_line_endingzRegexTests.test_line_ending~  sD    
u}}U,LMFH
u}}V-BC F& 'r   r   )r   r   r   r   r~   r   r   r   r   r   r   rm  ro  r  r  r*  r+  r,  r-  r.  r/  rl  rn  rp  rq  rr  rs  DUPLICATE_GROUPCANT_TURN_OFFr  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&  r)  r<  rD  rH  rN  rT  rY  rn  rp  rt  rv  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r0  r7  r>  rB  rc  rh  rl  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rz  r~  r  r  r  r  r  r  r  r  r$  r(  r0  r?  r  r  r  r  r  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"B>
	
3
7rC?)2.H1fE2N6.." O'
#BJ/<'B1
JF4VNp<E>8
8
"
$ 
&I
A#6KD $1G
1;D;6
9 %D%6	` v2pBM`ED?J48-tL.`L*"J0

/10(IT4=lKLZ]7~LPH(,('44lBEJN))VF,JX3Ojyzv'V8p&
:'r   r   c                  0    t        j                  d       y )Nr   )	verbosity)unittestmainrS   r   r   	test_mainr    s    MMAr   __main__)weakrefr   r  r  r-   r9  r   r  rG   r   r  r   TestCaser   r  r   rS   r   r   <module>r     sc         
 7# 79E 9pE'"" pE'dK zK r   