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

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

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

#
# r   c                  Z    t          j        dt           j        t           j        z            S )N\w)r-   r.   rH  ASCIIrS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-u}u{:
;
; r   c                  @    t          j        dt           j                  S )Nz(?u)\w)r-   r.   r-  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-	5;
/
/ r   c                  @    t          j        dt           j                  S )N(?a)\wr(  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  s    
-	5=
1
1 r   c                  *    t          j        d          S Nz(?au)\wr  rS   r   r   rV   z2RegexTests.test_bytes_str_mixing.<locals>.<lambda>  r*  r   )r-   r.   r|   	TypeErrorSTR_PAT_ON_BYTESBYTES_PAT_ON_STRSTR_PAT_BYTES_TEMPLBYTES_PAT_STR_TEMPLr}   BYTES_PAT_UNI_FLAGMIXED_FLAGS)r   r  r  s    @@r   test_bytes_str_mixingz RegexTests.test_bytes_str_mixing  s   mC  }T""y$*? B B B B 	 	 	y$*? B B B B 	 	 	y$*B E E E E 	 	 	y$*? B B B B 	 	 	y$*? B B B B 	 	 	y$*? B B B B 	 	 	y$*B E E E E 	 	 	y$*? B B B B 	 	 	 	z4+B E/ E/ 	0 	0 	0z4+B E$ E$ 	% 	% 	%z4+; >< >< 	= 	= 	=z4+; >0 >0 	1 	1 	1z4+; >2 >2 	3 	3 	3z4+; >$ >$ 	% 	% 	% 	% 	%r   c                 (   dt           j        fD ]}t          j        d|t           j        z            }|                     t          |                    d                    d           t          j        d|          }|                     t          |                    d                    d           t          j        dt           j        t           j        z            }|                     |                    d          d            t          j        dt           j                  }|                     |                    d          d            t          j        dt           j                  }|                     |                    d          d            t          j        d          }|                     |                    d          d            dt           j        fD ]}t          j        d|t           j        z            }|                     |                    d	          d            t          j        d
          }|                     |                    d	          d            |                     t          | j
        d            d S )Nr      À   àTr,  u   (?a)Àr0        r'  c                  *    t          j        d          S r2  r  rS   r   r   rV   z8RegexTests.test_ascii_and_unicode_flag.<locals>.<lambda>  r*  r   )r-   rH  r.   r  r)   r.  rB   r-  r|   r}   r9  )r   r8  r  s      r   test_ascii_and_unicode_flagz&RegexTests.test_ascii_and_unicode_flag  s,   ' 	< 	<E-0@(@AACT#))F"3"344d;;;-u--CT#))F"3"344d;;;;mFEK%2B$BCC6**D111mJ(8996**D111mE5;//6**D111mI&&6**D111 % 	7 	7E-1A)ABBCSYYw//666-''CSYYw//6666z4+; >$ >$ 	% 	% 	% 	% 	%r   c           	         t          j        dd          }|s|                     d           nU|r>|d         |                    d          k    s|d         |                    d          k    r|                     d           |s|                     d           d S |d d          dk    r?|                     d                    t          |d d                                         d S d S )	N(?<a>\w)xyz(Failed: expected match but returned Noner   r:   Failed)r%   r%   z0Failed: expected "('x', 'x')" but got {} instead)r-   rB   r0   r   formatasciir   rU   s     r   test_subscripting_matchz"RegexTests.test_subscripting_match  s    KT** 	 II@AAAA 	 adaggajj((AaDAGGAJJ,>,>IIh 	`II@AAAAAqqqTZIIJQQRWXYZ[Z[Z[X\R]R]^^_____  r   c                     t          j        dd          }t          j        dd          }|r|r|d d          |d d          k    s|                     d           d S d S )Nz	(?P<a>\w)r%   rC  rE  )r-   rB   r0   )r   m0m1s      r   test_new_named_groupsz RegexTests.test_new_named_groups  sj    [s++[c** 	 r 	 ber!!!unnIIh -nr   c           
          |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          t          j        dd                    d           |                      t          t          j        dd	                    d           |                      t          t          j        d
d                    d           |                      t          t          j        dd                    d           |                      t          j        dd          d            |                      t          j        d
d          d            |                      t          j        dd          d            |                      t          j        dd	          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        d d                    d           |                      t          t          j        d!d                    d           |                      t          t          j        d"d                    d           |                      t          t          j        d#d                    d           |                      t          t          j        d$d                    d           |                      t          t          j        d%d                    d           |                      t          t          j        d&d                    d           |                      t          t          j        d'd                    d           |                      t          t          j        d(d                    d           |                      t          t          j        d)d                    d           |                      t          t          j        d*d                    d           |                      t          t          j        d+d                    d           |                      t          t          j        d,d                    d           |                      t          t          j        d-d                    d           |                      t          t          j        d.d/                    d           |                      t          t          j        d0d1                    d           |                      t          t          j        dd                    d           |                      t          j        d.d2          d            |                      t          j        d0d2          d            |                      t          j        dd2          d            |                      t          j        d3d/          d            |                      t          j        d4d1          d            |                      t          j        d5d          d            |                      t          t          j        d3d2                    d           |                      t          t          j        d4d2                    d           |                      t          t          j        d5d2                    d           |                      t          t          j        d6d                    d           |                      t          t          j        d6d7                    d           |                      t          t          j        d8d                    d           |                      t          t          j        d9d7                    d           |                      t          t          j        d:d7                    d           |                      t          t          j        d:d                    d           |                      t          t          j        dd/                    d           |                      t          t          j        dd7                    d           |                      t          t          j        dd;                    d           |                      t          j        d<d                                          d=           |                      t          j        d<d>                                          d?           |                      t          j        d<d@          g dA           |                      t          j        dBd@          dCdDg           |                      t          j        d<dE          g dF           |                      t          t          j        d9d7                    d           dG}dH}t          dI                                          }g d|dJfdK|dJfd5|dLfdM|dLfd.|dNfdO|dNfd3|dPfdQ|dPfdR|dSfdT|dUfdV|dWfdX|dYfdZ|d[fd\|d]fd^d_d`dad|dbfdc|dbfd|ddfde|ddfd|dffdg|dffd|dhfdi|dhfdj|dkfdl|dmfdn|dofdp|dqfdr|dsfdt|dufd|dbfdv|dbfdw|ddfdx|ddfdy|dffdz|dffd{|dhfd||dhfd}|dkfd~|dmfd|dofd|dqfd|dsfd|duf}|D ]\  }}}	 |d d                             t          j        ||                    |k    r(| 	                    d
                    |                     d# t          $ r@}| 	                    d
                    |t          |                               Y d }~d }~ww xY w|                      t          t          j        dd/                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           d S )Ns   (?ai)r?  s	   (?ai)\xC0s   (?a)\wr,  r=  Ts   (?L)\d   0s   (?L)\s    s   (?L)\w   a   ?s   (?L)\Ds   (?L)\Ss   (?L)\Wz\p{Cyrillic}u   Аz(?i)\p{Cyrillic}z\p{IsCyrillic}z\p{Script=Cyrillic}z\p{InCyrillic}z\p{Block=Cyrillic}z[[:Cyrillic:]]z[[:IsCyrillic:]]z[[:Script=Cyrillic:]]z[[:InCyrillic:]]z[[:Block=Cyrillic:]]z\P{Cyrillic}rg   z\P{IsCyrillic}z\P{Script=Cyrillic}z\P{InCyrillic}z\P{Block=Cyrillic}z\p{^Cyrillic}z\p{^IsCyrillic}z\p{^Script=Cyrillic}z\p{^InCyrillic}z\p{^Block=Cyrillic}z[[:^Cyrillic:]]z[[:^IsCyrillic:]]z[[:^Script=Cyrillic:]]z[[:^InCyrillic:]]z[[:^Block=Cyrillic:]]z\dr  r  r   r  z\Dz\Sz\Wz\p{L}r\   z\p{Lu}\p{Ll}r
  r]  \Xr6     àrb     aààeéér\   r=  rU  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}rb     á)z(?i)\p{InBasicLatin}rb  r\   )z(?i)\P{InBasicLatin}rb  rc  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   rM  r0   rF  	ExceptionrG  )	r   chars_uchars_bword_settestsrx   charsexpectedrX  s	            r   test_propertieszRegexTests.test_properties  s   \7;;TBBB]G<<dCCCZ994@@@ek%88994@@@ 	ek*d;;<<dCCCek*d;;<<dCCCek*d;;<<dCCCZ66===Z66===Z66===Z66===Z66===Z66===ek*d;;<<dCCCek*d;;<<dCCCek*d;;<<dCCCek/
)+ + , ,-1	3 	3 	3ek*=
)+ + , ,-1	3 	3 	3ek*;
)+ + , ,-1	3 	3 	3ek*@
)+ + , ,-1	3 	3 	3ek*;
)+ + , ,-1	3 	3 	3ek*?
)+ + , ,-1	3 	3 	3ek*;
)+ + , ,-1	3 	3 	3ek*=
)+ + , ,-1	3 	3 	3ek*B
)+ + , ,-1	3 	3 	3ek*=
)+ + , ,-1	3 	3 	3ek*A
)+ + , ,-1	3 	3 	3 	ek/
&( ( ) )*.	0 	0 	0ek*;
&( ( ) )*.	0 	0 	0ek*@
&( ( ) )*.	0 	0 	0ek*;
&( ( ) )*.	0 	0 	0ek*?
&( ( ) )*.	0 	0 	0ek*:
&( ( ) )*.	0 	0 	0ek*<
&( ( ) )*.	0 	0 	0ek*A
&( ( ) )*.	0 	0 	0ek*<
&( ( ) )*.	0 	0 	0ek*@
&( ( ) )*.	0 	0 	0ek*<
&( ( ) )*.	0 	0 	0ek*>
&( ( ) )*.	0 	0 	0ek*C
&( ( ) )*.	0 	0 	0ek*>
&( ( ) )*.	0 	0 	0ek*B
&( ( ) )*.	0 	0 	0 	ek%5566===ek%5566===ek%5566===UC00$777UC00$777UC00$777UC00$777UC00$777UC00$777ek%5566===ek%5566===ek%5566===ek(C88994@@@ek(C88994@@@ek)S99::DAAAek)S99::DAAAek(C88994@@@ek(C88994@@@ek%5566===ek%5566===ek%5566===UF3388::FCCCUI66;;==vFFFu
$& &( ( (	 	 	 	x
$& &(6'G	I 	I 	Iu.CDD
-
-
-	/ 	/ 	/ 	ek)S99::DAAA(<BBDDEE1
G231
G%:;1
 GS!1
 Wc*	1

 GT"1
 Wd+1
 G121
 g';<1
 W&891
 gv.1
 W&:;1
 gt,1
 gv.1
 w(:;1
 01
  3!1
" 4#1
$ 7%1
( *-)1
*  *5+1
, $'-1
. !'40/1
0 %(11
2 !'5131
4 ),51
6 "7I671
8 !'7391
: "7G4;1
< !'95=1
> "7E2?1
@ "7G4A1
B #GW5C1
F *-G1
H  *5I1
J $'K1
L !'40M1
N %(O1
P !'51Q1
R ),S1
T "7I6U1
V !'73W1
X "7G4Y1
Z !'95[1
\ "7E2]1
^ "7G4_1
` #GW5a1
d ). 	L 	L$GUHL#A#;##EM'5$A$ABBhNNIIl11'::;;; L L L		077qJJKKKKKKKKL 	ek*?EEFF
	 	 	ek*A
(* * + +,0	2 	2 	2ek*A
(* * + +,0	2 	2 	2 	2 	2s   ?A|
}&&6}!!}&c                 \   |                      t          j        dd          dg           |                      t          j        dd          ddg           |                      t          j        dd          g d           |                      t          j        d	d          g d
           d S )N\w+u    हिन्दी,   हिन्दीz\W+r   ,r   )r   rq  rr  z(?V1)\B)r   u    हu   िu   नu   ्u   दu   ी,r   )r)   r-   r/   r   rC   s    r   test_word_classzRegexTests.test_word_class  s    v
24 41
2	4 	4 	4 	v
24 4693Z	A 	A 	AZ
24 467 67 67	8 	8 	8 	Z
24 46A 6A 6A	B 	B 	B 	B 	Br   c                 \    |                      t          j        dd          ddg           d S )N\G\w{2}abcd efr  r  r   rC   s    r   test_search_anchorzRegexTests.test_search_anchor  s.    z9==d|LLLLLr   c           	         |                      t          j        dd          g d           |                      t          j        ddd          g d           |                      t          j        dd          dd	g           |                      t          j        ddd          g d
           |                      t          j        ddd          ddg           |                      d t          j        dd          D             g d           |                      d t          j        ddd          D             g d
           |                      d t          j        dd          D             g d           |                      d t          j        ddd          D             g d
           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      d t          j        dd          D             g d           |                      d t          j        dd          D             g d           |                      d t          j        dd          D             g d           |                      d t          j        dd          D             g d           |                      t          j        dd          d d!g           |                      t          j        d"d#          d d!g           |                      t          j        d$d          g            |                      t          j        d%d          d&g           |                      t          j        d'd(          g d)           |                      t          j        d*d(          g d)           |                      t          j        d+d(          g d,           |                      t          j        d-d(          g d,           |                      t          j        d.d#d/d01          d2d3g           |                      t          j        d.d#d/d41          d2d3g           |                      d5 t          j        d.d#d/d01          D             d2d3g           |                      d6 t          j        d.d#d/d41          D             d2d3g           |                      d7 t          j        dd#d/d01          D             d3d2g           |                      d8 t          j        dd#d/d41          D             d3d2g           |                      t          j        dd#d/d01          d3d2g           |                      t          j        dd#d/d41          d3d2g           |                      t          j        d9d:t          j                  d;d<g           |                      t          j        d=d:t          j                  d<d;g           |                      t          j        d>d          d	g           |                      t          j        d>dd          d	d g           |                      t          j        d?d@          dAdBg           |                      t          j        dCd@          dDdEg           |                      dF t          j        d>d          D             d	g           |                      dG t          j        d>dd          D             d	d g           |                      dH t          j        d?d@          D             dIdJg           |                      dK t          j        dCd@          D             dLdMg           |                      t          j        dNdN                                          dO           |                      t          j        dPdN                                          dO           |                      t          j        dQdR                                          dO           |                      t          j        dSdR                                          dO           |                      t          j        dTdUd          d           |                      t          j        dVdUd          d           d S )WNz(?r).r   )r   r   r\   T
overlapped(?r)..abcder  r
  r  r  r
  r  (?r)(.)(-)(.)a-b-cr   r   r   r\   r   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>      HHH1!A$HHHr   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (       1!A$   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   ^|\w+foo barr   r  r  
(?V1)^|\w+	(?r)^|\w+r  r  r   (?rV1)^|\w+c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>      LLL1!A$LLLr   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (       1!A$   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   ru  rv  r  r  z.{2}(?<=\G.*)r  z(?r)\G\w{2}z(?r)\w{2}\Gefzq*qqwe)qqr   r   r   z(?V1)q*z(?r)q*)r   r   r  r   z(?rV1)q*rP   r:   r;   r=  r>  r   r   r  c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (       1!A$   r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   z[ab]aBr\   Bz(?r)[ab]z(?r).{2}(\w+) (\w+)zfirst second third fourth fifthr'  )thirdfourthz(?r)(\w+) (\w+))r  fifth)r&  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>      KKK1!A$KKKr   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>	  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  (     . . .1!A$ . . .r   r$  zthird fourthc                     g | ]
}|d          S r  rS   r   s     r   r   z2RegexTests.test_search_reverse.<locals>.<listcomp>  r  r   zfourth fifthzsecond thirdr2  rn  z
(?r)abcdefz
(?i)abcdefABCDEFz(?ir)abcdef(.)r   (?r)(.))r)   r-   r/   r  rv   r@   rA   rj   rC   s    r   test_search_reversezRegexTests.test_search_reverse  s   x77IIIx4HHH K K K 	 	 	y'::T4LIIIy'dKKK
"
"
"	$ 	$ 	$'7  ,o>	@ 	@ 	@ 	HHx(G(GHHH K K K 	 	 	  y') ) )   555	7 	7 	7HHx(G(GHHH K K K 	 	 	  y') ) )   555	7 	7 	7 	x;; > > > 	 	 	}i@@ C C C 	 	 	|Y?? B B B 	 	 	~yAA D D D 	 	 	 	LLx(K(KLLL


	 	 	  }
) )   )))	+ 	+ 	+  |
) )   )))	+ 	+ 	+  ~
) )   )))	+ 	+ 	+ 	z9==d|LLL'7@@4,OOO~yAA2FFF~yAAD6JJJuf557I7I7IJJJz6::<N<N<NOOOy&99;M;M;MNNN{F;; > > > 	 	 	 	sF!DDDs
G 	 	 	sF"EEE
H 	 	 	  sF) ) )   Cj	" 	" 	"  sF) ) )   Sz	# 	# 	# 	  wA) ) )   Cj	" 	" 	"  wA) ) )   Sz	# 	# 	#wAaHHH3
K 	 	 	wAbIII*	 	 	 	weg>>c
KKK{D%'BBS#JOOO{E::TFCCC{EdKKK,	 	 	~
+- -/B E /	 	 	 	'9
+- -/B E /	 	 	 	KK{E(J(JKKK&	 	 	  {E) ) )   "D\	+ 	+ 	+ . .~
+)- )- . . .0>
0	 	 	 	 . .7I
+)- )- . . .0>
0	 	 	 	h99>>@@&IIIlH==BBDDfMMMlH==BBDDfMMMmX>>CCEEvNNN65%88%@@@:ue<<eDDDDDr   c                 X    |                      t          j        dd          d            d S )Nz(?>a*)ar  ry  rC   s    r   test_atomiczRegexTests.test_atomic  s*    j$77>>>>>r   c                 F   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        d	d
                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd
          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            d S )Nza?ar\   r6  za*ar<   r>   za+aza{1,3}az	(?:ab)?abr  rb  z	(?:ab)*ababababrn  z	(?:ab)+abz(?:ab){1,3}abza?+aza*+aza++aza{1,3}+az
(?:ab)?+abz
(?:ab)*+abz
(?:ab)++abz(?:ab){1,3}+abr)   r-   r@   rA   rC   s    r   test_possessivezRegexTests.test_possessive  s   fc2277996BBBfe4499;;VDDDfe4499;;VDDDj%88==??HHH 	lD99>>@@&IIIlH==BBDDfMMMlH==BBDDfMMM&6AAFFHH K 	 	 	 	gs33T:::gu55t<<<gu55t<<<k5994@@@ 	mT::DAAAmX>>EEEmX>>EEE&7BBDIIIIIr   c                    t           j        dk    r,|                     t          j        dd          g d           n*|                     t          j        dd          dg           |                     t          j        dd          g d           |                     t          j        dd          g d           |                     d	 t          j        dd          D             g d           |                     t          j        d
d          g d           |                     d t          j        d
d          D             g d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           t           j        dk    ra|                     t          j        dd          g d           |                     d t          j        dd          D             g d           n^|                     t          j        dd          dg           |                     d t          j        dd          D             dg           t           j        dk    ra|                     t          j        dd          g d           |                     d t          j        dd          D             g d           n^|                     t          j        dd          dg           |                     d t          j        dd          D             dg           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           |                     t          j        dd          g d           |                     d t          j        dd          D             g d           d S )Nr   z\brV  )r   r\   r   r   r   r   r  r  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>E  r  r   r  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>I  r  r   r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>M  r  r   r  c                     g | ]
}|d          S r  rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>Q  r  r   r   r   )r   r%   r\   r%   r   r%   r   r   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>W      GGGAaGGGr   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>[  r  r   z(?r))r   r   r%   r   r%   r\   r%   r   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>a      KKKAaKKKr   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>e  r  r   z(?V1)c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>j  r   r   z(?rV1)c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_zerowidth.<locals>.<listcomp>o  s    III!IIIr   )r   r   r)   r-   r   r/   r  r   rC   s    r   test_zerowidthzRegexTests.test_zerowidth8  s   y((U[66 9 9 9     U[66@@@Z77 : : : 	 	 	 	x;; > > > 	 	 	LLx(K(KLLL


	 	 	|Y?? B B B 	 	 	  |
) )   )))	+ 	+ 	+}i@@ C C C 	 	 	  }
) )   )))	+ 	+ 	+~yAA D D D 	 	 	  ~
) )   )))	+ 	+ 	+ y((U[X66 9! 9! 9! " " "GGX)F)FGGG J0 J0 J0 1 1 1 1 U[X66
CCCGGX)F)FGGGj   y((U[:: =! =! =! " " "KK)J)JKKK4446 6 6 6 U[::XJGGGKK)J)JKKKj   	Wh77 : : : 	 	 	HHU_Wh%G%GHHH K, K, K, 	- 	- 	- 	Xx88 ; ; ; 	 	 	IIU_Xx%H%HIII L, L, L, 	- 	- 	- 	- 	-r   c                 J   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        ddt          j        	          d            |                      t          j        d
dt          j        	          d            |                      t          j        ddt          j        	                                          d           d S )Nz(?i)Abr  rb  z(?i:A)bzA(?i)bz(?V0)Abz(?V1)Abz(?-i)AbrL  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6;;==vFFFj$77<<>>GGGi66===j$77>>>j$77>>>j$egFFFMMMk4uwGGGNNNj$egFFFKKMM
	 	 	 	 	r   c                 h   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           d S )Nz(?:a+)+r<   r>   z(?:(?:ab)+c)+abcabcrn  z
(?:a+){2,}r  rC   s    r   test_repeated_repeatsz RegexTests.test_repeated_repeats  s    j%88==??HHH&6AAFFHH K 	 	 	 	mU;;@@BBFKKKKKr   c           	      	   |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t	          t          j        dd                    d           |                      t          j        d	d          d            |                      t	          t          j        d
d                    d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t	          t          j        dd                    d           |                      t          j        dd          d            |                      t	          t          j        dd                    d           |                      t          t          t          j        d                              | j	                   d S )Nz123(?<=a\d+)a123r:   r   b123z123(?<!a\d+)z(a)b(?<=b)(c)r   Tz(a)b(?<=c)(c)z(a)b(?=c)(c)z(a)b(?=b)(c)z(?:(a)|(x))b(?<=(?(2)x|c))cz(?:(a)|(x))b(?<=(?(2)b|x))cz(?:(a)|(x))b(?<=(?(2)x|b))cz(?:(a)|(x))b(?<=(?(1)c|x))cz(?:(a)|(x))b(?<=(?(1)b|x))cz(?:(a)|(x))b(?=(?(2)x|c))cz(?:(a)|(x))b(?=(?(2)c|x))cz(?:(a)|(x))b(?=(?(1)b|x))cz(?:(a)|(x))b(?=(?(1)c|x))cz(a)b(?<=(?(2)x|c))(c)z(a)b(?<=(?(2)b|x))(c)z(a)b(?<=(?(1)c|x))(c)z(a)b(?<=(?(1)b|x))(c)z(a)b(?=(?(2)x|c))(c)z(a)b(?=(?(2)b|x))(c)z(a)b(?=(?(1)c|x))(c)z(a)\2(b))
r)   r-   r@   rA   r.  rB   r   r"   r.   r   rC   s    r   test_lookbehindzRegexTests.test_lookbehind  s   ov>>CCEEvNNNov>>EEEov>>EEEov>>CCEEvNNNek/5AABBDIII_e<<dCCCek.%@@AA4HHH^U;;TBBB%BEJJ
	 	 	%BEJJ
	 	 	ek*G
   	 	 	%BEJJ
	 	 	ek*G
   	 	 	 	ek*F
   	 	 	%A5II
	 	 	ek*F
   	 	 	%A5II
	 	 	ek*F
   	 	 	 	%<eDDdKKK%<eDDdKKK%<eDDdKKKek*A5IIJJ
	 	 	 	ek*@%HHII
	 	 	%;UCCTJJJek*@%HHII
	 	 	 	d5=#=#=>>??

	 	 	 	 	r   c                 `   t           j        dk    r+|                     t          j        ddd          d           n*|                     t          j        ddd          d           |                     t          j        ddd          d           t           j        dk    r+|                     t          j        ddd          d	           n*|                     t          j        ddd          d
           |                     t          j        ddd          d	           t           j        dk    r+|                     t          j        ddd          d           n*|                     t          j        ddd          d           |                     t          j        ddd          d           d S )Nr   z(?V0)(x)?(y)?z\2-\1rD  zy-x-zy-xz(?V1)(x)?(y)?r%   z-x-z-xr&   zy--zy-r   rC   s    r   test_unmatched_in_subz RegexTests.test_unmatched_in_sub  s    y((UY'74HH    UY'74HH  #3XtDDfMMMy((UY'73GGOOOOUY'73GGNNN#3XsCCUKKKy((UY'73GGOOOOUY'73GGNNN#3XsCCUKKKKKr   c                 N   t          j        d          }t          j        dk    r,|                     |                    d d          d           n+|                     |                    d d          d           |                     d |                    d          D             d	d
g           t          j        d          }|                     |                    d d          d           |                     d |                    d          D             d	d
g           d S )NzD(?mV0)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)r   c                     d| j         z   dz   S N<>r  rT   s    r   rV   z+RegexTests.test_bug_10328.<locals>.<lambda>      ak0AC0G r   zfoobar )z%foobar<trailing_ws><no_final_newline>r   c                     d| j         z   dz   S r  r  rT   s    r   rV   z+RegexTests.test_bug_10328.<locals>.<lambda>  r  r   )zfoobar<trailing_ws>r:   c                 6    g | ]}|                                 S rS   r   r   s     r   r   z-RegexTests.test_bug_10328.<locals>.<listcomp>       EEE!''))EEEr   r   r   zD(?mV1)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)c                     d| j         z   dz   S r  r  rT   s    r   rV   z+RegexTests.test_bug_10328.<locals>.<lambda>  s    C!+,=,C r   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z-RegexTests.test_bug_10328.<locals>.<listcomp>  r  r   )r-   r.   r   r   r)   r   r  r  s     r   test_bug_10328zRegexTests.test_bug_10328  sd   mcddy((SXX&G&G FH H H H SXX&G&G 46 6 6EES\\)-D-DEEE
H 	 	 	mcdd"C"C
 B	D 	D 	DEES\\)-D-DEEE
H 	 	 	 	 	r   c                 L   |                      t          j        dd          ddg           |                      t          j        ddd          g d           |                      t          j        dd          d	d
g           |                      t          j        ddd          g d           |                      t          j        ddd          ddg           |                      d t          j        dd          D             ddg           |                      d t          j        ddd          D             g d           |                      d t          j        dd          D             d	d
g           |                      d t          j        ddd          D             g d           |                      d t          j        ddd          D             ddg           |                      d t          j        ddd          D             ddg           d S )N..r|  r  r  Try  )r  r
  r  r  r{  r  r
  r}  z	(.)(-)(.)r  r  r  c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  s    GGG1!A$GGGr   c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   c                     g | ]
}|d          S r  rS   r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   c                 6    g | ]}|                                 S rS   r;  r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  ,     % % %!((** % % %r   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z.RegexTests.test_overlapped.<locals>.<listcomp>  r  r   r~  )r)   r-   r/   r  rC   s    r   test_overlappedzRegexTests.test_overlapped  s   ug66tEEEug$GGG J J J 	 	 	y'::T4LIIIy'dKKK
"
"
"	$ 	$ 	$|WNNNO
,	. 	. 	. 	GGug(F(FGGG$
J 	 	 	  ug) ) )   555	7 	7 	7KKy'(J(JKKK,	 	 	  y') ) )   555	7 	7 	7 	 % %en\
d/$ /$ /$ % % %'6&H	J 	J 	J % %en=M
d/$ /$ /$ % % %'6&H	J 	J 	J 	J 	Jr   c                     |                      t          j        dd          g d           |                      d t          j        dd          D             g d           d S )Nrr  za,b,,c,)r\   r   r   r   r   c                     g | ]}|S rS   rS   r   s     r   r   z-RegexTests.test_splititer.<locals>.<listcomp>  s    FFF!FFFr   )r)   r-   r   r   rC   s    r   test_splititerzRegexTests.test_splititer  s|    T9557N7N7NOOOFFU_T9%E%EFFF I I I 	 	 	 	 	r   c                    |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          g d           |                      t          j        dd          d	d
g           |                      t          j        dd          g d           d S )NrT  r=  r6  rU  rb  rV  rW  rZ  r[  r\  r]  r^  )r)   r-   rB   rA   r/   rC   s    r   test_graphemezRegexTests.test_grapheme  s
   UF3388::FCCCUI66;;==vFFFu
$& &( ( (	 	 	 	x
$& &(6'G	I 	I 	Iu.CDD
-
-
-	/ 	/ 	/ 	/ 	/r   c                    d}|                      t          j        d|          g d           |                      t          j        d|          g d           d}|                      t          j        d|          g d           |                      t          j        d|          g d           d}|                      t          j        d|          g d	           |                      t          j        d|          g d
           d S )Nz4The quick ("brown") fox can't jump 32.3 feet, right?r   )r   Ther   quickz ("brownz") foxr   can'tr   jumpr   32rP   3r   feet, rightr  z(?V1w)\b)r   r  r   r  r   r  "r  r  )r   r  r   can'tr   r  r   z32.3r   r  rr  r   r  r  r   zThe  fox)r   r  z  r  r   zcan't aujourd'hui l'objectif)r   r  r  r  r   aujourdr  huir   lr  objectifr   )r   r  r   zaujourd'huir   z
l'objectifr   )r)   r-   r   r   texts     r   test_word_boundaryzRegexTests.test_word_boundary  sa   FZ66 9 9 9 	 	 	 	[$77 : : : 	 	 	
 Z66 9 9 9 	 	 	[$77 : : : 	 	 	 .Z66 9 9 9 	 	 	 	[$77 :0 :0 :0 	1 	1 	1 	1 	1r   c                    |                      t          j        dd          ddg           |                      t          j        dd          dg           |                      t          j        dd          ddg           |                      t          j        d	d          ddg           |                      t          j        d	d          ddg           |                      t          j        d	d          ddg           |                      t          j        d
d                                          d           |                      t          j        d
d          d            |                      t          j        d
d          d            |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           d S )Nz.+zLine 1
Line 2
zLine 1zLine 2zLine 1Line 2zLine 1
Line 2
zLine 1zLine 2z(?w).+^abcr   r   z
abczabcz(?w)^abcabc$zabc
zabcz(?w)abc$(?m)^abcr:   z	(?mw)^abc(?m)abc$z	(?mw)abc$)r)   r-   r/   r@   r  rC   s    r   test_line_boundaryzRegexTests.test_line_boundary   s!   u.@AAH
D 	 	 	u.@AA
	  	  	 u.DEEz
"	$ 	$ 	$y2DEEX
	  	  	 y2DEEX
	  	  	 y2HIIX
	  	  	  	gu55;;==qAAAgw77>>>gw77>>>k599??AA1EEEk7;;TBBBk7;;TBBBgu55;;==qAAAgw77==??CCCgw77>>>k599??AA1EEEk7;;AACCQGGGk7;;AACCQGGGk599??AA1EEEk7;;AACCQGGGk7;;TBBBlE::@@BBAFFFlG<<BBDDaHHHlG<<BBDDaHHHk599??AA1EEEk7;;AACCQGGGk7;;TBBBlE::@@BBAFFFlG<<BBDDaHHHlG<<BBDDaHHHHHr   c                 
   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d	           |                      t          j        dd
                                          d           |                      t          j        dd                                          d	           |                      t          j        dd
                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          dgdgd           |                      t          j        dd                                          d           |                      t          j        dd                                          d d!gg d           d S )"Nz(?:(a)|(b))(c)r	  r  r
  r%  z(?:(?<a>a)|(?<b>b))(?<c>c)z!(?<a>a)(?:(?<b>b)|(?<c>c))(?<d>d)r  )r\   r   Nr  acd)r\   Nr   r  z(a)(?:(b)|(c))(d)z(a)(?|(b)|(b))(d))r\   r   r  z(?|(?<a>a)|(?<b>b))(c)z(?|(?<a>a)|(?<a>b))(c))r\   r   )r   r   z$(?|(?<a>a)(?<b>b)|(?<b>c)(?<a>d))(e)abe)r\   r   rX  r  )r  r   rX  z (?|(?<a>a)(?<b>b)|(?<b>c)(d))(e)z(?|(?<a>a)(?<b>b)|(c)(d))(e))r   r  rX  z (?|(?<a>a)(?<b>b)|(c)(?<a>d))(e)r\   r   )r\   r   )r  NrX  r   r  )r)   r-   rB   r;  capturesdictrC   s    r   test_branch_resetzRegexTests.test_branch_resetJ  s!   %6==DDFF I 	 	 	%6==DDFF I 	 	 	%B
 *	, 	, 	,%B
 *	, 	, 	, 	%I
 0	2 	2 	2%I
 0	2 	2 	2%95AAHHJJ
	! 	! 	! 	%95AAHHJJ
	! 	! 	!%95AAHHJJ
	 	 	%>EELLNN
	 	 	%>EELLNN
	 	 	%>EELLNN
	 	 	 	%>EELLNN
	 	 	 	%L
 ?	, 	, 	,%L
 ?	, 	, 	,%H
 ?	, 	, 	,%H
 ?	, 	, 	,%D
 ?	, 	, 	,%D
 ?	, 	, 	, 	%H
 ?	, 	, 	,%H
 uC5!9!9	; 	; 	;%H
 +	- 	- 	-%H
 Sz!;!;	= 	= 	= 	= 	=r   c           	      $   |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd	d
          d           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          ddg           |                      t          j        dd          ddg           |                      t          j        dd          ddg           |                      t          j        dd          ddg           |                      t          j        dd          g d           |                      t          j        dd          g d           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      d                     t          j        d!d"                    d#           |                      d                     t          j        d$d"                    d%           |                      d                     t          j        d&d'                    d(           |                      d                     t          j        d)d*                    d+           |                      d                     t          j        d,d*                    d+           |                      d                     t          j        d-d.                    d*           d                     d/ t          d0          D                       }|                      t          t          j        d1|                    d2           |                      t          t          j        d3|                    d4           |                      t          t          j        d5|                    d6           |                      t          t          j        d7|                    d8           |                      t          t          j        d9|                    d8           |                      t          t          j        d:|                    d6           |                      t          t          j        d;|                    d<           |                      t          t          j        d=|                    d>           |                      t          t          j        d?|                    d@           |                      t          t          j        dA|                    dB           |                      t          t          j        dC|                    dB           |                      t          t          j        dD|                    dE           |                      t          t          j        dF|                    dG           |                      t          t          j        dH|                    dG           |                      t          t          t          j        dI                              | j                   |                      t          j        dJdK          ddLg           |                      t          j        dMdK          ddLg           |                      t          j        dNdK          ddLg           |                      t          j        dOdK          ddLg           d S )PNz[a]r\   r6  z(?i)[a]rg   z[a-b]z	(?i)[a-b]z(?V0)([][])r   za[b]cr  z[\p{Alpha}]a0z(?i)[\p{Alpha}]A0z[a\p{Alpha}]ab0r   z[a\P{Alpha}]r  z(?i)[a\p{Alpha}]z(?i)[a\P{Alpha}]z[a-b\p{Alpha}]abC0)r\   r   Cz(?i)[a-b\p{Alpha}]AbC0)rg   r   r  z[\P{Alpha}]z[^\p{Alpha}]z[^\P{Alpha}]r   z[^\d-h]za^b12c-hza^bcz[^\dh]za^bc-z	[^h\s\db]z	a^b 12c-hza^c-z[^b\w]rV  r   z[^b\S]z[^8\d]za 1b2c              3   4   K   | ]}t          |          V  d S r   rk   r   r   s     r   	<genexpr>z&RegexTests.test_set.<locals>.<genexpr>  s(      99qCFF999999r   r~  z	\p{ASCII}r  z
\p{Letter}u   z	\p{Digit}r_   z(?V1)[\p{ASCII}&&\p{Letter}]4   z'(?V1)[\p{ASCII}&&\p{Alnum}&&\p{Letter}]z&(?V1)[\p{ASCII}&&\p{Alnum}&&\p{Digit}]z(?V1)[\p{ASCII}&&\p{Cc}]!   z(?V1)[\p{ASCII}&&\p{Graph}]^   z(?V1)[\p{ASCII}--\p{Cc}]_   z[\p{Letter}\p{Digit}]r  z(?V1)[\p{Letter}||\p{Digit}]z\p{HexDigit}   z(?V1)[\p{HexDigit}~~\p{Digit}]rb   z(?V1)[\p{Digit}~~\p{HexDigit}]z(?V0)([][-])z(?V1)[[a-z]--[aei]]r   r   z(?iV1)[[a-z]--[aei]]z(?V1)[\w--a]z(?iV1)[\w--a])r)   r-   rB   rA   rj   r/   rM  r  lenr   r"   r.   r   )r   	all_charss     r   test_setzRegexTests.test_set  s%   VS116688&AAAZ55::<<fEEEXt4499;;VDDD\488==??HHH>4AA7KKK~t<<seDDD'94@@3%HHH>>c
KKK>>c
KKK':EBBS
E 	 	 	':EBBS
E 	 	 	 	'8&AA D D D 	 	 	'<fEE H H H 	 	 	 	~t<<seDDD~t<<seDDD==uEEE==uEEEz:!F!FGG
	 	 	y*!E!EFF
	 	 	|[!I!IJJ
	 	 	y%!@!@AA3GGGy%!@!@AA3GGGy'!B!BCCUKKKGG99E%LL99999	U]<CCDDcJJJU]=)DDEE
	 	 	U]<CCDDbIII 	U]+J
   	 	 	U]+U
   	 	 	U]+T
   	 	 	U]+F
   	 	 	U]+I
   	 	 	U]+F
   	 	 	U]+C
   	 	 	U]+J
   	 	 	U]?IFFGG
	 	 	U]+L
   	 	 	U]+L
   	 	 	 	d5=#A#ABBCC

	 	 	'=uEE
H 	 	 	'>FF
I 	 	 	u==SzJJJ'7>>c
KKKKKr   c           
      W   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 }|ra|                    dp          D ]J}		 |                    t'          |	                     &# t(          $ r |                    |	           Y Gw xY w|T|                     ||q          5  |                     ||t           j        ||           d d d            n# 1 swxY w Y   t          j        ||          }
|
r2|rt           |
j        |           }n't          |
d d                    }nt          |
          }|                     ||           U# t(          $ r\ dr                    ds |d dt         D             dugz             }|                     dv                    |                     Y w xY wd S (w  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 \\rP  acbrQ  rR  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?crE  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\brD  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)rA  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|erX  z(a|b|c|d|e)fr  )r  rX  zabcd*efgabcdefgzab*	xabyabbbzxayabbbzz(ab|cd)er|  )r  r  z[abhgefdc]ijhijz	^(ab|cd)ez(abc|)efr2  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)rL  rL  Nij)rM  rM  jeffgbcddreffgzz(((((((((a)))))))))zmultiple words of textzuh-uhzmultiple wordszmultiple words, yeahz	(.*)c(.*))r|  r  r  z\((.*), (.*)\)z(a, b)z2,1)r   r\   z[k]za[-]?cz(abc)\1r  z
([a-c]*)\1z^(.+)?BABrg   z(a+).\1$r   )r   r  z	^(a+).\1$aaaa)r  r   z
([a-c]+)\1z(a)\1)r  r\   z(a+)\1z(a+)+\1z(a).+\1r  )r  r\   z(a)ba*\1z
(aa|a)a\1$r<   )r<   r\   z
(a|aa)a\1$z(a+)a\1$z
([abc]*)\1z
(a)(b)c|ab)r  NNz(a)+xaaax)rT  r\   z([ac])+xaacx)rU  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)rV  track1titlezBlah blah blahz	([^N]*N)+abNNxyzN)rY  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)rS  r<   z(?P<id>aa)(?P=id))rS  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  rS  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)rc  r   z([abc])*bcd)r  r\   z((((((((((a))))))))))10z((((((((((a))))))))))\10z((((((((((a))))))))))\41z(?i)((((((((((a))))))))))\41z(?i)abcr\  XBCAXCABXXABCYABABCz(?i)ab*cz	(?i)ab*bcABBCz
(?i)ab*?bcABBBBCz(?i)ab{0,}?bcz
(?i)ab+?bcz	(?i)ab+bcABQz(?i)ab{1,}bcz(?i)ab{1,}?bcz(?i)ab{1,3}?bcz(?i)ab{3,4}?bcz(?i)ab{4,5}?bcz
(?i)ab??bcz(?i)ab{0,1}?bcz	(?i)ab??cz(?i)ab{0,1}?cz	(?i)^abc$ABCCz(?i)^abcAABCz(?i)abc$z(?i)^z(?i)$z(?i)a.cz	(?i)a.*?cAXYZCz(?i)a.*cAXYZDz
(?i)a[bc]dABDz(?i)a[b-d]eACEz
(?i)a[b-d]AACACz	(?i)a[-b]zA-z	(?i)a[b-]z
(?i)a[b-a]z(?i)a[]bz(?i)a[z(?i)a]zA]z	(?i)a[]]bzA]Bz(?i)a[^bc]dAEDz(?i)a[^-b]cADCzA-Cz(?i)a[^]b]czA]Cz	(?i)ab|cdABCDz(?i)()efDEF)EFr   z(?i)*az(?i)(*)bz(?i)$br  z(?i)a\z(?i)a\(bA(B)rz  z	(?i)a\(*bzA((Bz(?i)a\\bzA\Bz(?i)abc)z(?i)(abcz	(?i)((a)))rg   rg   rg   z(?i)(a)b(c))r\  rg   r  z	(?i)a+b+cAABBABCz(?i)a{1,}b{1,}cz(?i)a**z	(?i)a.+?cABCABCz(?i)a.{0,5}?cz(?i)(a+|b)*)rR  r  z(?i)(a+|b){0,}z(?i)(a+|b)+z(?i)(a+|b){1,}z(?i)(a+|b)?)rg   rg   z(?i)(a+|b){0,1}z(?i)(a+|b){0,1}?r   Nz(?i))(z
(?i)[^ab]*CDEz(?i)a*z(?i)([abc])*dABBBCD)r  r  z(?i)([abc])*bcd)rw  rg   z(?i)a|b|c|d|eEz(?i)(a|b|c|d|e)fry  )ry  r  z(?i)abcd*efgABCDEFGz(?i)ab*	XABYABBBZXAYABBBZz(?i)(ab|cd)eABCDE)r~  CDz(?i)[abhgefdc]ijHIJz(?i)^(ab|cd)ez(?i)(abc|)efr  z(?i)(a|b)c*d)BCDr  z(?i)(ab|ab*)bc)r\  rg   z(?i)a([bc]*)c*)r\  BCz(?i)a([bc]*)(c*d))rw  r  Dz(?i)a([bc]+)(c*d)z(?i)a([bc]*)(c+d))rw  r  r  z(?i)a[bcd]*dcdcdeADCDCDEz(?i)a[bcd]+dcdcdez(?i)(ab|a)b*c)r\  rR  z(?i)((a)(b)c)(d))r\  rg   r  r  z(?i)[a-zA-Z_][a-zA-Z0-9_]*ALPHAz(?i)^a(bc+|b[eh])g|.h$ABH)BHNz(?i)(bc+d$|ef*g.|h?i(j|k))EFFGZ)r  r  NIJ)r  r  JEFFGBCDDREFFGZz(?i)((((((((((a))))))))))z(?i)((((((((((a))))))))))\10AAz(?i)(((((((((a)))))))))z+(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a))))))))))z/(?i)(?:(?:(?:(?:(?:(?:(?:(?:(?:(a|b|c))))))))))r  z(?i)multiple words of textzUH-UHz(?i)multiple wordszMULTIPLE WORDS, YEAHzMULTIPLE WORDSz(?i)(.*)c(.*))r  rR  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   rX  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
123rp  z--ab_cd0123--	ab_cd0123z[\w]+z\D+1234abc5678z[\D]+z[\da-fA-F]+123abcz([\s]*)([\S]*)([\s]*)z testing!1972z3,2,1)r   ztesting!1972r   z(\s*)(\S*)(\s*)z(([a-z]+):)?([a-z]+)$smilz1,2,3)NNr  z((.)\1+)z.*dzabc
abdr  z[\41]!z(x?)?z	 (?x)foo r  z	(?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   rr  )rx   r?  r  c                 ,    g | ]}t          |          S rS   )rG  )r   fs     r   r   z+RegexTests.test_various.<locals>.<listcomp>	  s    #>#>#>E!HH#>#>#>r   r;   ...z%Incorrect number of test fields: ({}))r-   r   r   r   MISSING_RPARENrG  UNKNOWN_GROUPr   rk   TRAILING_CHARSr  
BAD_ESCAPEBAD_CHAR_RANGENOTHING_TO_REPEATMULTIPLE_REPEAT
OPEN_GROUPr   r   appendrF   r}   subTestr|   r@   r   r)   rM  r0   rF  )r   rk  r  excvalrx   r?  r;  rm  
group_listr   rU   r#   fieldss                r   test_variouszRegexTests.test_various  s>   y

BEKAy

 Rd.ABy

 Rd.AB	y


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

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

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

+Ky

L 9:Je34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$KK0sy

v E$KK0wy

x eO6L6LMyy

z eO6L6LM{y

| nc5Q#b''9I"gg:B: "%b'':*,/FF:3 44 44 5}y

@ ).#N##%Ay

F .<c89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$KK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$KK0Oy

P UCu.Qy

T eS%,,/Uy

V fb%++.Wy

X VS%,,/Yy

Z fb%++.[y

\ VS%,,/]y

^ %eBii(_y

` %eBii(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%LL1sy

t uc5;;/uy

v dCt-wy

x c5;;/yy

z dCt-{y

| S"ek4<8}y

@ 3EK6Ay

B CU[$/:Cy

D S"ek4+>?Ey

F S"ek4+>?Gy

H 4eDkk*Iy

J eS%,,/Ky

L eS%,,/My

N sE%LL1Oy

P r5;;/Qy

R sE%LL1Sy

V r5;;/Wy

X r5;;/Yy

Z sE%LL1[y

\ c5::.]y

^ c5::._y

` sE#JJ/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#JJ/Ey

F eS%++.Gy

H fc5;;/Iy

J UE5#4#45Ky

L 3E$KK(My

N eRx1Oy

P tS%++.Qy

R vsE&MM2Sy

T vsE&MM2Uy

X eWeO&<&<=Yy

Z w.?(@(@A[y

\ ieEll3]y

^ eU;%7%78_y

` eU;%7%78ay

b eU:%6%67cy

d 3EK)<=ey

f uc5<<0gy

h BE$KK(iy

j 2sE"II&ky

n #sE#JJ/oy

p T5%*<*<=qy

r Cy)9)9:sy

t KeDkk2uy

v JU3ZZ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/IJIy

J fgu5H/I/IJKy

L fgu5H/I/IJMy

N ieI.>.>?Oy

P iU4[[9Qy

R %m(<(<=Sy

T VY6L0M0MNUy

V &wU7^^DWy

Z "5%|1D1DE[y

\ &w @ : : ]y

` &tWe = 7 7 ay

d &vr5;;?ey

f &vr5;;?gy

h &x% A ; ; iy

l #CeCjj9my

n &wE$KK@oy

p 5s$%%'qy

t '7E2G,H,HIuy

x  5%
2C2CDyy

z D"eDkk*{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*BCIy

J HeU3D-E-EFKy

N tUE+$6$67Oy

P eU;%7%78Qy

R ueK&8&89Sy

T u\':':;Uy

V %l(;(;<Wy

X E5%*=*=>Yy

Z E5%*=*=>[y

\ %l(;(;<]y

^ HeU3D-E-EF_y

` 4%0B*C*CDay

d feU=%9%9:ey

f m(<(<=gy

h @%2335iy

l +,J  ) * *+my

r *eU3G-H-HIsy

t )UE-,@,@Auy

v &%)?)?@wy

x %U4[[1yy

z &%y)9)9:{y

| %m(<(<=}y

B fb%+t7JKCy

D VVU?-C-CDEy

F !&&%2G2GHGy

H !&"ek4;MNIy

N CeCjj)Oy

P sBT-CDQy

R $U4[[1Sy

T $E+$6$67Uy

V CeCjj)Wy

X )#sE#JJ?Yy

Z CeCjj)[y

\ S%**-]y

^ CeCjj)_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$KK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	 %eEll3W	y

X	 hE$KK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	 %eBii(k	y

l	 %eBii(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%LL1	y

@
 uc5;;/A
y

B
 dCt-C
y

D
 dCt-E
y

F
 sBT-@AG
y

H
 S"ek4<8I
y

L
 3EK6M
y

N
 4eDkk*O
y

P
 eS%,,/Q
y

R
 sE%LL1S
y

T
 r5;;/U
y

V
 sE%LL1W
y

X
 r5;;/Y
y

Z
 r5;;/[
y

\
 sE%LL1]
y

^
 eS%++._
y

b
 fc5;;/c
y

d
 UE5#4#45e
y

f
 3EK)?@g
y

h
 S"ek4+ABi
y

j
 3E$KK(k
y

l
 CU[$/:m
y

n
 eRx1o
y

p
 tS%++.q
y

r
 vsE&MM2s
y

t
 vsE&MM2u
y

x
 S"ek4+>?y
y

z
 S"ek4+>?{
y

|
 eWeO&<&<=}
y

~
 w.?(@(@A
y

@ ieEll3Ay

B IsE%LL9Cy

D CU[$*>?Ey

F hU5\\2Gy

H eU;%7%78Iy

J 4k(:(:;Ky

N eU;%7%78Oy

P 4k(:(:;Qy

R eU:%6%67Sy

T D%z):):;Uy

V 3EK)<=Wy

X uc5<<0Yy

Z BE$KK([y

\ 2sE"II&]y

^ (E5+A+AB_y

` FE5+?+?@ay

d #sE#JJ/ey

f T5%*<*<=gy

h Cy)9)9:iy

j KeDkk2ky

l JU3ZZ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/IJy

@ fgu5H/I/IJAy

B fgu5H/I/IJCy

D ieI.>.>?Ey

F iU4[[9Gy

H %m(<(<=Iy

J VY6L0M0MNKy

L &wU7^^DMy

P "5%|1D1DEQy

R &w @ : : Sy

V &tWe = 7 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"ek$&sy

x #CeCjj9yy

z &wE$KK@{y

| 5s$%%'}y

@ '7E2G,H,HIAy

B  5%
2C2CDCy

D D"eDkk*Ey

F tS%++.Gy

H 3e5Iy

J Hc5<<8Ky

L sE%LL1My

P r5;;/Qy

R r5;;/Sy

T r5;;/Uy

V eEll3Wy

X eEll3Yy

Z U5\\2[y

\ %eEll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eHoo>sy

t xeHoo>uy

v xU4[[9wy

x 63f6yy

| 5#uU||4}y

~ uc5<<8y

@ 8Rt5Ay

B %eEll3Cy

D eS%,,7Ey

F %eEll3Gy

H &"eDkk2Iy

J eEll3Ky

L &"eDkk2My

N eEll3Oy

R eS%)),Sy

T eS%)),Uy

V sE%LL1Wy

X sE%LL1Yy

Z '3g7[y

\ "eDkk2]y

^ 5"eDkk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EK1DEoy

p b%+t|<qy

r sBT\:sy

t tS%++.uy

v %eEll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 %eDkk2Gy

H &#uT{{3Iy

J uZ'8'89Ky

L sBT-CDMy

N b%+t/EFOy

P sBd,Qy

T Rdo>Uy

V %U8__5Wy

X 4eDkk2Yy

Z 63f6[y

\ 63f6]y

^ b%+t/BC_y

` b%+t/BCay

b %%*@*@Acy

d E7E2C,D,DEey

f )S%,,7gy

j 	3e=ky

l Rd.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/EFMy

N u]/C/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-AB]y

^  U5\\:_y

` gr5;;7ay

b XueJ.?.?@cy

d VUE,,?,?@ey

f ueU<-@-@Agy

h ueU=-A-ABiy

l !&'59L3M3MNmy

n !&'59L3M3MNoy

p !&'59L3M3MNqy

r !)S%	2B2BCsy

t !)Rt=uy

v eUE-,@,@Awy

x  E ; 5 5 yy

| *7CwH}y

~ &ueU<5H5H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 )#tU3ZZ@Sy

T -dCtEUy

Z 'S%**=[y

\ ;CCjj]y

` ?SCjjay

d *7BdDey

h "#93#$$&iy

l gw6K0L0LMmy

n $XueJ6G6GHoy

p b%++.qy

v 4eDkk2wy

x XsE%LL9yy

z #uU||<{y

| U4[[1}y

~ U4[[1y

@ &#uT{{3Ay

D eS%**5Ey

F uc5::6Gy

H sE#JJ7Iy

J )%j8I8IJKy

P #L#uXGQy

T )-eI>N>NOUy

X 'c5??KYy

` S"ek43FGay

b 0eFmmLcy

p c3d,qy

r c3c

+sy

t c3c

+uy

z c5=="{y

F  
E$KK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(OO<oy

t & H# B$ B$ %uy

x  '5 B# <$ <$ %yy

F &vw ? 9 9 Gy

L "b%+t?My

P ZeEll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 %eEll3ey

h {Cu>iy

l c5+>+>?my

p %eEll3qy

r  3h@sy

t  Cy1A1ABuy

x #9c599=yy

| sE%LL1}y

~ sE%LL1y

@ %eEll3Ay

B %eEll3Cy

L !'3g?My

P *Bd<Qy

T %U4[[1Uy

X ub%++.Yy

\ tWe4F.G.GH]y

` "5%|1D1DEay

b !%l0C0CDcy

d "5%|1D1DEey

h sCs,iy

j BCFmmky

n ?Fmmoy

v  !	7 !	7AF7q66Q;;895GVVXX@A=GVVXv
  
 5!'c!2!2 5 55&--c%jj9999) 5 5 5&--e444445 %gfEE + +..x!6+ + ++ + + + + + + + + + + + + + + Wf55A *% 1%*717J+?%@%@FF%*1QQQ4[[FF!&q$$VX66665  R R R#>#>a1g#>#>#>%#HII		AHHPPQQQQQR!	7 !	7sI   h&$Bm5i'"Bj
j
Bj,j+Bj,k	$Bk9k9Bk=	l Bk=	m5A"BooBoc                    |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dt          j        d          d          d           |                      t          j        ddd          d           |                      t          j        dd	 d          d           d S )
Nztest\?zresult\?\.
ztest?r  \1\1r%   rY   z\\1\\1c                     dS )Nr  rS   rT   s    r   rV   z-RegexTests.test_replacement.<locals>.<lambda>	  s    G r   )r)   r-   rj   r  rC   s    r   test_replacementzRegexTests.test_replacement	  s    9.@'JJ
	 	 	 	5'377>>>5%,w*?*?EEwOOO5)S997CCC5*;*;SAA7KKKKKr   c           	         t           j        t           j        z   t           j        z   }|dz  }d|z   dz   |z   dz   }|                     t          t          t          j        |                              | j	                   d S )Nr   r  r  r  )
r?  ascii_lowercasedigitsascii_uppercaser)   r   r"   r-   r.   r   )r   allsideregexps       r   test_common_prefixzRegexTests.test_common_prefix	  ss    $v}4v7MMQwtc!D(3.d5=#8#899::D<NOOOOOr   c                 
   |                      t          j        dd                              d          g d           |                      t          j        dd                              dd          dgddgf           |                      t          j        d	d
                              dd          dgg df           |                      t          j        dd                              dd          g dg df           |                      t          j        dd                              ddd          dgg ddgf           |                      t          j        dd                              d          dg           |                      t          j        dd                              d          ddg           |                      t          j        dd                              d          dg           d S ) Nz(\w)+r   r:   r  z(\w{3})+r2  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6??BB E E E 	 	 	k8<<EEaKK:u~
&	( 	( 	(&F
 !!Q5)5F5F5F)G	I 	I 	I%G
! !!)!Q2J2J2J
(
(
(2*	+ 	+ 	+ 	%@
 "(1a++tf6N6N6N&.	 	 	 	ot<<EEaHH%	 	 	&96BBKKANN*	 	 	gs33<<Q??#GGGGGr   c                    t          j        dd          }|                     |                    ddd          d           t          j        dd          }|                     |                    ddd          d           t          j        d	d
          }|                     |                    ddd          d           t          j        dd          }|                     |                    dd          d           t          j        dd          }|                     |                                d           t          j        dd          }|                     |                                d           d S )Nz(X.*?Y\s*){3}(X\s*)+AB:zXY
X Y
X  Y
XY
XX AB:r   r:   r   ))r;      rb      r     z(X.*?Y\s*){3,}(X\s*)+AB:))r   r  r  r  z\d{4}(\s*\w)?\W*((?!\d)\w){2}9999XX)rn  r  )   r3  zA\s*?.*?(\n+.*?\s*?){0,2}\(Xz
A
1
S
1 (X)r   r_   )r  rj  z	Derde\s*:zaaaaaa:
Derde:)rj     zaaaaa:
Derde:)rc   ra   )r-   r@   r)   rA   rH  s     r   test_guardszRegexTests.test_guards	  sL   L3
%' '1a*GHHHL4
%' '1a*GHHHL98DD1a*DEEEL8/JJ1'8999L'8997+++L'7887+++++r   c           
         d}t                      }t                      }|                    d          D ]}|                    d          \  }}|                    ||f           |                    ||f           |                    ||f           |                    ||f           |                    ||f           |D ]}|D ]}t	          j        d|z   dz   |          }|rJ||f|vrC|                     d                    t          |          t          |                               i||f|v rC|                     d                    t          |          t          |                               d S )Nu   I=i;I=ı;i=İ;=z(?i)\A\Zz{} matching {}z{} not matching {})	rf  r   updateaddr-   rB   r0   rF  rG  )r   pairsr!  matchingpairrr  rs  rU   s           r   test_turkiczRegexTests.test_turkic	  s   'EE	55KK$$ 	% 	%Dzz#HCc3Z(((LL#s$$$LL#s$$$LL#s$$$LL#s$$$$ 
	' 
	'C  	' 	'K	C% 7== 'Sz11		"2"9"9%****#& #& ' ' ' SzX--		"6"="=eCjj**#& #& ' ' '	'
	' 
	'r   c                    g d}|                      t          j        dd|                                          d           |                      t          j        dd|                                          d           |                      t          j        dd|          d            g d}|                      t          j        d	d
|                                          d
           |                      t          j        dd|                                          d           |                      t          j        d	d|          d            |                      t	          t          t          j        dg d                              | j                   |                      t          j        ddt          g d                    g            |                      t          j        ddt          g d                    dg           dg}|                      t          j        dd|          
                                d           ddg}|                      t          j        dd|          
                                d           dg}|                      t          j        dd|          
                                d           dg}|                      t          j        dd|          
                                d            |                      t          j        dd!|          
                                d            |                      t          j        d"d#          
                                d$           |                      t          j        d"d%          
                                d$           |                      t          j        d&d'g           
                                d(           d S ))N)onetwothreez333\L<bar>444	333one444)r  z(?i)333\L<bar>444	333TWO444
333four444)s   ones   twos   threes   333\L<bar>444s	   333one444s   (?i)333\L<bar>444s	   333TWO444s
   333four444z3\L<bar>4\L<bar>+5z^\L<options>zsolid QWERT)good	brilliantz	+s\ol[i}drl  z+solid QWERT)r  r  +solidr  STRASSE(?fi)\L<words>u   straßewordsrn  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/   rf  rA   r@   )r   rm  s     r   test_named_listszRegexTests.test_named_lists	  s   )))%5{  uww	- 	- 	-%9;  uww	- 	- 	-%5|  	 	 	 -,,%6  uww	. 	. 	.%:L  uww	. 	. 	.%6  	 	 	 	d5=1F%%%$' $' $' ( ( ) )*.*<	> 	> 	> 	999::< < <=?	A 	A 	A555668 8 8:B	E 	E 	E +%6
/w@ @ @@D I	 	 	 h'%6
/w@ @ @@D I	 	 	 99%6	  	) 	) 	) '&6  	) 	) 	)&6
9  	) 	) 	) 	&;
9; ;;?4667	L 	L 	L&;
9; ;;?4667	L 	L 	L 	&6BGGGLLNN
	 	 	 	 	r   c           	      #   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   |                      t          t          t          j        d                              | j                   d}|                      t          j        d|          d            |                      t          j        d	|                              d
d          d           |                      t          j        d|          d            |                      t          j        d|          d
         d           |                      t          j        d|          d
         d           d}|                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          j        d|                              d
d          d           |                      t          t          t          j        d                              | j                   |                      t          j        dd                              d
d          d           |                      t          j        dd                              d
d          d            |                      t          j        d!d                              d
d          d"           |                      t          j        d#d$                              d
d          d%           |                      t          j        d#d&          d            |                      t          j        d'd(                              d
d          d)           |                      t          j        d*d+                              d
d          d,           |                      t          j        d*d-                              d
d          d           |                      t          j        d.d-                              d
d          d/           |                      t          j        d0d1                              d
d          d           |                      t          j        d0d2                              d
d          d3           |                      t          j        d0d4                              d
d          d3           |                      t          j        d0d5                              d
d          d3           |                      t          j        d0d6                              d
d          d           |                      t          j        d0d7                              d
d          d           |                      t          j        d0d8                              d
d          d           |                      t          j        d0d9                              d
d          d:           |                      t          j        d0d;                              d
d          d:           |                      t          j        d0d<                              d
d          d:           |                      t          j        d0d=          d            |                      t          j        d0d>          d            |                      t          j        d0d?          d            |                      t          j        d0d@          d            |                      t          j        d0dA          d            |                      t          j        dBdC                              d
d          dD           |                      t          j        dEdC                              d
d          dF           |                      t          j        dGdH                              d
d          dI           |                      t          j        dGdJ          d            |                      t          j        dGdK                              d
d          dL           dM}|                      t          j        dN|                              d
d          dO           |                      t          j        dP|                              d
d          dQ           |                      t          j        dR|                              d
d          dS           |                      t          j        dTdUdV	                                W          dXdYg           |                      t          j        dTdZdV	                                W          d[dXg           |                      t          j        d\dZdV	                                W          dYdXg           |                      t          j        d]dUdV	                                W          d^dXg           |                      t          j        d_dUdV	                                W          dYdXg           |                      t          j        d]dZdV	                                W          dXdYg           |                      t          j        d`dadb	                                W          dcddg           |                      t          j        d`dedb	                                W          dfdcg           |                      t          j        dgdedb	                                W          dddcg           |                      t          j        dhdadb	                                W          didcg           |                      t          j        djdadb	                                W          dddcg           |                      t          j        dhdedb	                                W          dcddg           |                      t          j        dkdl          
                                dm           |                      t          j        dndl          
                                dm           |                      t          j        dodp          
                                dq           |                      t          j        drds          dsdtg           |                      t          j        dudv          dvdtg           |                      t          j        dwdx                                          dy           |                      t          j        dwdz                                          d{           |                      t          j        dwd|                                          d}           |                      t          j        dwd~          d            |                      t          j        dwd                                          d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        d           |                      t          j        dd          j        g ddgg f           |                      t          t          j        dd                    d           d S )Nz(fou){s,e<=1}z(fuu){s}z
(fuu){s,e}z(anaconda){1i+1d<1,s<=1}z(anaconda){1i+1d<1,s<=1,e<=10}z(anaconda){s<=1,e<=1,1i+1d<1}z-molasses anaconda foo bar baz smith anderson z(znacnda){s<=1,e<=3,1i+1d<1}z(znacnda){s<=1,e<=3,1i+1d<2}r   r:   )r^      r   z(ananda){1i+1d<2}z(?:\bznacnda){e<=2}anacondaz(?:\bnacnda){e<=2}z#anaconda foo bar baz smith andersonz(fuu){i<=3,d<=3,e<=5})r6   r6   z(?b)(fuu){i<=3,d<=3,e<=5})r^   r_   r  z(fuu){i<=2,d<=2,e<=5})rc   r_   r  z(?e)(fuu){i<=2,d<=2,e<=5}z(fuu){i<=3,d<=3,e}z(?b)(fuu){i<=3,d<=3,e}z(approximate){s<=3,1i+1d<3}z(foobar){e}xirefoabralfobarxie)rn  rn  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   rj  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)r3  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;   r3  fobarzapfoobrzap)r  r;   r  zxwww.cnn.com 64.236.16.20
www.slashdot.org 66.35.250.150
For useful information, use www.slashdot.org
this is demo data!
z(?s)^.*(dot.org){e}.*$)r   x   )r+  r+  z(?es)^.*(dot.org){e}.*$)r*  )]   d   z^.*(dot.org){e}.*$))r   w   )   e   z\b\L<words>{e<=1}\bz book cot dog desk zcat dogr  cotdogz book dog cot desk z dogz(?e)\b\L<words>{e<=1}\bz(?r)\b\L<words>{e<=1}\bzdog z(?er)\b\L<words>{e<=1}\bs   \b\L<words>{e<=1}\bs    book cot dog desk s   cat dogs   cots   dogs    book dog cot desk s    dogs   (?e)\b\L<words>{e<=1}\bs   (?r)\b\L<words>{e<=1}\bs   dog s   (?er)\b\L<words>{e<=1}\bz(\w+) (\1{e<=1})zfoo fou)r  fouz(?r)(\2{e<=1}) (\w+)s   (\w+) (\1{e<=1})s   foo fou)s   foos   fouz(?:(?:QR)+){e}r|  r   z	(?:Q+){e}r   z(?:service detection){0<e<5}zservic detection)r   r  zservice detect)r   r  zservice detecti)r   r  zservice detectionzin service detection)r      (?:cats|cat){e<=1}catr   r   r:   (?e)(?:cats|cat){e<=1}r   r   r   z(?:cat|cats){e<=1}catsr   r:   r   z(?e)(?:cat|cats){e<=1}z(?:cat){e<=1} (?:cat){e<=1}zcat cotr:   r   r   z/(?e)(GTTTTCATTCCTCATA){i<=4,d<=4,s<=4,i+d+s<=8}ATTATTTATTTTTCATA)r   r3  r_   r`   r;   z(?:fo){e<=1}|(?:fo){e<=2}FOT)r)   r   r"   r-   r.   r   r@   rA   r/   r   r;  rB   	fullmatchfuzzy_countsfuzzy_changesr.  r  s     r   
test_fuzzyzRegexTests.test_fuzzy4
  s   d5=#A#ABBCC

	 	 	d5=#<#<==>>

	 	 	d5=#>#>??@@

	 	 	d5=1K#L#LMMNN

	 	 	d5=1Q#R#RSSTT

	 	 	d5=1P#Q#QRRSS

	 	 	 ?&DdKK
	 	 	&D
 Q

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

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

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

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

4H	J 	J 	J 	&8(CCHHANN
	 	 	&8)DDII!
 	  	  	 &8)DDII!
 	  	  	 &8)DDII!
 	  	  	 &8(CCHHANN
	 	 	&8(CCHHANN
	 	 	&8(CCHHANN
	 	 	&8'BBGG1MM
	 	 	&8'BBGG1MM
	 	 	&8'BBGG1MM
	 	 	&8*EEtLLL&8*EEtLLL&8*EEtLLL&8)DDdKKK&8)DDdKKK
 	&H
46 66:d1ajj C	 	 	 	&L
46 66:d1ajj C	 	 	
 	&9;GGLLQ
 	  	  	 &9:FFMMM&9:FFKKA
 	  	  	 O&?FFKKA
 $	& 	& 	&&@$GGLLQ
 #	% 	% 	%&;TBBGG1MM
	! 	! 	!
 	'=
y'8'8: : :<A5>	K 	K 	K'=
y'8'8: : :<BE?	L 	L 	L'A
y'8'8: : :<A5>	K 	K 	K'A
y'8'8: : :<BE?	L 	L 	L'B
y'8'8: : :<A5>	K 	K 	K'A
y'8'8: : :<A5>	K 	K 	K'>
 
(8(8(:(:< < <>Df=M	O 	O 	O'>
 
(8(8(:(:< < <>Ev=N	P 	P 	P'B
 
(8(8(:(:< < <>Df=M	O 	O 	O'B
 
(8(8(:(:< < <>Ev=N	P 	P 	P'C
 
(8(8(:(:< < <>Df=M	O 	O 	O'B
 
(8(8(:(:< < <>Df=M	O 	O 	O 	&99EELLNN
	 	 	&=
 VXX~	/ 	/ 	/&:
 fhh 0	2 	2 	2 	'8'BBW
E 	 	 	|U;;eR[III 	%D
 "dffg	/ 	/ 	/%D
  DFFG	- 	- 	-%D
 !TVVW	. 	. 	.%D
  $	& 	& 	&%D
 " ""&$&&'	3 	3 	3 	)>
 y	* 	* 	*)B
 y	* 	* 	* 	)>
 		+ 	+ 	+)B
 		+ 	+ 	+ 	)G
 !9	. 	. 	. 	&X
 ,~~~sB.G	I 	I 	I 	ek*EtLLMM
	 	 	 	 	r   c                    |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d d          d	           |                      t          j        dd
          d d          d           |                      t          j        dd          d            |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        dd
          d d          d           |                      t          j        dd          d            |                      t          j        dd          d d          d           |                      t          j        dd                              d          g d           |                      t          j        dd          d d          d           |                      t          j        dd                              d          g d           |                      t          j        dd          d d          d           |                      t          j        dd          d d          d           |                      t          j        d d!          d d          d"           |                      t          j        d#d!          d d          d"           t          j        d$          }|                      t          |                    d%                    d&           |                      t          |                    d'                    d(           |                      t          |                    d)                    d&           |                      t          |                    d*                    d(           |                      t          |                    d+                    d(           |                      t          |                    d,                    d(           |                      t          |                    d-                    d&           |                      t          |                    d.                    d&           |                      t          |                    d/                    d(           |                      t          |                    d0                    d&           |                      t          |                    d1                    d&           |                      t          |                    d2                    d&           d S )3Nz(\w)(?:(?R)|(\w?))\1rY   )rY   r%   r   r  )r  r\   r   abba)rD  r\   Nkayak)rE  r(  Npaper)papr  r\   dontmatchmez(?r)\2(?:(\w?)|(?R))(\w))rY   r   r%   )r  r   r\   )rD  Nr\   )rE  Nr(  )rG  r\   r  z\(((?>[^()]+)|(?R))*\)
(ab(cd)ef))rI  r  r:   )r  r  (cd)r  z(?r)\(((?R)|(?>[^()]+))*\))rI  r  )r  r  rJ  r  z\(([^()]+|(?R))*\)zsome text (a(b(c)d)e) more text)(a(b(c)d)e)rX  z(?r)\(((?R)|[^()]+)*\))rK  r\   z!(foo(\(((?:(?>[^()]+)|(?2))*)\)))foo(bar(baz)+baz(bop)))rL  rL  z(bar(baz)+baz(bop))zbar(baz)+baz(bop)z%(?r)(foo(\(((?:(?2)|(?>[^()]+))*)\)))zv^\s*(<\s*([a-zA-Z:]+)(?:\s*[a-zA-Z:]*\s*=\s*(?:'[^']*'|"[^"]*"))*\s*(/\s*)?>(?:[^<>]*|(?1))*(?(3)|<\s*/\s*\2\s*>))\s*$z<foo><bar></bar></foo>Tz<foo><bar></foo></bar>Fz<foo><bar/></foo>z<foo><bar></foo>z<foo bar=baz/>z<foo bar="baz">z<foo bar="baz"/>z<    fooo   /  >z	foo<foo/>z<foo>foo</foo>z<foo><bar/>foo</foo>z<a><b><c></c></b></a>)r)   r-   r@   r  r.   r.  )r   rgxs     r   test_recursivezRegexTests.test_recursive
  s   &=tDDaaaI
	 	 	&=uEEqqqJ
	 	 	&=vFFK
	 	 	&=wGGL
	  	  	 &=wGGL
	 	 	&=}MM
	 	 	 	&A4HH!!!M
	 	 	&A5II111N
	 	 	&A6JJAAA  	" 	" 	"&A7KKQQQ !	# 	# 	#&A7KKQQQ 	  	  	 &A
 	  	  	  	&?NN
!!#	% 	% 	%&?
  %?%?%?	A 	A 	A 	&C
 2	4 	4 	4&C
  %?%?%?	A 	A 	A 	&;
+- -./aa23G	I 	I 	I 	&?
+- -./aa23G	I 	I 	I 	&J
"$ $%&QQ)+	  	  	 
 	&N
"$ $%&QQ)+	  	  	 
 m  Z  [  [cjj)ABBCCTJJJcjj)ABBCCUKKKcjj)<==>>EEEcjj);<<==uEEEcjj)9::;;UCCCcjj):;;<<eDDDcjj);<<==tDDDcjj);<<==tDDD 	cjj5566>>>cjj)9::;;TBBBcjj)?@@AA4HHHcjj)@AABBDIIIIIr   c                    t          j        d          }|                     t          j        |          |u            |                     t          j        |          |u            |                    d          }|                     t          j        |          |u           |                     t          j        |          |u           |                     |j        d u           t          j        |          }|                                 |                     |j        d u           |                     |j        d u            t          j        dd          }t          j        |          }| 	                    t          |                                          d           | 	                    t          |                                          d           t          j        dd          }t          j        |          }| 	                    t          |                                          d           | 	                    t          |                                          d           t          j        dd          }t          j        |          }| 	                    t          |          d           | 	                    t          |          d           t          j        dd          }t          j        |          }| 	                    t          |          d           | 	                    t          |          d           d S )Nr\   rP   r  r   r   rV  )r-   r.   
assertTruecopydeepcopyrB   r?  detach_stringr  r)   r  r   r   )r   rrU   m2r  it2s         r   	test_copyzRegexTests.test_copy<  s   M#	!)***a((A-...
 GGCLL	!A-...a((1222,---Yq\\
,---	T)*** ^C&&immb))3///c**C000 ^C&&mBb))3///c**C000 _S%((immb3'''cC((( _S%((mBb3'''cC(((((r   c                    |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d	           |                      t          j        dd                              d          d           d S )
Nr  z{0} => {2} {1}r  foo bar => bar fooz(?<word1>\w+) (?<word2>\w+)z{word2} {word1}bar foo)rY  r:   )rZ  r:   )r)   r-   subfsubfnrB   expandfrC   s    r   test_formatzRegexTests.test_formatg  s   N4D
 *	, 	, 	,$B
Y( ()2	4 	4 	4 	^5E
 /	1 	1 	1%C
Y( ()7	9 	9 	9 	^
 W-..0D	F 	F 	F 	F 	Fr   c           
      :   |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        ddd                    d           |                      t          t          j        ddd	                    d           |                      t          t          j        dd
d	                    d           |                      t          t          j        dd
dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        ddd                    d           |                      t          t          j        ddd	                    d           |                      t          t          j        dd
d	                    d           |                      t          t          j        dd
dd                    d           d S )Nr   Tr^  Fr;   )r>  xabcr:   )r=  r/  r   r  z(?r)abcr)   r.  r-   r?  rC   s    r   test_fullmatchzRegexTests.test_fullmatchu  sm   eofe<<==tDDDeoff==>>FFFeoffQGGGHH$OOOeoff!DDDEEtLLLeofg1EEEFFNNNeofg1    	 	 	 	eoj%@@AA4HHHeoj&AABBEJJJeoj&KKKLL
	 	 	 	eoj&aHHHII
	 	 	eoj'qIIIJJ
	 	 	eoj'q    	 	 	 	 	r   c           	         |                      t          j        ddd          d           |                      t          j        dt          d          t          d                    d           |                      t          j        ddd          d           |                      t          j        dt	          d          t	          d                    d           |                      t          j        dt          d          t          d                    d           |                      t          j        dt          d          t          d                    d           d	t          d	          fD ]}|                      t          j        d
|          g d           t          j	        dk    rW|                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           dt	          d          t          d          t          d          fD ]}|                      t          j        d|          g d           t          j	        dk    rW|                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           |                      t          j        d|          g d           dt          d          fD ]}|                      t          j
        d|          g d           |                      t          j
        d|          g d           |                      t          j
        d |          g d!           d"t	          d"          t          d"          t          d"          fD ]}|                      t          j
        d#|          g d$           |                      t          j
        d%|          g d$           |                      t          j
        d&|          g d'           dt          d          fD ].}|                     t          j        d|                                          d(           |                     t          j        d)|                                          d*           |                     t          j        d)|                              d+          d           |                     t          j        d)|                              d,          d           |                     t          j        d)|                              d,d,          d-           0dt	          d          t          d          t          d          fD ].}|                     t          j        d|                                          d(           |                     t          j        d.|                                          d/           |                     t          j        d.|                              d+          d           |                     t          j        d.|                              d,          d           |                     t          j        d.|                              d,d,          d0           0d S )1Nr&   r\   r   xaz   yrQ  s   xyzs   xazr   r   r   r   r   r   r   r   r   r   s   :a:b::c   :)r   rQ  r  r   r   s   :*)r   r   rQ  r   r  r   r   r   s   (:*))r   rf  r   r   rQ  rf  r   r   r     ::r   r   r   r   r   )r   rQ  r  r   )r   rf  rQ  rf  r  rg  r   r   r   r   r   r   r   s
   a:b::c:::ds   :+)rf  rg  s   :::s   (:+)s   (:)(:*)))rf  r   )rf  rf  )rf  rg  rS   r  r  r   r:   r  s   (a))rQ  )rQ  rQ  )r*   r-   rj   r   r   	bytearray
memoryviewr   r   r   r/   r)   rB   r;  r   )r   r?  s     r   test_issue_18468zRegexTests.test_issue_18468  s   eiS%88%@@@ei[-=-=
e

 $	& 	& 	&eidF;;VDDDeimD.A.A


! !"(	* 	* 	*eiioo
F

 $	& 	& 	&eij.>.>
V

 %	' 	' 	'  Y!7!77 	- 	-F!!%+c6":": = = =   9,,%%ek$&?&? B( B( B( ) ) )%%ek&&&A&A DL DL DL M M M M %%ek$&?&? B B B   %%ek&&&A&A D, D, D, - - - - "=#<#<
J

J!7!79 	2 	2F!!%+dF";"; > > >   9,,%%ek%&@&@ C3 C3 C3 4 4 4%%ek'6&B&B E E E     %%ek%&@&@ C C C   %%ek'6&B&B E1 E1 E1 2 2 2 2 #K$=$== 	( 	(F!!%-f"="= @ @ @   !!%-"?"? B B B   !!%-	6"B"B E' E' E' ( ( ( ( %mM&B&B
M
"
"J}$=$=? 	2 	2F!!%-v">"> A A A   !!%-"@"@ C C C   !!%-
F"C"C F1 F1 F1 2 2 2 2 ;s+++ 	 	FU[f55<<>>CCCU[77>>@@&IIIU[77==a@@#FFFU[77==a@@#FFFU[77==aCC F     ]400)D//
T

 	 	FU[v66==??DDDU[88??AA7KKKU[88>>qAA4HHHU[88>>qAA4HHHU[88>>q!DD G    	 	r   c                    |                      t          j        ddd          j        d           |                      t          j        ddd                                          d           |                      t          j        ddd          j        d           |                      t          j        ddd                                          d           |                      t          j        dd	d          d            |                      t          j        d
dd          j        d           |                      t          j        d
dd                                          d           |                      t          j        d
dd          j        d           |                      t          j        d
dd                                          d           |                      t          j        ddd          j        d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          j        d           |                      t          j        ddddg                                          d           |                      t          j        ddddg          d            |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        dd d          d            |                      t          j        dd!d          d            d S )"Nr  r\   Tpartialr6  r:  r6  r>   catchzabc\w{3}r2  Frn  r|  r  z\d{4}$1234z	\L<words>post)rm  r  rp  r=  r  POST   poﬆPOSz	[a-z]*4R$rb  ab4a4a4R4aa44)r)   r-   rB   rm  rA   rC   s    r   test_partialzRegexTests.test_partial  s   T3===EtLLLT3===BBDDfMMMWeTBBBJ
	 	 	WeTBBBGGII L 	 	 	WgtDDDdKKK[(  	( 	( 	([(  	( 	( 	(['  	' 	' 	'['  	( 	( 	( 	YEEEM
	 	 	 	\64  !5	* 	* 	*\64  $&&&	* 	* 	*\5$  !4	) 	) 	)\5$  $&&&	* 	* 	* 	%6  %u	. 	. 	.%6  "dfff	. 	. 	.%6t  %t	- 	- 	-%6t  "dfff	. 	. 	.%6
ug' ' '(,	. 	. 	. 	\3EEEJJLL
	 	 	\4FFFKKMM
	 	 	\5$GGGLLNN
	 	 	\4FFFKKMM
	 	 	\5$GGGLLNN
	 	 	\4FFFMMM\5$GGGNNNNNr   c                    |                      t          t          j        dt          j                            d           |                      t          t          j        dt          j                            d           |                      t          j        dd          ddg           |                      t          j        d	d          ddg           |                      t          j        dd
          dg           |                      t          j        dd          dg           |                      t          j        dd          dg           |                      d t          j        dd          D             dg           |                      t          j        ddt          j        t          j        z            	                    d          d           |                      t          j        ddt          j        t          j        z            	                    d          d           |                      t          j        ddt          j        t          j        z            	                    d          d           |                      t          j        dd          
                                d           |                      t          t          j        ddt          j                            d           |                      t          j        dd          	                    dd           d!           |                      t          j        d"d#          	                    dd           d$           |                      t          j        d%d&          	                    d          d&           |                      t          j        d'd(          d            |                      t          j        d)d*          	                    d          d           |                      t          j        d+d,                              d           d-           |                      t          j        d+d.                              d           d/           |                      t          j        d+d0                              d           d1           |                      t          j        d2d0          	                                d0           |                      t          j        d3d4                                          d5           |                      t          j        d6d,                                          d7           |                      t          j        d6d.                                          d8           |                      t          j        d9d          	                    d          d           |                      t          j        d:d0t          j                  	                    d          d0           |                      t          j        d;d<                              dd           d=           |                      t          j        d>d<                              dd           d?           |                      t          j        d@d<                              dd           dA           |                      t          j        dBd<                              dd           dC           |                      t          j        dDdE          	                    d          d,           |                      t          j        dFdGdHdIgJ          g dK           |                      t          j        dLdG          g dM           |                      t          j        dNdG          g dK           |                      t          j        dOdG          g dK           |                      t          j        dPd,          	                    dd dQ          dR           |                      t          j        dSdT                              dd           dU           |                      t          j        dVd,          	                    dd           dW           |                      t          j        dXdY          d            |                      t          j        dZd[          d            |                     t          j        | j        d\            |                      t          j        d]d^                              d          d_           |                      t          j        d`da          	                    d          da           |                      t          j        dbdc          d            |                      t          j        ddde          d            |                      t          j        dfdg          	                    dd dQ          dh           |                      t          j        didj          d#dkg           |                      t          j        dldj          d#dkg           |                      t          j        dmdj          d#dkg           |                      t          j        dndj          d#dkg           |                      t          j        dodp          	                                dp           |                      dq t          j        drds          D             dtdug           |                      t          j        dvdw                              dx          g dy           |                     t          j        | j        dz            d{}d|}|                      t          j        ||t          j                  d         d}           |                      t          j        d~d          dg           |                      t)          t          j        dddt          j                            t)          d                     |                      t          j        dd          d            |                      t          j        dd                              d          dd8g           |                      t          j        dd d          d           t          j        dt          j                  }|                      |                    d          d            |                      |                    d          g            |                     t          j        | j        d            |                      t          j        dd          d           |                      t          j        dd          d           |                      t          j        d          d           |                      t          j        dd          d           |                      t          j        dd          d           |                      t          j        d          d           |                      t          j        dd          
                                d           |                      t          j        dd          
                                d           |                      t          j        dd          
                                d           t          j        dt          j        t          j        z            }|                      d |                    d          D             dg           |                      |                    d          dg           d}|                      d |                    |          D             dg           |                      |                    |          dg           t          j        dt          j        t          j        z  t          j        z            }|                      d |                    d          D             dg           |                      |                    d          dg           d}|                      d |                    |          D             dg           |                      |                    |          dg           t:          j        dk    r+|                      t          j        ddd          dT           n*|                      t          j        ddd          d           |                      t          j        ddd          dT           t:          j        dk    r+|                      t          j        ddd          d           n*|                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dddt          j                  d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        dd          j         d           |                      t          j        ddƦ          g            |                      t          j        ddd          d           |                      t          t          j        d,d,t          j!                            d           |                      t          j        ddɦ          ddg           |                      t          j        ddɦ          ddg           |                      t          j        ddɦ          ddg           |                      t          j        ddɦ          ddg           |                     t          j        dd΄            |                      t          j        dd,          	                    dd dQ          dЦ           |                      t          j        dd,          	                    dd dQ          dЦ           dҠ"                    dӄ tG          dԦ          D                       }|                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         |                      t)          dҠ"                    t          j        d|                              t)          dҠ"                    t          j        d|                                         tI          tG          d                    }|                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d |                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d	|                              t)          d"                    t          j        d
|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          d"                    t          j        d|                              t)          d"                    t          j        d|                                         |                      t)          t          j        dd          	                                          t)          d                     |                      t          j        dd          
                                d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j%        ddd          d           |                      t          j%        ddd          d           |                      t          j&        ddd                                          d8           |                      t          j&        ddd          j'        d           |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        d dd                                          d!           |                      t          j        d"d#                                          d7           |                      t          j        d$d%          d            |                      t          j        d&d'          g d(           |                      t          j        d)d'          g d(           |                      d* t          j        d+d,          D             g d-           |                      d. t          j        d/d,          D             g d-           |                      t          j        d0d1          d         d1           |                      t          j        d0d2          d         d2           |                      t          j        d3d4          d         d4           |                      t          j        d5d6          d         d6           |                      t          j        d7d          	                    dd           d8           |                      t          j        d9d:          d;d<g           |                      t          j        d=d:          dd>g           |                      t          j        d?d          	                    dd           d@           |                      t          j        dAd:          dBdg           |                      t          j        dCd:          d>dg           |                      t          j        dDdE          d         dE           |                      t          j        dFd,          	                    dG          d            |                      t          j        dFd,                              dG          d,g           |                      t          j        dHdI          d         dJ           |                      t          j        dKdI          d         dJ           |                      t          j        dLdI          d            |                      t          j        dMdI          d         dI           |                      t          j        dNdO          d         dO           |                      t          j        dNdP          d         dQ           |                      t          j        dRdO          d         dS           |                      t          j        dRdP          d         dQ           |                      t          j        dTdP          d         dP           |                      t          j        dTdU          d         dQ           |                      t          j        dVdU          d         dQ           |                      t          j        dWdU          d         dQ           |                      t          j        dXdI          d            |                      t          j        dYdI          d         dI           |                      t          j        dZdO          d         dO           |                      t          j        dZdP          d         dQ           |                      t          j        d[dP          d         dP           |                      t          j        d[dU          d         dQ           |                      t          j        d\dU          d         dQ           |                      t          j        d]dU          d         dQ           |                      t          j        d^dO          d         dO           |                      t          j        d^dP          d         dQ           |                      t          j        d_dO          d         dS           |                      t          j        d_dP          d         dQ           |                      t          j        d`dP          d         dP           |                      t          j        d`dU          d         dQ           |                      t          j        dadU          d         dQ           |                      t          j        dbdU          d         dQ           |                      t          j        dcdO          d         dO           |                      t          j        dcdP          d         dQ           |                      t          j        dddP          d         dP           |                      t          j        dddU          d         dQ           |                      t          j        dedU          d         dQ           |                      t          j        dfdU          d         dQ           dg}|                      tQ          t          j        dh|                    d            |                      t          j        didj                                          d8           |                      t          j        dkdl          d         dl           t          j        dm          }dn}	|                      do |                    |	          D             dpdqg           |                      t          j        drdst          j                                                  dt           |                      t          j        dudst          j                                                  dv           |                      t          j        dwdx                                          dy           |                      t          j        dzdx          d            |                      t          j        d{d|                                          d}           |                      t          j        d{d~          ddg           |                      t          j        dd          	                    dd           d           |                      t          j        dd          	                    dd           d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        dddg                                          d           |                      t          j        dddg                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           t          j        dddg          }
tS          j*        |
          }tS          j+        |          }
|                      |
                    d                                          d5           |                      t          j        ddt          j                                                  dy           |                      t          j        ddt          j                                                  d           |                      t          j        ddt          j                  d            |                      t          j        ddt          j                                                  dy           |                      t          j        ddt          j                                                  d           |                      t          j        ddt          j                  d            | ,                    t          j        d            | ,                    t          j        d            |                      t          t          j        d                    d           |                      t          t          j        d                    d           |                      t          j        ddt          j-                  ddg           |                      t          j        ddd                                          d           d}d}|                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        d|z   |                    d           |                      t          t          j        ddddg                    d           |                      t          t          j        ddddg                    d           |                      t          t          j        ddddg                    d           |                      t          t          j        ddddg                    d           |                      t          j        ddddg                                          d           |                      t          j        ddddg                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd                                          d           |                      t          j        dd          d            |                      t          j        ddæ                                          dĦ           |                      t          j        dŐdƦ                                          dǦ           d}d}|                      t          t          j        ||                    d           |                      t          t          j        dʐd                    d           |                      t          t          j        dːd                    d           |                      t          t          j        d̐d                    d           |                      t          t          j        d͐d                    d           |                      t          t          j        dΐdϦ                    d           |                      t          j        dАdѦ          
                                dҦ           |                      t          j        dӐdt          j                                                  d           |                      t          j        dӐdt          j                  j         d           |                      t          j        dՐdt          j                                                  d           |                      t          j        dՐdt          j                  j         d           |                      t          j        d֐dt          j                                                  dئ           |                      t          j        d֐dt          j                  j         d٦           |                      t          j        dڐdt          j        t          j        z                                            dܦ           |                      t          j        dݐd:          d>g           |                      t          j        dސd:          d>g           |                      t          j        dߐd          ddg           |                      t          j        dd          g            |                      t          j        dd          dg           |                      t          j        dd          g d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        dd          	                                d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           |                      t          j        d          d           |                      t          j        ddc                                          d7           |                      t          j        dd                                          d7           |                      t          j        d d                                          d           |                      t          j        ddҦ                                          d           |                      t          j        ddҦ                                          d           |                      t          j        dd#          
                                d           |                      t          j        dd#          .                                dd i           |                      t          j        dd#          /                                dd,gi           |                      t          j        dd#          
                                d           |                      t          j        dd#          .                                dd i           |                      t          j        dd#          /                                dd,gi           |                      t          j        dd#          
                                d           |                      t          j        dd#          .                                dd i           |                      t          j        dd#          /                                dd,gi           |                      t          t          j        d	d                    d           |                      t          j        d
dd                                          d           |                      t          j        ddd                                          d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          t          j        dd                    d           |                      t          j&        d d#                              d          g d!           |                      t          j&        d d#          	                    d          d           |                      t          j&        d"d#                              d          g d!           |                      t          j&        d"d#          	                    d          d#           |                      t          j        d$dd          j'        d           |                      t          j        d$d%d          j'        d           |                      t          j        d&dd          j'        d           |                      t          j        d'dd          j'        d           |                      t          j        d'd%d          j'        d           |                      t          j        d(dd          j'        d           |                      t          j        d(d%d          j'        d           |                      t          j        d)dd          j'        d           |                      t          j        d*dd          j'        d           |                      t          j        d*d%d          j'        d           |                      t          j        d+dd          j'        d           |                      t          j        d+d%d          j'        d           |                      t          j        d,dd          j'        d           |                      t          j        d-dd          j'        d           |                      t          j        d-d%d          j'        d           |                      t          j        d.dd          j'        d           |                      t          j        d.d%d          j'        d           |                      t          j        d/dd          j'        d           |                      t          j        d0dd          j'        d           |                      t          j        d0d%d          j'        d           |                      t          j        d1dd          j'        d           |                      t          j        d2dd          j'        d           |                      t          j        d3dd          j'        d           |                      t          j        d4dd          j'        d           |                      t          j        d5dd          j'        d           |                      t          j        d6dd          j'        d           |                      t          j        d4d,d          j'        d           |                      t          j        d5d,d          j'        d           |                      t          j        d6d,d          j'        d           |                      t          j        d7dd          j'        d           |                      t          j        d8dd          j'        d           |                      t          j        d9dd          j'        d           |                      t          j        d:dd          j'        d           |                      t          j        d;dd          j'        d           |                      t          j        d<dd          j'        d           |                      t          j        d:d,d          j'        d           |                      t          j        d;d,d          j'        d           |                      t          j        d<d,d          j'        d           |                      t          j        d=d>d          j'        d           d?}d@}t          j        ||t          j                  }|                      |j         d           |                      |j0        g dAgg f           |                      t          j        dBdC          j         dD           |                      t          j        dBdE          j         d           |                      t          j        dFdG          dGg           |                      t          t          j        dHd,                    d           |                      t          t          j        dId,                    d           |                      t          j&        dJdI                                          d5           |                      t          j        dKdL          /                                dMgg dMgdN           |                      t          t          j        dOdP                    d           |                      t          t          j        dQdP                    d           |                      t          j        dRdS          j0        g g g dTf           |                      t          j        dUd#          j         dV           |                      t          j        dUd#          j0        dgg d gf           |                      t          j        dWd#          j         dX           |                      t          j        dWd#          j0        g g dgf           |                      t          j        dYd#          j         dX           |                      t          j        dYd#          j0        g g dgf           |                      t          j        dZd[          j         d\           |                      t          j        d]d[          j         d           |                      t          j        d^d[          j         d           |                      t          j        d_d`          j         da           |                      t          j        dbd`          j         da           |                      t          j&        dcdd          j         d           |                      t          j&        dedd          j         d           |                      t          j        dfdg          d            |                      t          t          j        dh                    d           |                      t          t          j        di                    d           |                      t          j        djdk          g dl           |                      t          j        dmdk          g dl           |                      t          j        dndot          j1                  j         dp           |                      t          t          j        dqd                    d           |                      t          t          j        drd                    d           |                      t          j        dsdt          	                                dt           |                      t          j        dsdu          d            |                      t          j        dvdw          	                                dw           |                      t          j        dvdx          d            |                      t          j        dvdw          j0        g dygg f           |                      t          j        dzdw          	                                dw           |                      t          j        d{dw          j0        g dygg f           |                      t          j        d|          2                    d}          g d~           |                      t          j        d|          2                    d          g d           |                      t          j        d                              d          d            |                      t          j        d                              d          d            t          j        dt          j        t          j3        z            }|                      |                    d          	                                d           |                      |                    d          	                                d           |                      |                    d          	                                d           |                      |                    d          	                                d           d}d}t          j        ||t          j                  }|                      |                                d           |                      |.                                dddddd           t          j        ||t          j-                  }|                      |                                d           |                      |.                                dddddd           d}d}t          j        ||t          j                  }|                      |j         dD           |                      |j0        g g g f           d}t          j        ||t          j                  }|                      |j         da           |                      |j0        ddgg g f           |                      t          j        ddd          d           |                      t          j%        ddd          d           |                      t          j        dd          4                    d          d          f |                      t          j        dd          5                    d          d           |                      t          j        dd          d            |                      t          j        ddt          j                  d            |                      t          j        dd                                          d8           |                      t          j        dd                                          d8           |                      t          j        dd          d            |                      t          j        dd                                          d7           |                      t          j        dd#          6                                d#gg d!f           |                      t          j        dd#          7                                d5gg df           |                      t          t          j&        dd                    d           |                      t          t          j&        dd                    d           |                      t          j        ddc          d            |                      t          j        ddc                                          d-           |                      t          j        dd                                          d           |                      t          j        dd                                          d7           |                      t          j        dd                                          d8           |                      t          j        dd                                          d8           |                      t          j        dd                                          d7           |                      t          j        ddg                                           d           |                      t          j        d                              d,                                          d7           |                      t          j        dt          j                                      d,                                          d7           |                      t          j        ddd                                          d           |                      t          j        ddd          d            |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        ddd          d            |                      t          j        ddd                                          d           |                      t          j        ddd          d            |                      t          j        ddd                                          d           |                      t          j        ddd                                          d           |                      t          j        ddd          d            |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           |                      t          t          j        dÐdd                    d           d S (  Nz(?>b)rL  Tz^((?>\w+)|(?>\s+))*$z\((?:(?>[^()]+)|(?R))*\)za(bcd(e)f)g(h)z	(bcd(e)f)z(h)z\((?:(?:[^()]+)|(?R))*\)za(b(cd)e)f)g)hz(b(cd)e)za(bc(d(e)f)ghz(d(e)f)z(?r)\((?:(?>[^()]+)|(?R))*\)c                 6    g | ]}|                                 S rS   r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>!  s2     E E E!'')) E E Er   z\((?:[^()]*+|(?0))*\)za(b(c(de)fg)hz	(c(de)fg)za(bc)dr  r   z([\da-f:]+)$r  rX  z^(?=ab(de))(abd)(e)abde)r  r  rX  z\ r   z^(a|)\1{2}br   r:   )r   r   z	^(a){0,0}r   r}  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(?:(?:))+)+r6  rb  za(?x: b c )dza#comment
*z(?V1)(a(?(1)\1)){1}
aaaaaaaaaar5  z(?V1)(a(?(1)\1)){2})r>   r9   z(?V1)(a(?(1)\1)){3})rn  r&  z(?V1)(a(?(1)\1)){4})r  )r3  r_   z(?V1)(a)(?<=b(?1))bazz(?fi)\L<keywords>u)   POST, Post, post, poſt, poﬆ, and poﬅrp  r=  )keywords)rq  Postrp  u   poſtrr     poﬅz(?fi)pos|post)rs  Posr=  u   poſrr  r  z(?fi)post|posz(?fi)post|anotherz(?V1)((a)(?1)|(?2))r   r  z(?V1)(\1xx|){6}rY   )rb  r~  z(a|)+r  z(a|)*\dPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz^(?:a?b?)*$r	  c                  *    t          j        d          S )Nz\N{1}r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  r  r   r  za
a
r  z(q1|.)*(q2|.)*(x(a|bc)*y){2,}xayxayz(?i)[^a]rg   z(?i)[[:ascii:]]u   Kz((a|b(?1)c){3,5})baaaaca)rS  rS  r\   z(?<=:\S+ )\w+z:9 abc :10 defr@  z(?<=:\S* )\w+z(?<=:\S+? )\w+z(?<=:\S*? )\w+z(?:fe)?malefemalec                 6    g | ]}|                                 S rS   r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s,     7 7 7!'')) 7 7 7r   z!(fe)?male: h(?(1)(er)|(is)) (\w+)z(female: her dog; male: his cat. asdsasdazfemale: her dogzmale: his catz (?<rec>\((?:[^()]++|(?&rec))*\))zaaa(((1+0)+1)+1)bbbrec)z(1+0)z	((1+0)+1)z(((1+0)+1)+1)c                  .    t          j        ddd          S )Nr%   \r   rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    
)Cs
#
# r   z%(CAGCCTCCCATTTCAGAATATACATCC){1<e<=2}ڮtcagacgagtgcgttgtaaaacgacggccagtCAGCCTCCCATTCAGAATATACATCCcgacggccagttaaaaacaatgccaaggaggtcatagctgtttcctgccagttaaaaacaatgccaaggaggtcatagctgtttcctgacgcactcgtctgagcgggctggcaaggtCAGCCTCCCATTCAGAATATACATCCzc..+/cz
cA/c
cAb/czcAb/cz(\w+)r%  u#   अन्‍न ന്‍ किनu)   [अन्‍न] [ന്‍] [किन]z.*a.*ba.*aaababbaz(?<x>a(?<x>b))r  r%   r  z(-)c                 ,    |                      d          S )Nr%   )r+  rT   s    r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    QXXd^^ r   r  axbxcz\bt(est){i<2}z	Some textc                  *    t          j        d          S )Nz.???r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    
-
 
  r   zfoo!?F)special_onlyzfoo\!\?zfoo!\?s   foo!?s   foo\!\?s   foo!\?z^([^z]*(?:WWWi|W))?$WWWi)r  z^([^z]*(?:WWWi|w))?$z^([^z]*?(?:WWWi|W))?$r5   c                 6    g | ]}|                                 S rS   r  r   r%   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>       BBB!''))BBBr   yxxxc                 6    g | ]}|                                 S rS   r  r  s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>       ???!''))???r   c                 6    g | ]}|                                 S rS   r  r  s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  r  r   c                 6    g | ]}|                                 S rS   r  r  s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  r  r   r   z(?V0).*re   z(?V1).*z(?V0).*?r  z	|||||||||z	|t|e|s|t|z(?V1).*?z^(@)\n(?!.*?@)(.*)z\1\n==========\n\2z@
z@
==========
r5  cazr<  r8  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]r2  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   4   K   | ]}t          |          V  d S r   r  r  s     r   r  z*RegexTests.test_hg_bugs.<locals>.<genexpr>}  s(      771A777777r   i   z[[:alnum:]]+z[\p{Alpha}\p{PosixDigit}]+z[[:alpha:]]+z
\p{Alpha}+z[[:ascii:]]+z[\p{InBasicLatin}]+z[[:blank:]]+z[\p{gc=Space_Separator}\t]+z[[:cntrl:]]+z\p{gc=Control}+z[[:digit:]]+z[0-9]+z[[:graph:]]+z<[^\p{Space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]+z[[:lower:]]+z
\p{Lower}+z[[:print:]]+z%(?V1)[\p{Graph}\p{Blank}--\p{Cntrl}]+z[[:punct:]]+z2(?V1)[\p{gc=Punctuation}\p{gc=Symbol}--\p{Alpha}]+z[[:space:]]+z\p{Whitespace}+z[[:upper:]]+z
\p{Upper}+z[[:word:]]+zL[\p{Alpha}\p{gc=Mark}\p{Digit}\p{gc=Connector_Punctuation}\p{Join_Control}]+z[[:xdigit:]]+z[0-9A-Fa-f]+r~  r   s   (?a)[[:alnum:]]+s   (?a)[\p{Alpha}\p{PosixDigit}]+s   (?a)[[:alpha:]]+s   (?a)\p{Alpha}+s   (?a)[[:ascii:]]+s   (?a)[\x00-\x7F]+s   (?a)[[:blank:]]+s   (?a)[\p{gc=Space_Separator}\t]+s   (?a)[[:cntrl:]]+s   (?a)\p{gc=Control}+s   (?a)[[:digit:]]+s
   (?a)[0-9]+s   (?a)[[:graph:]]+s@   (?a)[^\p{Space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]+s   (?a)[[:lower:]]+s   (?a)\p{Lower}+s   (?a)[[:print:]]+s&   (?aV1)[\p{Graph}\p{Blank}--\p{Cntrl}]+s   (?a)[[:punct:]]+s3   (?aV1)[\p{gc=Punctuation}\p{gc=Symbol}--\p{Alpha}]+s   (?a)[[:space:]]+s   (?a)\p{Whitespace}+s   (?a)[[:upper:]]+s   (?a)\p{Upper}+s   (?a)[[:word:]]+sP   (?a)[\p{Alpha}\p{gc=Mark}\p{Digit}\p{gc=Connector_Punctuation}\p{Join_Control}]+s   (?a)[[:xdigit:]]+s   (?a)[0-9A-Fa-f]+z\X$u   ab℃u   ℃z([^L]*)([^R]*R)LtR)r   r  r  zx\1yxayxbyr  zx{1}yz(a)*abcrl  OXRGOOGOXr)  z.XRGz	.{1,3}XRG)r:   r  zR|RRz(.)(?(1)(?!))rD  z(y)?(\d)(?(1)\b\B)ax1y2z3b))r   r$  )r   2)r   r  z(y)?+(\d)(?(1)\b\B)c                 6    g | ]}|                                 S rS   rA   r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s,       q!&&((   r   z(?i)(?:error){e}zregex failure)r  )r  r_   )r_   ra   )ra   ra   c                 6    g | ]}|                                 S rS   r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s2     A A Aq!&&(( A A Ar   z(?fi)(?:error){e}z(?p)\d+(\w(\d*)?|[eE]([+-]\d+))10b12z10E+12z(?p)(\w|ae|oe|ue|ss)aez(?p)one(self)?(selfsufficient)?oneselfsufficientz(ab\Kcd))r  r  z
\w\w\K\w\wabcdefghr  ghz(\w\w\K\w\w)efghz(?r)(ab\Kcd))r  r  z(?r)\w\w\K\w\wr  z(?r)(\w\w\K\w\w)z6(?(DEFINE)(?<quant>\d+)(?<item>\w+))(?&quant) (?&item)z5 elephantsz#(?&routine)(?(DEFINE)(?<routine>.))routinez12(*FAIL)|3123r  z(?r)12(*FAIL)|3z\d+(*PRUNE)\dz\d+(?=(*PRUNE))\dz\d+(*PRUNE)bcd|[3d]123bcd123zzdr  z\d+?(*PRUNE)bcd|[3d]3bcdz\d++(?<=3(*PRUNE))zzd|[4d]$124zzdz\d++(?<=(*PRUNE)3)zzd|[4d]$z\d++(?<=2(*PRUNE)3)zzd|[3d]$z(?r)\d(*PRUNE)\d+z(?r)\d(?<=(*PRUNE))\d+z(?r)\d+(*PRUNE)bcd|[3d]z(?r)\d++(?<=3(*PRUNE))zzd|[4d]$z(?r)\d++(?<=(*PRUNE)3)zzd|[4d]$z (?r)\d++(?<=2(*PRUNE)3)zzd|[3d]$z\d+(*SKIP)bcd|[3d]z\d+?(*SKIP)bcd|[3d]z\d++(?<=3(*SKIP))zzd|[4d]$z\d++(?<=(*SKIP)3)zzd|[4d]$z\d++(?<=2(*SKIP)3)zzd|[3d]$z(?r)\d+(*SKIP)bcd|[3d]z(?r)\d++(?<=3(*SKIP))zzd|[4d]$z(?r)\d++(?<=(*SKIP)3)zzd|[4d]$z(?r)\d++(?<=2(*SKIP)3)zzd|[3d]$zJune 30, December 31, 2013 2012
some words follow:
more words and numbers 1,234,567 9,876,542
more words and numbers 1,234,567 9,876,542z(?<!\d)(?>2014|2013 ?2012)z1(?>2)12zn(?V1w)(?=(?=[^A-Z]*+[A-Z])(?=[^a-z]*+[a-z]))(?=\D*+\d)(?=\p{Alphanumeric}*+\P{Alphanumeric})\A(?s:.){8,255}+\ZzAAaa11!!z(?smx)
(?(DEFINE)
  (?<subcat>
   ^,[^,]+,
   )
)

# Group 2 is defined on this line
^,([^,]+),

(?:(?!(?&subcat)[\r\n]+(?&subcat)).)+
zP
,Cat 1,
,Brand 1,
some
thing
,Brand 2,
other
things
,Cat 2,
,Brand,
Some
thing
c                 :    g | ]}|                     d d          S r  r  r   s     r   r   z+RegexTests.test_hg_bugs.<locals>.<listcomp>  s0     * * *1!&&A,, * * *r   )r  )r   rc   )r  )6   ;   z(abcdefgh){e}z******abcdefghijklmnopqrtuvwxyz)r3  r  z(abcdefghi){e})r3  r  z(?:(?=\d)\d+\b|\w+)r  rn  z(?(?=\d)\d+\b|\w+)z (?(?<=love\s)you|(?<=hate\s)her)z
I love your  z&I love you but I don't hate her eitheryouherz(?p)a*(.*?)aaabbb)r  bbbz
(?p)a*(.*)r   r  z(?irV0)\L<kw>21r$  )kwz(?irV1)\L<kw>za|b111a222)r;   r   z(?r)a|bz(?if)<(CLI)><\1>z
<cli><cli>r  z
<cli><clI>z(?ifr)<\1><(CLI)>z\L<options>r  r  rl  z(x{6}){e<=1}xxxxxxxxxxxr  z(?r)(x{6}){e<=1}c                  *    t          j        d          S )Ns   00000\0\00\^(\00\U05000000r  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    
-<
=
= r   c                  *    t          j        d          S )Ns   {e<lr  rS   r   r   rV   z)RegexTests.test_hg_bugs.<locals>.<lambda>  s    u}W/E/E r   z	((?0)){e}z	 ?(?0){e}z0((brown)|(lazy)){1<=e<=3} ((dog)|(fox)){1<=e<=3}z+The quick borwn fax jumped over the lzy hog)borwnr  r   faxr   r  )lzyr   r  hogr  r   z\d\d\d-\d\d-\d\d\d\dz$My SSN is 999-89-76, but don't tell.)$   r  u   Йu   йz(?ui)z(?ai)z(?afi)z
(?i)\L<aa>22121)r  z(?ri)\L<aa>z(?fi)\L<aa>z(?fri)\L<aa>z(?r)\1dog..(?<=(\L<aa>))$ccdogccbcbccr  z(?ir)\1dog..(?<=(\L<aa>))$z(2)(?:\1{5}){e<=1}3222212)r:   rc   z(\d)(?:\1{5}){e<=1}z&\A(?P<whole>(?>\((?&whole)\)|[+\-]))\Zz((-))z((-)+)zx.*? (.).*\1(.*)\1z	x  |y| z|r%  z\.sr (.*?) (.)(.*)\2(.*)\2(.*)z#.sr  h |<nw>|<span class="locked">|)r   #   z"\xF9\x80\xAEqdz\x95L\xA7\x89[\xFE \x91)\xF9]\xDB'\x99\x09=\x00\xFD\x98\x22\xDD\xF1\xB6\xC3 Z\xB6gv\xA5x\x93P\xE1r\x14\x8Cv\x0C\xC0w\x15r\xFFc%" z(?P<http_referer>((?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``)))) (?P<useragent>((?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))))zfoo(?<=foo)zfoo(?<!foo)zfoo(?<=foo|x)zfoo(?<!foo|x)z0(?(?=.*\!.*)(?P<true>.*\!\w*\:.*)|(?P<false>.*))r  z\w*(ea)\w*|\w*e(?!a)\w*easier)eaz(^1234$){i,d}12234z(^1234$){s,i,d}z(^123$){s,i,d}xxxxxxxx123)r   r`   )r   rj  r   za?yzxxxxyz)r   r3  z(?:(?![a-d]).)+z.(?(DEFINE)(?P<mydef>(?:(?![a-d]).)))(?&mydef)+z((\w{1,3})(\.{2,10})){1,3}z("Erm....yes. T..T...Thank you for that."zErm....Ermz....zT...Tr  z((\w{1,3})(\.{2,10})){3}z((\w{1,3})(\.{2,10})){2}z((\w{1,3})(\.{2,10})){1})r  )zT..r  r  r  z(?:ESTONIA(?!\w)){e<=1}zESTONIAN WORKERSESTONIANz(?:ESTONIA(?=\W)){e<=1}z(?:(?<!\w)ESTONIA){e<=1}zBLUB NESTONIANESTONIAz(?:(?<=\W)ESTONIA){e<=1}z(?r)(?:ESTONIA(?!\w)){e<=1}z(?r)(?:ESTONIA(?=\W)){e<=1}z(?r)(?:(?<!\w)ESTONIA){e<=1}z(?r)(?:(?<=\W)ESTONIA){e<=1}z(?:A.*B.*CDE){e<=2}zA B CYZz(?:A.*B.*?CDE){e<=2}z(?:A.*?B.*CDE){e<=2}z(?:A.*?B.*?CDE){e<=2}z ,0A[)r  literal_spacesz\ \,0A\[z \,0A\[z\ ,0A\[z ,0A\[z(?(?=A)A|B)r  z
(?(?=A)A|)r6   z
(?(?=X)X|)z(?(?=X))z(?(DEFINE)(?<func>.))(?&func)r   funcz!(?(DEFINE)(?<func>.))(?=(?&func))z#(?(DEFINE)(?<func>.)).(?<=(?&func))zab(?#comment\))cdz[a-z]+ [a-z]*?:r  z(?r):[a-z]*? [a-z]+z(?u)\p{Script:Beng}u   ৯z(?u)\p{Script:Bengali}z!(?u)\p{Script_Extensions:Bengali}z(?u)\p{Script_Extensions:Beng}z(?u)\p{Script_Extensions:Cakm}z(?u)\p{Script_Extensions:Sylo}z(?u)\p{scx:Latin}rb  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}dogfoodr9  dogfootrT  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}r7  z(?b)(?:bc){e}z,(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){e}z$ 10,112.111.12)r3  r   r  z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=1}z9(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=1,i<=1,d<=1}z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=3}z$ 10,1a2.111.12)r   r   r   z/(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){s<=2}z(?e)(?:0?,0(?:,0)?){s<=1,d<=1}z,0;0z(?e)(?:0??,0(?:,0)?){s<=1,d<=1}z#\b(?e)(?:\d{6,20}){i<=5:[\-\\\/]}\bz-cat dog starting at 00:01132.000. hello worldz(?#)z(?x)(?#)z(\d+){i<=2:[ab]}123X4Y5)r  r  5z(?i)(\d+){i<=2:[ab]}z^(test){e<=5}$terstin)r   r;   r   z(?:(x*)\1\1\1)*x$z(?:(x*)\1{3})*x$zt(?:es){s<=1:\d}tte5tteztzt(?:es){i<=1:\d}ttes5ttesztr;   zt(es){i<=1,0<e<=1}tzt(?:es){i<=1,0<e<=1:\d}tz(\d+ week|\d+ days)7 days)r   r  r   10 days)r   r  r   z[ ]* Name[ ]*\* z  Name *za|\.*pb\.pyz.geojsa?  (?<=(?:\A|\W|_))(\d+ decades? ago|\d+ minutes ago|\d+ seconds ago|in \d+ decades?|\d+ months ago|in \d+ minutes|\d+ minute ago|in \d+ seconds|\d+ second ago|\d+ years ago|in \d+ months|\d+ month ago|\d+ weeks ago|\d+ hours ago|in \d+ minute|in \d+ second|in \d+ years|\d+ year ago|in \d+ month|in \d+ weeks|\d+ week ago|\d+ days ago|in \d+ hours|\d+ hour ago|in \d+ year|in \d+ week|in \d+ days|\d+ day ago|in \d+ hour|\d+ min ago|\d+ sec ago|\d+ yr ago|\d+ mo ago|\d+ wk ago|in \d+ day|\d+ hr ago|in \d+ min|in \d+ sec|in \d+ yr|in \d+ mo|in \d+ wk|in \d+ hr)(?=(?:\Z|\W|_))z1 month agoz9 hours 1 minute agoz1 minute agoz10 months 1 hour agoz
1 hour agoz1 month 10 hours agoz10 hours ago2TTCAGACGTGTGCTCTTCCGATCTCAATACCGACTCCTCACTGTGTGTCTzw(?P<insert>.*)(?P<anchor>CTTCC){e<=1}(?P<umi>([ACGT]){4,6})(?P<sid>CAATACCGACTCCTCACTGTGT){e<=2}(?P<end>([ACGT]){0,6}$))r   2   TTCAGACGTGTGCTCTTCCGATCTCAATACCGACTCCTCACTGTGTGTCT)insertanchorumisidr  zt(?P<insert>.*)(?P<anchor>AACACTGG){e<=1}(?P<umi>([AT][CG]){5}){e<=2}(?P<sid>GTAACCGAAG){e<=2}(?P<end>([ACGT]){0,6}$)&GGAAAACACTGGTCTCAGTCTCGTAACCGAAGTGGTCG&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  )r6  r  r4  z\p{HorizSpace}+u4   	   ᠎             　z\p{VertSpace}+u   
  z(?(?<=A)|(?(?![^B])C|D))z^a?(a?)b?c\1$abcarp  z(?(?=a).|..)z(?(?=b).|..)z(?(?!a).|..)z(?(?!b).|..)z(\L<foo>){e<=5}blah)r  ra  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@   rv   r   r;  rB   rd   rA   r|   r   UNDEF_CHAR_NAMEr  r  	BESTMATCHrG  rj   WORDspansr  r  FULLCASErH  r  r   r   rS  r@  DEBUGrM  r  r  r[  r?  rm  r   pickledumpsloadsr  ENHANCEMATCHr(  r  rA  r  r   V0r+  r]  allcapturesallspans)r   fzseqrxr  rawrl  r  
TEST_REGEX	TEST_DATArT  r  upper_ilower_ir\   py_regex_patternrx   rU   sequences                      r   test_hg_bugszRegexTests.test_hg_bugs  sf    	emG58DDDEEtLLL 	em,C     	" 	" 	" 	'B
 )51	3 	3 	3'B
 )51	3 	3 	3'B
 (\	+ 	+ 	+'B
 &K	) 	) 	)'F
 &K	) 	) 	) E E
.1?
C
CE E E-	 	 	 	h
(9  E!HHf	& 	& 	&
 	osEG
(=  E!HHc	# 	# 	#osEG
(=  E!HHc	# 	# 	#
 	&;VDDKKMM
	 	 	
 	ek%EGDDDEEtLLL 	nc::@@AFF I 	 	 	
 	k599??1EE H 	 	 	 	j%88>>qAA5III
 	&8+FFMMM 	&=
 588V	% 	% 	%
 	gs3388;;VDDDgt4499!<<fEEEgu55::1==vFFF 	k599??AA5III 	o{CCHHJJ M 	 	 	
 	&8#>>CCEEvNNN&8$??DDFFOOO 	nf==CCAFFOOO 	ne  q5	* 	* 	*
 	&<
 Q

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

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

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

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


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

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

)s   
ri            r   rC   s    r   test_line_endingzRegexTests.test_line_ending~  sx    
u}U,LMMFFFH H H
u}V-BCC F& F& F& ' ' ' ' 'r   r   )r   r   r   r   r~   r   r   r   r   r   r   r  r  r  r  r4  r5  r6  r7  r8  r9  r  r  r  r  r  r  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/  rB  rJ  rN  rT  rZ  r_  rt  rv  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:  rA  rI  rM  rn  rs  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r"  r  r  r  r  r  r  r  rB  rN  rW  r^  rb  rj  ry  r  r&  r(  r-  r5  rS   r   r   r   r      sM       .MU1J2N-J%O#M1J'*GKK>CGMK"N-N*N+'O0J'O=M0O
  
  
  
   
9 
9 
9" " "B B B>  
	 	 	
3 
3 
3  
7 7 7rC C C  ? ? ?) ) )2 2 2.H H H1 1 1f  E E E2  N N N6. . .." " " O O O' ' '
#B #B #BJ/ / /<' ' 'B1 1 1  
J J JF F F4VN VN VNp< < <E E E> > >8 8 8
8 
8 
8
 
 
" " "
$ $ $ 
& 
& 
&I I I
A A A# # #  6 6 6K K KD D D     $  1 1 1G G G    
1 1 1; ; ;D D D; ; ;6
9 
9 
9 %  %  %D% % %6	` 	` 	`     v2 v2 v2pB B BM M M`E `E `ED? ? ?J J J48- 8- 8-t  L L L. . .`L L L*  "J J J0  

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



 7 7 7 7 7# 7 7 79 9 9 9 9E 9 9 9pE' pE' pE' pE' pE'" pE' pE' pE'dK   zIKKKKK r   