HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //proc/1233/cwd/usr/local/lib/python3.10/dist-packages/regex/__pycache__/test_regex.cpython-310.pyc
o

;��gXc�@s�ddlmZddlZddlZddlZddlZddlZddlZGdd�de�Z	Gdd�de
�ZGdd�dej�Z
d	d
�ZedkrDe�dSdS)�)�proxyNc�eZdZ�fdd�Z�ZS)�StrSubclassc�tt��|��S�N)r�super�__getitem__��self�index��	__class__��;/usr/local/lib/python3.10/dist-packages/regex/test_regex.pyr�zStrSubclass.__getitem__��__name__�
__module__�__qualname__r�
__classcell__rrrrr
�rcr)�
BytesSubclasscrr)rrrr	rrrrrzBytesSubclass.__getitem__rrrrrrrrc@s�eZdZdZdZdZdZdZdZdZ	dZ
dZd	Zd
Z
dZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZd�dd�Zdd�Zd d!�Z d"d#�Z!d$d%�Z"d&d'�Z#d(d)�Z$d*d+�Z%d,d-�Z&d.d/�Z'd0d1�Z(d2d3�Z)d4d5�Z*d6d7�Z+d8d9�Z,d:d;�Z-d<d=�Z.d>d?�Z/d@dA�Z0dBdC�Z1dDdE�Z2dFdG�Z3dHdI�Z4dJdK�Z5dLdM�Z6dNdO�Z7dPdQ�Z8dRdS�Z9dTdU�Z:dVdW�Z;dXdY�Z<dZd[�Z=d\d]�Z>d^d_�Z?d`da�Z@dbdc�ZAddde�ZBdfdg�ZCdhdi�ZDdjdk�ZEdldm�ZFdndo�ZGdpdq�ZHdrds�ZIdtdu�ZJdvdw�ZKdxdy�ZLdzd{�ZMd|d}�ZNd~d�ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcd�d��Zdd�d��Zed�d��Zfd�d��Zgd�d��Zhd�d��Zid�d��Zjd�d��Zkd�d��Zld�d��Zmd�d��Znd�d��Zod�d��Zpd�dÄZqd�dńZrd�dDŽZsd�dɄZtd�d˄Zud�d̈́Zvd�dτZwd�dфZxd�dӄZyd�dՄZzd�dׄZ{d�dلZ|d�dۄZ}d�d݄Z~d�d߄Zd�d�Z�d�d�Z�d�d�Z�d�d�Z�d�d�Z�dS)��
RegexTestsz<class '_regex.Pattern'>z5cannot process flags argument with a compiled patternzinvalid group referencez	missing >zbad character in group namezmissing group namez	missing <z
unknown groupzbad escape \(end of pattern\)z
bad escape \\zunterminated 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 \)zunbalanced parenthesiszbad character rangeznothing to repeatzmultiple repeatzcannot refer to an open groupzduplicate groupz'bad inline flags: cannot turn flags offzundefined character nameNcs,��||�����fdd���||�dS)NcsJt|ttf�rt||�D]	\}}�||�qdS��t|�t|���dSr)�
isinstance�tuple�list�zip�assertIs�type)�actual�expect�x�y��msg�recurser
rrr%2s
�z,RegexTests.assertTypedEqual.<locals>.recurse)�assertEqual)r
rr r$rr#r�assertTypedEqual/szRegexTests.assertTypedEqualcCs:d}t�d�}t|�}|�d�|�d�kr|��dSdS)N�QabbbcRzab+c)�regex�compiler�findall�fail)r
�sr!r"rrr�test_weakref;s
�zRegexTests.test_weakrefcCs�|�t�dd��d�d�|�t�dd���d�|�t�dd��d�d�|�t�dd���d�|�t�d	d
�d�|�t�dd��d�d�|�t�dd���d�|�t�dd��d�d�|�t�dd���d�|�t�d
d�d�dS)N�a*�xxxr�rrzx*�axx�x+���r!�aaa�xxxa�rr6�a+)r&r)�search�span�match�r
rrr�test_search_star_plusBsz RegexTests.test_search_star_pluscCst|d�}t|d�S)Nrr5)�int�str)r
�matchobj�	int_valuerrr�bump_numNszRegexTests.bump_numcCs�|�t�ddd�d�|�t�d|jd�d�|�t�d|jdd�d	�|�t�d
dd�d�d
�|�t�d
d
d�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�td�td�td�td�td�td ��|�t�d!d"d#�d$�|�t�dd%d�d�|�t�dd&d�d�|�t�dd'd�d�|�t�dd(d�d)�|�t�d*d+d*�d,�dS)-N�(?i)b+r!�	bbbb BBBB�x x�\d+z08.2 -2 23x99yz9.3 -3 24x100yr6z
9.3 -3 23x99y�.cS�dS)N�\nr��mrrr�<lambda>Y�z1RegexTests.test_basic_regex_sub.<locals>.<lambda>rK�
�(?P<a>x)z
\g<a>\g<a>�xx�xxxxz
\g<a>\g<1>�
(?P<unk>x)z\g<unk>\g<unk>z
\g<1>\g<1>�az\t\n\v\r\f\a\bz	

�	

�	�
��
��z^\s*�X�test�Xtestz\x0Az\u000Az
\U0000000Az\N{LATIN CAPITAL LETTER A}�A�xs\x0A�
)r&r)�subrD�chrr>rrr�test_basic_regex_subRsH���������zRegexTests.test_basic_regex_subcC�|�t�ddd�d�dS)NrTz\g<1>\g<1>\brRzxxxx�r&r)rcr>rrr�test_bug_449964qs�zRegexTests.test_bug_449964cCs\|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�dS)Nz\r\nrKz
abc
def
zabc
def
�
rPrgr>rrr�test_bug_449000vs����zRegexTests.test_bug_449000csnt�d��|�t|j�fdd��|�t|j�fdd��|�t|j�fdd��|�t|j�fdd��dS)NrIc�t��dtj�S�Nr`)r)r=�Ir��patternrrrN��z*RegexTests.test_bug_1661.<locals>.<lambda>crkrl)r)r;rmrrnrrrN�rpcrkrl)r)r+rmrrnrrrN�rpcst��tj�Sr)r)r*rmrrnrrrN��)r)r*�assertRaisesRegex�
ValueError�FLAGS_WITH_COMPILED_PATr>rrnr�
test_bug_1661�s


�

�

�

�zRegexTests.test_bug_1661cCs |�ttt�d���|j�dS)Nz(?P<quote>)(?(quote)))r&�reprrr)r*�
PATTERN_CLASSr>rrr�
test_bug_3629�s�zRegexTests.test_bug_3629cCs�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�dd	d�d
�|�t�ddd�d�|�t�dd
d�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d
�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d �|�tj|jd!d"��|�tj|jd#d"��|�tj|jd$d"��|�tj|jd%d"��|�tj|jd&d"��|�tj|jd'd"��|�tj|jd(d"��|�tj|jd)d"��|�tj|jd*d"��|�tj|jd+d"��|�tj|jd,d"��|�tj|jd-d"��|�t�d.d/d�d�|�t�d0d1d2�d3�|�t�d0d4d2�d5�dS)6Nr!�\0�z\000z\001�z\008z8z\009z9z\111rmz\117�Oz\1111�I1z\00z\07�z\08�\09z\0azaz\400uĀz\777uǿras\400�s\777��cS�t�ddd�S)Nr!�\1�r)rcrrrrrN��z=RegexTests.test_sub_template_numeric_escape.<locals>.<lambda>cSr�)Nr!z\8r�rrrrrN�r�cSr�)Nr!z\9r�rrrrrN�r�cSr�)Nr!�\11r�rrrrrN�r�cSr�)Nr!z\18r�rrrrrN�r�cSr�)Nr!z\1ar�rrrrrN�r�cSr�)Nr!z\90r�rrrrrN�r�cSr�)Nr!z\99r�rrrrrN�r�cSr�)Nr!�\118r�rrrrrN�r�cSr�)Nr!�\11ar�rrrrrN�r�cSr�)Nr!z\181r�rrrrrN�r�cSr�)Nr!z\800r�rrrrrN�r�z(((((((((((x)))))))))))r�z((((((((((y))))))))))(.)r��xyz�xz8r��xza)r&r)rcrr�error�INVALID_GROUP_REFr>rrr� test_sub_template_numeric_escape�sN���z+RegexTests.test_sub_template_numeric_escapecCs2|�t�ddd�d�|�t�dddd�d�dS)NrU�b�aaaaa�bbbbbr5�baaaargr>rrr�test_qualified_re_sub�sz RegexTests.test_qualified_re_subcCrf)Nz(\S)\s+(\S)z\1 \2zhello  therezhello therergr>rrr�test_bug_114660�s�zRegexTests.test_bug_114660cCshtjdkr|�t�ddd�d�n|�t�ddd�d�|�t�ddd�d�|�t�ddd�d	�dS)
N�r6r\rz(?V0)x*�-�abxdz-a-b--d-z-a-b-d-z(?V1)x*r3zab-d��sys�version_infor&r)rcr>rrr�test_bug_462270�s

zRegexTests.test_bug_462270cCs*d}|�t�d|dd��|�d�dS)N�ÿz(?P<z>a)�abcrU)r&r)r;�group)r
�
group_namerrr�test_bug_14462�s��zRegexTests.test_bug_14462cCs�|�tj|jdd��|�tj|jdd��|�tj|jdd��|�tj|jdd��|�tj|jdd��|�t|jdd��|�	t�
dd	d
�d�|�	t�
ddd
�d�|�tj|jd
d��dS)NcS�t�ddd�S)NrQz\g<arRr�rrrrrN�r�z/RegexTests.test_symbolic_refs.<locals>.<lambda>cSr�)NrQz\g<rRr�rrrrrN�r�cSr�)NrQ�\grRr�rrrrrN�r�cSr�)NrQz\g<a a>rRr�rrrrrN�r�cSr�)NrQz\g<1a1>rRr�rrrrrN�r�cSr�)NrQz\g<ab>rRr�rrrrrN�r�z(?P<a>x)|(?P<b>y)z\g<b>rR�z\2cSr�)NrQz\g<-1>rRr�rrrrrN�r�)rrr)r��
MISSING_GT�MISSING_GROUP_NAME�
MISSING_LT�BAD_GROUP_NAME�
IndexError�UNKNOWN_GROUP_Ir&rcr>rrr�test_symbolic_refs�szRegexTests.test_symbolic_refscCst|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�d	dd�d
�|�t�d	ddd�d�dS)
NrEr!rF)rG�zb+)zx BBBBr5r�)r�rzb*)�xxxyxzx�r�)�xxxyzr�)r&r)�subnr>rrr�test_re_subn�s
zRegexTests.test_re_subncCs`|�t�dd�gd��tjdkrB|�t�dd�gd��|�t�dd�gd��|�t�d	d�gd��|�t�d
d�gd��n0|�t�dd�gd��|�t�dd�gd
��|�t�d	d�gd��|�t�d
d�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�dd�t�dd�D�gd��|�t�dd�gd��|�dd�t�dd�D�gd��|�t�dd�gd��|�dd�t�dd�D�gd��|�t�dd�gd ��|�d!d�t�dd�D�gd ��|�t�d"d#�gd$��|�t�d%d#�gd&��|�t�d'd#�gd(��dS))N�:�:a:b::c�r�rUr�r��cr��:*�r�r�rUr�r�r�r�r��(:*)�r�r�r�r�rUr�r�r�r��::r�r�r�r�r�z(?::*)z(:)*)r�r�r�NrUr�r�Nr�r�r�Nr�Nr��r�rUr�r��r�r�rUr�r�r�r�)r�r�rUr�r�r�r�z([b:]+))r�r�rUz:b::r�z(b)|(:+))
r�Nr�rUNr�r�r�Nr�Nr�r�z(?:b)|(?::+))r�rUr�r�r�r!�xaxbxccS�g|]}|�qSrr��.0rMrrr�
<listcomp>rpz,RegexTests.test_re_split.<locals>.<listcomp>z(?r)x)r�r�rUr�cSr�rrr�rrrr�rpz(x)|(y))
r�r!NrUr!Nr�r!Nr�cSr�rrr�rrrr�$rpz(?r)(x)|(y))
r�r!Nr�r!NrUr!Nr�cSr�rrr�rrrr�)rp�(?V1)\bza b c)r�rU� r�r�r�r�z(?V1)\m)r��a zb r�z(?V1)\M)rU� bz cr�)r&r)�splitr�r��	splititerr>rrr�
test_re_splits8
""��zRegexTests.test_re_splitcCs�|�t�ddd�gd��|�t�ddd�gd��|�t�ddd�gd��tjd	kr;|�t�d
dd�gd��dS|�t�d
dd�gd��dS)Nr�r�r�)r�rU�b::cza:b:c:d)rUr�zc:dz(:))r�r�rUr�r�r�r�)r�r�r�r�za:b::c)r&r)r�r�r�r>rrr�test_qualified_re_split3s
z"RegexTests.test_qualified_re_splitcCs|�t�dd�g�|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd	�d
g�|�t�dd	�d
g�|�t�dd
�dg�|�t�dd�dg�|�t�dd�dg�|�t�dd�dg�|�t�dd�dg�|�t�dd�dg�dS)N�:+r��
a:b::c:::d�r�r�z:::�(:+)�(:)(:*)�)r�r�)r�r�)r�r�z\((?P<test>.{0,5}?TEST)\)z	(MY TEST)zMY TESTz\((?P<test>.{0,3}?TEST)\)z\((?P<test>.{0,3}?T)\)z(MY T)zMY Tz[^a]{2}[A-Z]z
  Sz  Sz[^a]{2,3}[A-Z]z
   Sz   SzX(Y[^Y]+?){1,2}( |Q)+DEFzXYABCYPPQ
Q DEF)zYPPQ
r�z(\nTest(\n+.+?){0,2}?)?\n+Endz
Test
xyz
xyz
End)z
Test
xyz
xyzz
xyz�r&r)r+r>rrr�test_re_findall@s<
��
���
��
��zRegexTests.test_re_findallcCs|�t�dd�gd��dS)Nz(a|(b))�aba)�rUr�)r�r�r�r�r>rrr�test_bug_117612Y�zRegexTests.test_bug_117612cCs�|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�dd�|�t�dd�dd�|�t�dd��dd�d�t�d�}|�|�d�dd�d�|�|�d	�dd�d
�|�|�d�dd�d�|�|�d
�dd�d�|�|�d
�dd�d�t�dd�}|�|��d�|�|�d�d�|�|�d�d�|�|�dd�d�t�d�}|�|�d��ddd�d�|�|�d	��ddd�d�|�|�d��ddd�d�dS)NrU�rU�(a)�rUrUrr5z
((a)|(b))(c)?)rUrUrUNNr�)r�r�Nr�N�ac)r�rUrUNr��bc)r�r�Nr�r�z!(?:(?P<a1>a)|(?P<b2>b))(?P<c3>c)?r�r6)rUNN�a1�b2�c3)Nr�N�rUNr�)r&r)r=r�r*)r
�patrMrrr�
test_re_match]s(

 zRegexTests.test_re_matchcCs6|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd	�dd�d
�|�t�dd�dd�d�|�t�d
d�dd�d�|�t�d
d�dd�d�t�d�}|�|�d�dd�d�|�|�d�dd�d�|�|�d�d�|�|�d�d�dS)Nz^(\()?([^()]+)(?(1)\))$r�)r��(rUrU�rUNrUza)z(az^(?:(a)|c)((?(1)b|d))$�ab)r�rUr��cd)r�N�dz^(?:(a)|c)((?(1)|d))$)rUrUr�z(?P<g1>a)(?P<g2>b)?((?(g2)c|d))r�)r�rUr�r��ad)r�rUNr��abdr�)r&r)r=r*�r
�prrr�test_re_groupref_existsxs�
z"RegexTests.test_re_groupref_existscCs�|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�d�|�t�dd�d�|�t�d	d
�dd�d�|�t�dd
�dd�d�|�t�dd�dg�dS)Nz^(\|)?([^()]+)\1$�|a|)r��|rUz^(\|)?([^()]+)\1?$rUr�za|z|az^(?:(a)|c)(\1)$�aa)r�rUrUz^(?:(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�z123 )r&r)r=r+r>rrr�test_re_groupref�s
��zRegexTests.test_re_grouprefcCs"|�t�dd���ddd��dS)N�#(?P<first>first) (?P<second>second)�first second�first�second�r�r�)r&r)r=�	groupdictr>rrr�test_groupdict�s

��zRegexTests.test_groupdictcCs|�t�dd��d�d�dS)Nr�r�z\2 \1 \g<second> \g<first>zsecond first second first)r&r)r=�expandr>rrr�test_expand�s
��zRegexTests.test_expandcCs�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd�dd�|�t�d	d�dd�|�t�d
d�dd�|�t�dd�dd�|�t�dd�dd�|�t�d
d�dd�|�t�dd�dd�|�t�dd�dd�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd�dd�|�t�dd�dd�|�t�dd�dd�|�t�dd�dd�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�d d��d�|�tt�d!d��d�|�tt�d"d��d�|�tt�dd��d�|�t�d#d�d�|�tt�d#d$��d�dS)%Nz	^(\w){1}$r�z
^(\w){1}?$z^(\w){1,2}$z^(\w){1,2}?$z	^(\w){3}$r5r�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}$r0z^x{1}?$z^x{1,2}$z	^x{1,2}?$z^x{1}rr!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{}$zx{})r&r)r=�boolr>rrr�test_repeat_minmax�s<zRegexTests.test_repeat_minmaxcCs�|�t�d�jd�|�t�d�jtjtjBtjB�|�t�d�jtjtjBtjB�|�t�d�j	d�|�t�d�j
i�|�t�d�j
ddd��|�t�dd�jd	�|�t�dd�j
d�|�t�d
d�jd	�|�t�d
d�j
d�|�t�d
d���d
�|�t�d
d��d�d�|�t�dd�jd�|�t�dd�jd�|�ttt�dd�j��|j�t�d�}d	|j
d<|�|j
dd�dS)Nz
(?i)(a)(b)s
(?i)(a)(b)r�z(?i)(?P<first>a)(?P<other>b)r5)r��otherr�rUrzb(c)�abcdef�r4�r�r6��rr5rz
abc(?P<n>def)�n)r&r)r*ro�flagsrm�U�DEFAULT_VERSIONr`�groups�
groupindexr=�pos�endposr;r<�string�regsrvr�rerwr�rrr�test_getattr�s4����

zRegexTests.test_getattrcCs�|�t�dd�dd�|�t�dd�dd�|�t�ddtj�dd	�|�t�d
dtj�dd	�|�t�ddtj�dd�|�t�ddtj�dd�|�t�dd
tj�dd�|�t�ddtj�dd�|�t�dd
tj�d�|�t�dd�dd	�|�t�d
d�dd	�|�t�ddtj�dd�|�t�ddtj�dd�|�t�ddtj�d�|�t�dd�dd�|�t�ddtj�dd�|�t�ddtj�dd�dS)Nz\b(b.)\bzabcd abc bcd bxr5�bxz\B(b.)\Bzabc bcd bc abxds\b(b.)\bsabcd abc bcd bxsbxs\B(b.)\Bsabc bcd bc abxd�^abc$z
abc
rr�z	^\Aabc\Z$s^abc$s
abc
�abcs	^\Aabc\Z$z\d\D\w\W\s\Sz1aa! as\d\D\w\W\s\Ss1aa! a)r&r)r;�LOCALE�UNICODE�Mr>rrr�test_special_escapes�s~�����������������������zRegexTests.test_special_escapesc	Cs�|�t�dd�dd�|�t�ddtj�dd�|�d�tjddtjd��d�|�d�tjddtjd��d�|�d�tjd	dtjd��d�dS)
Nz([\u2222\u2223])u∢r5r�rIueèéêëēěė�rz%[e\xe8\xe9\xea\xeb\u0113\u011b\u0117]z*e|\xe8|\xe9|\xea|\xeb|\u0113|\u011b|\u0117)r&r)r=r�joinr+r>rrr�test_bigcharsets2����������zRegexTests.test_bigcharsetcCs<|�t�ddtj�dd�|�t�ddtj�dd�dS)N�a.b�a
br�a.*bza

b)r&r)r=�DOTALLr>rrr�test_anyalls�zRegexTests.test_anyallcCs|�t�dd�dd�|�t�dd�dd�|�t�dd�dd�|�t�dd�dd�|�t�d	d
�dd�|�t�dd�dd�|�t�d
d
�dd�|�t�dd
�dd�|�t�dd�dd�|�t�dd�dd�|�t�dd�dd�dS)Nz
(a(?=\s[^a]))�a br5rUz(a(?=\s[^a]*))z(a(?=\s[abc]))z(a(?=\s[abc]*))za bcz(a)(?=\s\1)�a az(a)(?=\s\1*)�a aaz(a)(?=\s(abc|a))z
(a(?!\s[^a]))z(a(?!\s[abc]))za dz(a)(?!\s\1)z(a)(?!\s(abc|a))�r&r)r=r>rrr�test_non_consuming szRegexTests.test_non_consumingcCs�|�t�ddtj�dd�|�t�ddtj�dd�|�t�ddtj�dd�|�t�d	d
tj�dd
�|�t�ddtj�dd�|�t�dd
tj�dd
�|�t�ddtj�dd�|�t�dd
tj�dd
�|�t�ddtj�dd�|�t�dd���d�|�t�dd���d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�dS)Nr��ABCrrsABCz
(a\s[^a]*)za bbr5z
(a\s[abc])rz(a\s[abc]*)z	((a)\s\2)rz
((a)\s\2*)rz((a)\s(abc|a))z((a)\s(abc|a)*)z[Z-a]�_rz	(?i)[Z-a]z(?i)nao�nAoTz
(?i)n\xE3ounÃouNÃOz(?i)suſ)r&r)r=rmr<r�r>rrr�test_ignore_case.s2�����zRegexTests.test_ignore_casecCs�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�d	d
���d�|�t�dd���d�|�t�dd
���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�d	d���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�d}|D]}|D]}t�d||�s�|��q�q�|�tt�dd ��d!�|�tt�dd"��d!�|�tt�d#d ��d!�|�tt�d#d"��d!�|�tt�d$d ��d!�|�tt�d%d ��d!�|�tt�dd ��d!�|�tt�d#d ��d!�|�tt�d$d ��d!�|�tt�d%d ��d!�|�tt�d&d��d!�|�tt�d&d��d!�|�t�d'd(�d)d*g�|�t�d+d(�d)d*g�|�t�d,d-���d.�|�t�d/d-���d.�|�t�d0d-���d.�|�tjd1d2dgd3���d4�|�tjd1d5d6gd3���d7�dS)8Nz(?fi)ss�SS�rr�z(?fi)SS�ss�ßrz#(?fi)\N{LATIN SMALL LETTER SHARP S}z (?fi)\N{LATIN SMALL LIGATURE ST}�STz(?fi)STustuſtz(?fi)SSTußtusſtusst�SSTr4z(?fi)FFIuffiuffiuffiz!(?fi)\N{LATIN SMALL LIGATURE FFI}�FFIr9z!(?fi)\N{LATIN SMALL LIGATURE FF}iz!(?fi)f\N{LATIN SMALL LIGATURE FI}uΣσςz(?fi)z(?iV1)ffufffiTufiffz(?iV1)fiz
(?iV1)fffiz
(?iV1)f\uFB03z
(?iV1)f\uFB01z/(?iV0)\m(?:word){e<=3}\M(?<!\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�rr�uaffine�ffi�rr�)r&r)r;r<r=r,r�r+)r
�sigma�ch1�ch2rrr�test_case_foldingHsP
��
��
��
��
��
��
��
��
��
��
��
��
��
��
��
������������������
���
���
��
��
����
��zRegexTests.test_case_foldingcCs|�t�dd�dd�dS)Nz(\s)r�r5rr>rrr�
test_category�r�zRegexTests.test_categorycCs4|�t�dd�dd�|�t�dd�dd�dS)Nz\s([^a])r�r5r�z	\s([^a]*)z bb�bb�r&r)r;r>rrr�test_not_literal��zRegexTests.test_not_literalcCs4|�t�dd�dd�|�t�dd�dd�dS)Nz\s(b)r�r5r�za\sr�rr;r>rrr�test_search_coverage�r=zRegexTests.test_search_coveragec
Cs�d}|�t�|�|�tdd�D].}|t|�7}|�tt�t�t|��t|���d�|�t�t�t|��t|����d�qt�t�|��}|�|�|���d�dS)Nr�r�Tr�rr?)	r&r)�escape�rangerdr�r=r<r*)r
r��ir�rrr�test_re_escape�s � �zRegexTests.test_re_escapec	Cs�d}|�t�|�|�tdd�D])}t|g�}||7}|�tt�t�|�|��d�|�t�t�|�|���d�qt�t�|��}|�|�|���d�dS)N�rr?Trr@)	r&r)rArB�bytesr�r=r<r*)r
r�rCr�r�rrr�test_re_escape_byte�s
 zRegexTests.test_re_escape_bytecCsltjtjkr
|��tjtjkr|��tjtjkr|��tjtj	kr(|��tj
tjkr4|��dSdSr)r)rm�
IGNORECASEr,�Lrr�	MULTILINE�Srr]�VERBOSEr>rrr�test_constants�s�zRegexTests.test_constantsc	Cs@tjtjtjtjtjfD]}|�ttt�	d|���|j
�qdS)Nz	^pattern$)r)rmrr]rKrIr&rvrr*rw)r
�flagrrr�
test_flags�s
��zRegexTests.test_flagsc	Cs�dD]j}|�tt�d|t|���d�|�tt�d|t|�d��d�|�tt�d|t|�d��d�|�tt�d|t|���d�|�tt�d	|t|�d��d�|�tt�d
|t|�d��d�q|�tj|jdd
��dS)N�rr.�� �@���z\%03oTz\%03o0�0z\%03o8�8z\x%02xz\x%02x0z\x%02xz�zcS�t�dd�S)Nz\911r��r)r=rrrrrN��z8RegexTests.test_sre_character_literals.<locals>.<lambda>)r&r�r)r=rdrrr�r��r
rCrrr�test_sre_character_literals�s  �� ��z&RegexTests.test_sre_character_literalsc	Cs�dD]b}|�tt�d|t|���d�|�tt�d|t|���d�|�tt�d|t|���d�|�tt�d|t|���d�|�tt�d|t|���d�|�tt�d|t|���d�q|�tj|jd	d
��dS)NrPz[\%03o]Tz[\%03o0]z[\%03o8]z[\x%02x]z	[\x%02x0]z	[\x%02xz]cSrZ)Nz[\911]r�r[rrrrrN�r\z>RegexTests.test_sre_character_class_literals.<locals>.<lambda>)r&r�r)r=rdrrr��BAD_OCTAL_ESCAPEr]rrr�!test_sre_character_class_literals�s     "z,RegexTests.test_sre_character_class_literalscCsR|�t�dd��d�d�|�t�dd��d�d�|�t�dd��d�d�dS)Nz(a)|(b)r�r5����rara)r&r)r=�start�endr<r>rrr�test_bug_113254�szRegexTests.test_bug_113254cCsr|�t�dd�jd�|�t�dd�jd�|�t�dd�jd�|�t�dd�jd�|�t�dd�jd�dS)	Nz(a)?arUz(a)(b)?br�r5z(?P<a>a)(?P<b>b)?bz(?P<a>a(b))�((a)))r&r)r=�	lastindex�	lastgroupr>rrr�test_bug_527371�s�zRegexTests.test_bug_527371cCs|�tj|jdd��dS)NcS�
t�d�S)Nzfoo[a-�r)r*rrrrrN�
z,RegexTests.test_bug_545855.<locals>.<lambda>)rrr)r��BAD_SETr>rrr�test_bug_545855�szRegexTests.test_bug_545855cCs�|�t�dddd��d�d�|�t�dddd	ddd
��d�d�|�t�ddd
d��d�d�|�t�dddd��d�d�dS)Nz.*?ci'r�r�ri!Nz.*?cdi�r��cdei#Ni Nr��deia�z(a|b)*?c)r&r)r=rdr;r>rrr�test_bug_418626s�����zRegexTests.test_bug_418626cCs,dt�d�d}|�t�|�odd�dS)N�[u‹�]r5)r)rAr&r*�r
r�rrr�test_bug_612074szRegexTests.test_bug_612074cCs`|�t�ddd�dd�|�t�dddd�dd�|�t�dddd�dd�dS)Nz(x)*iP�r!r5z(x)*yr"z(x)*?yrr>rrr�test_stack_overflows $zRegexTests.test_stack_overflowcCs�dd�}dd�}dd�}dd�}t�d	|fd
|fd|fd|fd
g�}|�tt|j�d�j��|j�|�|�d�gd�df�dS)NcSs|Srr��scanner�tokenrrr�s_ident rOz(RegexTests.test_scanner.<locals>.s_identcSsd|S)Nzop%srrwrrr�
s_operator!�z+RegexTests.test_scanner.<locals>.s_operatorcS�t|�Sr)�floatrwrrr�s_float"r|z(RegexTests.test_scanner.<locals>.s_floatcSr}r)r@rwrrr�s_int#r|z&RegexTests.test_scanner.<locals>.s_intz[a-zA-Z_]\w*z\d+\.\d*rHz=|\+|-|\*|/)z\s+Nr�zsum = 3*foo + 312.50 + bar)	�sumzop=r6zop*�foo�op+g�s@r��bar)	r)�Scannerr&rvrrxrorw�scan)r
rzr{rr�rxrrr�test_scanners���
�zRegexTests.test_scannercCsNdD]"}|�t�d|d�dd�d�|�t�d|d�dd�d�qdS)N)r��?�*z
((.%s):)?zrY)rYNN�a:z)r�za:rUr)r
�oprrr�test_bug_448951/s "�zRegexTests.test_bug_448951cCs�|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�dd�d�|�t�d	d�dd�d
�|�t�dd�dd�d
�|�t�dd�dd�d�|�t�dd�dd�d�dS)Nz	^((a)|b)*r�)r�r�rUz^(([ab])|c)*)r�r�r�z^((d)|[ab])*)r�r�Nz
^((a)c|[ab])*z^((a)|b)*?c)r�r�rUz^(([ab])|c)*?d�abcd)r�r�r�z^((d)|[ab])*?c)r�r�Nz^((a)c|[ab])*?crr>rrr�test_bug_7251068s zRegexTests.test_bug_725106cCs<|�t�dd�dd�d�|�t�dd�dd�d�dS)Nz(a)(?:(?=(b)*)c)*�abb�rUrUNz(a)((?!(b)*))*)rUrUNNrr>rrr�test_bug_725149Js zRegexTests.test_bug_725149cCs4Gdd�dt�}t�|d��}|�|�d�d�dS)Nc@seZdZdS)z.RegexTests.test_bug_764548.<locals>.my_unicodeN)rrrrrrr�
my_unicodeSsr�r�r�)rAr)r*r&r=)r
r�r�rrr�test_bug_764548QszRegexTests.test_bug_764548cCs*t�dd�}|�dd�|D�gd��dS)Nr�r�cS�g|]}|d�qS�rr)r��itemrrrr�Y�z,RegexTests.test_finditer.<locals>.<listcomp>r�)r)�finditerr&)r
�itrrr�
test_finditerWszRegexTests.test_finditercCs$t�d�t�d�ur|��dSdS)N�
bug_926075s
bug_926075)r)r*r,r>rrr�test_bug_926075[s�zRegexTests.test_bug_926075cCs$d}|�t�|��d�gd��dS)Nu[.。.。]za.b.c�rUr�r�)r&r)r*r��r
rorrr�test_bug_931848_s zRegexTests.test_bug_931848cslt�dd��|�t����d�|�t�fdd��t�d��d�}|�|�	���d�|�|�	�d�dS)N�\sr�r5r�c�t��Sr��nextr�r�rrrNgr|z,RegexTests.test_bug_581080.<locals>.<lambda>)
r)r�r&r�r<�assertRaises�
StopIterationr*rxr;)r
rxrr�r�test_bug_581080dszRegexTests.test_bug_581080csLt�dd��|�t����d�|�t����d�|�t�fdd��dS)Nz.*�asdfr4�r�r�cr�rr�rr�rrrNqr|z,RegexTests.test_bug_817234.<locals>.<lambda>)r)r�r&r�r<r�r�r>rr�r�test_bug_817234mszRegexTests.test_bug_817234cCsXddl}dD]#}|�|�}|�t�d��|�d�|�t�d��|�dd�d�qdS)Nr�bBuhHiIlLfdsblarEr5r)�arrayr&r)r*r=)r
r��typecoderUrrr�test_empty_arrayss
"�zRegexTests.test_empty_arraycCs,td�}td�}t�|tjtjB�}|�t|�|��d�t�|tjtjB�}|�t|�|��d�t�d|tj�}|�t|�|��d�t�d|tj�}|�t|�|��d�t�d|�}|�t|�|��d�t�d|�}|�t|�|��d�|�tt�dd��d�|�t�dd�d�dS)	Ni�i�Tz(?i)z(?iu)�(?i)ar`za(?i))rdr)r*rmrr&r�r=)r
�
upper_char�
lower_charr�rrr�test_inline_flags{s zRegexTests.test_inline_flagscCs�t�d�}|�|�dd�d�|�|�dd�d�|�|�dd�d�t�dtj�}|�|�dd�d	�|�|�dd�d
�|�|�dd�d�dS)N�$�#za
b
za
b#
#za
b
cza
b
c#rPz#
#za#
b#
#za#
b#
c#)r)r*r&rcrJr�rrr�test_dollar_matches_twice�s
z$RegexTests.test_dollar_matches_twicecsPt�d��t�d��|�t|j�fdd��|�t|j�fdd��|�t|j�fdd��|�t|j�fdd��|�t|j�fdd��|�t|j�fd	d��|�t|j�fd
d��|�t|j�fdd��|�t|j	dd��|�t|j	d
d��|�t|j
dd��|�t|j
dd��|�t|j
dd��|�t|j
dd��dS)NrI�.c�
��d�S)N�b�r=r�r�rrrN�rlz2RegexTests.test_bytes_str_mixing.<locals>.<lambda>cr�)Nr�r�r��bpatrrrN�rlc���dd�S�Nr�r��rcrr�rrrN�r\cr��Nr��cr�rr�rrrN�r\cr�)Nr�r�r�rr�rrrN�r\cr�r�r�rr�rrrN�r\cr�r�r�rr�rrrN�r\cr��Nr�r�r�rr�rrrN�r\cS�t�dtj�S)N�\w�r)r*rrrrrrN�r�cSrj)Ns(?u)\wrkrrrrrN�rlcSst�dtjtjB�S)N�\w)r)r*r�ASCIIrrrrrN�scSr�)Nz(?u)\w)r)r*r�rrrrrN�r�cSr�)N�(?a)\wr�rrrrrN�r�cSrj�Nz(?au)\wrkrrrrrN�rl)r)r*rr�	TypeError�STR_PAT_ON_BYTES�BYTES_PAT_ON_STR�STR_PAT_BYTES_TEMPL�BYTES_PAT_STR_TEMPLrs�BYTES_PAT_UNI_FLAG�MIXED_FLAGSr>r)r�r�r�test_bytes_str_mixing�s 

z RegexTests.test_bytes_str_mixingcCsDdtjfD]'}t�d|tjB�}|�t|�d��d�t�d|�}|�t|�d��d�qt�dtjtjB�}|�|�d�d�t�dtj�}|�|�d�d�t�dtj�}|�|�d�d�t�d�}|�|�d�d�dtjfD]"}t�d|tjB�}|�|�d	�d�t�d
�}|�|�d	�d�qs|�t	|j
dd��dS)
Nr�À�àTr�u(?a)Àr�����r�cSrjr�rkrrrrrN�rlz8RegexTests.test_ascii_and_unicode_flag.<locals>.<lambda>)r)rr*rHr&r�r=r�rrrsr�)r
rr�rrr�test_ascii_and_unicode_flag�s&

z&RegexTests.test_ascii_and_unicode_flagcCs�t�dd�}|s|�d�n|r"|d|�d�ks"|d|�d�kr'|�d�|s0|�d�dS|dd�dkrH|�d�t|dd����dSdS)	N�(?<a>\w)�xyz(Failed: expected match but returned Nonerr5�Failed)r!r!z0Failed: expected "('x', 'x')" but got {} instead)r)r=r,r��format�ascii�r
rMrrr�test_subscripting_match�s(
 �z"RegexTests.test_subscripting_matchcCsJt�dd�}t�dd�}|r|r|dd�|dd�ks#|�d�dSdS)Nz	(?P<a>\w)r!r�r�)r)r=r,)r
�m0�m1rrr�test_new_named_groups�s
 �z RegexTests.test_new_named_groupsc	Cs�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�tt�dd��d�|�tt�dd	��d�|�tt�d
d��d�|�tt�dd
��d�|�t�dd�d�|�t�d
d�d�|�t�dd�d�|�t�dd	�d�|�t�dd�d�|�t�dd
�d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�d d��d�|�tt�d!d��d�|�tt�d"d��d�|�tt�d#d��d�|�tt�d$d��d�|�tt�d%d��d�|�tt�d&d��d�|�tt�d'd��d�|�tt�d(d��d�|�tt�d)d��d�|�tt�d*d��d�|�tt�d+d��d�|�tt�d,d��d�|�tt�d-d��d�|�tt�d.d/��d�|�tt�d0d1��d�|�tt�dd��d�|�t�d.d2�d�|�t�d0d2�d�|�t�dd2�d�|�t�d3d/�d�|�t�d4d1�d�|�t�d5d�d�|�tt�d3d2��d�|�tt�d4d2��d�|�tt�d5d2��d�|�tt�d6d��d�|�tt�d6d7��d�|�tt�d8d��d�|�tt�d9d7��d�|�tt�d:d7��d�|�tt�d:d��d�|�tt�dd/��d�|�tt�dd7��d�|�tt�dd;��d�|�t�d<d���d=�|�t�d<d>���d?�|�t�d<d@�gdA��|�t�dBd@�dCdDg�|�t�d<dE�gdF��|�tt�d9d7��d�dG}dH}tdI���}gd|dJf�dK|dJf�d5|dLf�dM|dLf�d.|dNf�dO|dNf�d3|dPf�dQ|dPf�dR|dSf�dT|dUf�dV|dWf�dX|dYf�dZ|d[f�d\|d]f�d^�d_�d`�da�d|dbf�dc|dbf�d|ddf�de|ddf�d|dff�dg|dff�d|dhf�di|dhf�dj|dkf�dl|dmf�dn|dof�dp|dqf�dr|dsf�dt|duf�d|dbf�dv|dbf�dw|ddf�dx|ddf�dy|dff�dz|dff�d{|dhf�d||dhf�d}|dkf�d~|dmf�d|dof�d�|dqf�d�|dsf�d�|duf�}|D]?\}}}z|dd���t�||��|k�r$|�	d��
|��W�qt�yE}z|�	d��
|t|���WYd}~�qd}~ww|�tt�d�d/��d�|�tt�d�d���d�|�tt�d�d���d�dS)�Ns(?ai)�r�s	(?ai)\xC0s(?a)\wr�r�Ts(?L)\d�0s(?L)\s� s(?L)\w�a�?s(?L)\Ds(?L)\Ss(?L)\Wz\p{Cyrillic}uАz(?i)\p{Cyrillic}z\p{IsCyrillic}z\p{Script=Cyrillic}z\p{InCyrillic}z\p{Block=Cyrillic}z[[:Cyrillic:]]z[[:IsCyrillic:]]z[[:Script=Cyrillic:]]z[[:InCyrillic:]]z[[:Block=Cyrillic:]]z\P{Cyrillic}r`z\P{IsCyrillic}z\P{Script=Cyrillic}z\P{InCyrillic}z\P{Block=Cyrillic}z
\p{^Cyrillic}z\p{^IsCyrillic}z\p{^Script=Cyrillic}z\p{^InCyrillic}z\p{^Block=Cyrillic}z[[:^Cyrillic:]]z[[:^IsCyrillic:]]z[[:^Script=Cyrillic:]]z[[:^InCyrillic:]]z[[:^Block=Cyrillic:]]z\drWr�r�r�z\Dz\Sz\Wz\p{L}rUz\p{Lu}�\p{Ll}r�r"�\Xr�àr&�aààeéé�rUr�r��e�éué�\X{3}�aàà�eéé�

́Á��
riúuÁu-09AZaz_Γγs-09AZaz_z#Ll Lm Lo Lt Lu Mc Me Mn Nd Nl No Pcu09AZaz_Γγz
[[:word:]]r�z[[:^word:]]�09z[[:digit:]]u
-AZaz_Γγz[[:^digit:]]z[[:alpha:]]uAZazΓγz[[:^alpha:]]z-09_z[[:alnum:]]u
09AZazΓγz[[:^alnum:]]z-_z[[:xdigit:]]�09Aaz
[[:^xdigit:]]u-Zz_Γγ)z\p{InBasicLatin}�aárU)z\P{InBasicLatin}r��á)z(?i)\p{InBasicLatin}r�rU)z(?i)\P{InBasicLatin}r�r�s09AZaz_s(?L)[[:word:]]�-s(?L)[[:^word:]]s09s(?L)[[:digit:]]s-AZaz_s(?L)[[:^digit:]]s(?L)[[:alpha:]]sAZazs(?L)[[:^alpha:]]s-09_s(?L)[[:alnum:]]s09AZazs(?L)[[:^alnum:]]s-_s(?L)[[:xdigit:]]s09Aas(?L)[[:^xdigit:]]s-Zz_s(?a)[[:word:]]s(?a)\Ws(?a)[[:^word:]]s(?a)\ds(?a)[[:digit:]]s(?a)\Ds(?a)[[:^digit:]]s(?a)[[:alpha:]]s(?a)[[:^alpha:]]s(?a)[[:alnum:]]s(?a)[[:^alnum:]]s(?a)[[:xdigit:]]s(?a)[[:^xdigit:]]rz
Failed: {}zFailed: {} raised {}z\p{NumericValue=0}z\p{NumericValue=1/2}�½z\p{NumericValue=0.5})
r&r)r=r�r<r+�setr�rr,r��	Exceptionr�)	r
�chars_u�chars_b�word_set�testsro�chars�expectedr�rrr�test_properties�sZ����������������������������������������������������
��
�����������	�
���
������������������ �!�#�$�%�&�'�(�)�*�+�,�-�.�/�0�2 �$�������zRegexTests.test_propertiescCsb|�t�dd�dg�|�t�dd�ddg�|�t�dd�gd��|�t�d	d�gd
��dS)N�\w+u हिन्दी,�हिन्दीz\W+r��,r�)r�rrz(?V1)\B)r�u हuिuनu्uदuी,r�)r&r)r+r�r>rrr�test_word_class�s(
��
��
��
��zRegexTests.test_word_classcCs|�t�dd�ddg�dS)N�\G\w{2}�abcd efr�r�r�r>rrr�test_search_anchor�r�zRegexTests.test_search_anchorc	Cs�|�t�dd�gd��|�tjdddd�gd��|�t�dd�dd	g�|�tjdddd�gd
��|�tjdddd�d
dg�|�dd�t�dd�D�gd��|�dd�tjdddd�D�gd
��|�dd�t�dd�D�gd��|�dd�tjdddd�D�gd
��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�t�dd�gd��|�dd�t�dd�D�gd��|�dd�t�dd�D�gd��|�dd�t�dd�D�gd��|�dd�t�dd�D�gd��|�t�dd �d!d"g�|�t�d#d$�d!d"g�|�t�d%d �g�|�t�d&d �d'g�|�t�d(d)�gd*��|�t�d+d)�gd*��|�t�d,d)�gd-��|�t�d.d)�gd-��|�tjd/d$d0d1d2�d3d4g�|�tjd/d$d0d5d2�d3d4g�|�d6d�tjd/d$d0d1d2�D�d3d4g�|�d7d�tjd/d$d0d5d2�D�d3d4g�|�d8d�tjdd$d0d1d2�D�d4d3g�|�d9d�tjdd$d0d5d2�D�d4d3g�|�tjdd$d0d1d2�d4d3g�|�tjdd$d0d5d2�d4d3g�|�t�d:d;tj�d<d=g�|�t�d>d;tj�d=d<g�|�t�d?d�d	g�|�tjd?ddd�d	d!g�|�t�d@dA�dBdCg�|�t�dDdA�dEdFg�|�dGd�t�d?d�D�d	g�|�dHd�tjd?ddd�D�d	d!g�|�dId�t�d@dA�D�dJdKg�|�dLd�t�dDdA�D�dMdNg�|�t�dOdO���dP�|�t�dQdO���dP�|�t�dRdS���dP�|�t�dTdS���dP�|�t�dUdVd�d�|�t�dWdVd�d�dS)XNz(?r).r�)r�r�rUT��
overlapped�(?r)..�abcderpr��rpr�r�r��
(?r)(.)(-)(.)�a-b-c�r�r�r��rUr�r�cSr�r�rr�rrrr��r�z2RegexTests.test_search_reverse.<locals>.<listcomp>cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r��^|\w+�foo bar�r�r�r��
(?V1)^|\w+�	(?r)^|\w+�r�r�r��(?rV1)^|\w+cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�rrr�r�z
.{2}(?<=\G.*)r�z(?r)\G\w{2}z(?r)\w{2}\G�efzq*�qqwe)�qqr�r�r�z(?V1)q*z(?r)q*)r�r�rr�z(?rV1)q*rIr5r6�rrr�r�racSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�z[ab]�aBrU�Bz(?r)[ab]z(?r).{2}�(\w+) (\w+)zfirst second third fourth fifthr�)�third�fourthz(?r)(\w+) (\w+))r!�fifth)r�r cSr�r�rr�rrrr�r�cSr�r�rr�rrrr�	r�cSr�r�rr�rrrr�r�r�zthird fourthcSr�r�rr�rrrr�r�zfourth fifthzsecond thirdr�r2z
(?r)abcdefz
(?i)abcdef�ABCDEFz(?ir)abcdef�(.)r��(?r)(.))r&r)r+r�rmr;r<rcr>rrr�test_search_reverse�s���"��"����������������������
��
�����������zRegexTests.test_search_reversecCs|�t�dd�d�dS)Nz(?>a*)ar�r;r>rrr�test_atomicszRegexTests.test_atomiccCsd|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�d	d
���d�|�t�dd
���d�|�t�dd
���d�|�t�dd
���d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�t�dd
�d�|�t�dd
�d�|�t�dd
�d�|�t�dd
�d�dS)Nza?arUrza*ar7r9za+aza{1,3}az	(?:ab)?abr�r&z	(?:ab)*ab�abababr2z	(?:ab)+abz
(?:ab){1,3}abza?+aza*+aza++aza{1,3}+az
(?:ab)?+abz
(?:ab)*+abz
(?:ab)++abz(?:ab){1,3}+ab�r&r)r;r<r>rrr�test_possessives zRegexTests.test_possessivecCs�tjdkr|�t�dd�gd��n|�t�dd�dg�|�t�dd�gd��|�t�dd�gd��|�d	d
�t�dd�D�gd��|�t�dd�gd��|�d
d
�t�dd�D�gd��|�t�dd�gd��|�dd
�t�dd�D�gd��|�t�dd�gd��|�dd
�t�dd�D�gd��tjdkr�|�t�dd�gd��|�dd
�t�dd�D�gd��n|�t�dd�dg�|�dd
�t�dd�D�dg�tjdkr�|�t�dd�gd��|�dd
�t�dd�D�gd��n|�t�dd�dg�|�dd
�t�dd�D�dg�|�t�dd�gd��|�dd
�t�dd�D�gd��|�t�dd�gd��|�dd
�t�dd�D�gd��dS)Nr�z\br)r�rUr�r�r�r�rrrcSr�r�rr�rrrr�Er�z-RegexTests.test_zerowidth.<locals>.<listcomp>rrcSr�r�rr�rrrr�Ir�rcSr�r�rr�rrrr�Mr�rcSr�r�rr�rrrr�Qr�r�r�)r�r!rUr!r�r!r�r�cSr�rrr�rrrr�WrpcSr�rrr�rrrr�[rpz(?r))r�r�r!r�r!rUr!r�cSr�rrr�rrrr�arpcSr�rrr�rrrr�erpz(?V1)cSr�rrr�rrrr�jrpz(?rV1)cSr�rrr�rrrr�orp)r�r�r&r)r�r+r�r�r>rrr�test_zerowidth8s\
�������
$�
��"&zRegexTests.test_zerowidthcCs�|�t�dd���d�|�t�dd���d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�tjddtjd	�d�|�tjd
dtjd	�d�|�tjddtjd	���d�dS)Nz(?i)Abr�r&z(?i:A)bzA(?i)bz(?V0)Abz(?V1)Abz(?-i)Abrz(?-i:A)bzA(?-i)b)r&r)r;r<rmr>rrr�test_scoped_and_inline_flagsrs�z'RegexTests.test_scoped_and_inline_flagscCsL|�t�dd���d�|�t�dd���d�|�t�dd���d�dS)Nz(?:a+)+r7r9z
(?:(?:ab)+c)+�abcabcr2z
(?:a+){2,}r)r>rrr�test_repeated_repeats�sz RegexTests.test_repeated_repeatscCsD|�t�dd���d�|�t�dd�d�|�t�dd�d�|�t�dd���d�|�tt�dd��d�|�t�d	d�d�|�tt�d
d��d�|�t�dd�d�|�t�dd�d�|�t�d
d�d�|�tt�dd��d�|�t�dd�d�|�tt�dd��d�|�tt�dd��d�|�t�dd�d�|�tt�dd��d�|�t�dd�d�|�tt�dd��d�|�t�dd�d�|�t�dd�d�|�t�dd�d�|�tt�dd��d�|�tt�dd��d�|�t�dd�d�|�tt�dd��d�|�ttt�d���|j	�dS)Nz123(?<=a\d+)�a123�r5r��b123z123(?<!a\d+)z
(a)b(?<=b)(c)r�Tz
(a)b(?<=c)(c)z(a)b(?=c)(c)z(a)b(?=b)(c)z(?:(a)|(x))b(?<=(?(2)x|c))cz(?:(a)|(x))b(?<=(?(2)b|x))cz(?:(a)|(x))b(?<=(?(2)x|b))cz(?:(a)|(x))b(?<=(?(1)c|x))cz(?:(a)|(x))b(?<=(?(1)b|x))cz(?:(a)|(x))b(?=(?(2)x|c))cz(?:(a)|(x))b(?=(?(2)c|x))cz(?:(a)|(x))b(?=(?(1)b|x))cz(?:(a)|(x))b(?=(?(1)c|x))cz(a)b(?<=(?(2)x|c))(c)z(a)b(?<=(?(2)b|x))(c)z(a)b(?<=(?(1)c|x))(c)z(a)b(?<=(?(1)b|x))(c)z(a)b(?=(?(2)x|c))(c)z(a)b(?=(?(2)b|x))(c)z(a)b(?=(?(1)c|x))(c)z(a)\2(b))
r&r)r;r<r�r=rvrr*rwr>rrr�test_lookbehind�s��������������������zRegexTests.test_lookbehindcCs�tjdkr|�t�ddd�d�n|�t�ddd�d�|�t�ddd�d�tjdkr8|�t�ddd�d	�n|�t�ddd�d
�|�t�ddd�d	�tjdkr_|�t�ddd�d�n|�t�ddd�d
�|�t�ddd�d�dS)Nr�z
(?V0)(x)?(y)?z\2-\1r�zy-x-zy-xz
(?V1)(x)?(y)?r!z-x-z-xr"zy--zy-r�r>rrr�test_unmatched_in_sub�s 
��

z RegexTests.test_unmatched_in_subcCs�t�d�}tjdkr|�|�dd�d�d�n|�|�dd�d�d�|�d	d
�|�d�D�ddg�t�d
�}|�|�dd�d�d�|�dd
�|�d�D�ddg�dS)NzD(?mV0)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)r�cS�d|jdS�N�<�>�rhrLrrrrN�rqz+RegexTests.test_bug_10328.<locals>.<lambda>zfoobar )z%foobar<trailing_ws><no_final_newline>r�cSr4r5r8rLrrrrN�rq)zfoobar<trailing_ws>r5cS�g|]}|���qSr�r�r�rrrr��r�z-RegexTests.test_bug_10328.<locals>.<listcomp>r�r�zD(?mV1)(?P<trailing_ws>[ \t]+\r*$)|(?P<no_final_newline>(?<=[^\n])\Z)cSr4r5r8rLrrrrN�rqcSr9rr:r�rrrr��r�)r)r*r�r�r&r�r�rtrrr�test_bug_10328�s0

�����
��
�zRegexTests.test_bug_10328cCsd|�t�dd�ddg�|�tjdddd�gd��|�t�dd�d	d
g�|�tjdddd�gd��|�tjdd
dd�ddg�|�dd�t�dd�D�ddg�|�dd�tjdddd�D�gd��|�dd�t�dd�D�d	d
g�|�dd�tjdddd�D�gd��|�dd�tjdd
dd�D�ddg�|�dd�tjdd
dd�D�ddg�dS)N�..rr�r�Tr	)r�r�r�rprrpr�r
z	(.)(-)(.)rrrcSr�r�rr�rrrr��r�z.RegexTests.test_overlapped.<locals>.<listcomp>cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr�r�rr�rrrr��r�cSr9r�rr�rrrr��r�cSr9rr=r�rrrr��r�r)r&r)r+r�r>rrr�test_overlapped�sF������������zRegexTests.test_overlappedcCs>|�t�dd�gd��|�dd�t�dd�D�gd��dS)Nrza,b,,c,)rUr�r�r�r�cSr�rrr�rrrr��rpz-RegexTests.test_splititer.<locals>.<listcomp>)r&r)r�r�r>rrr�test_splititer�s&zRegexTests.test_splititercCs||�t�dd���d�|�t�dd���d�|�t�dd�gd��|�t�dd�d	d
g�|�t�dd�gd��dS)
Nr�r�rr�r&r�r�r�r�r�r�r�)r&r)r=r<r+r>rrr�
test_grapheme�s
��
���zRegexTests.test_graphemecCs�d}|�t�d|�gd��|�t�d|�gd��d}|�t�d|�gd��|�t�d|�gd��d}|�t�d|�gd	��|�t�d|�gd
��dS)Nz4The quick ("brown") fox can't jump 32.3 feet, right?r�)r��Ther��quickz ("�brownz") �foxr��can�'�tr��jumpr��32rI�3r��feet�, �rightr�z(?V1w)\b)r�rAr�rBr�r��"rCrN�)r�rDr��can'tr�rHr�z32.3r�rKrr�rMr�r�zThe  fox)r�rAz  rDr�zcan't aujourd'hui l'objectif)
r�rErFrGr��aujourdrF�huir��lrF�objectifr�)r�rPr�zaujourd'huir�z
l'objectifr�)r&r)r��r
�textrrr�test_word_boundaryszRegexTests.test_word_boundarycCs�|�t�dd�ddg�|�t�dd�dg�|�t�dd�ddg�|�t�d	d�ddg�|�t�d	d�ddg�|�t�d	d�ddg�|�t�d
d���d�|�t�d
d
�d�|�t�d
d�d�|�t�dd���d�|�t�dd
�d�|�t�dd�d�|�t�dd���d�|�t�dd���d�|�t�dd�d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd
���d�|�t�dd�d�|�t�dd���d�|�t�dd
���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd�d�|�t�dd���d�|�t�dd���d�|�t�dd���d�dS)Nz.+zLine 1
Line 2
zLine 1zLine 2zLine 1
Line 2
zLine 1
Line 2
zLine 1
zLine 2
z(?w).+�^abcr�rz
abcz
abcz(?w)^abc�abc$zabc
zabc
z(?w)abc$�(?m)^abcr5z	(?mw)^abc�(?m)abc$z	(?mw)abc$)r&r)r+r;rcr>rrr�test_line_boundary sT������zRegexTests.test_line_boundarycCs@|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d	�|�t�dd
���d�|�t�dd���d	�|�t�dd
���d�|�t�d
d���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���dgdgd��|�t�dd���d�|�t�dd���d d!ggd��dS)"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�)rUr�Nr��acd)rUNr�r�z(a)(?:(b)|(c))(d)z(a)(?|(b)|(b))(d))rUr�r�z(?|(?<a>a)|(?<b>b))(c)z(?|(?<a>a)|(?<a>b))(c))rUr�)r�r�z$(?|(?<a>a)(?<b>b)|(?<b>c)(?<a>d))(e)�abe)rUr�r�ro)r�r�r�z (?|(?<a>a)(?<b>b)|(?<b>c)(d))(e)z(?|(?<a>a)(?<b>b)|(c)(d))(e))r�r�r�z (?|(?<a>a)(?<b>b)|(c)(?<a>d))(e)rUr�)rUr�)r�Nr�r�r�)r&r)r=r�capturesdictr>rrr�test_branch_resetJs�
��
��
��
���������
��
��
��
��
��
��
��
��
��
��zRegexTests.test_branch_resetcCs|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd���d�|�t�dd	d
�d�|�t�dd
�dg�|�t�dd�dg�|�t�dd�ddg�|�t�dd�ddg�|�t�dd�ddg�|�t�dd�ddg�|�t�dd�gd��|�t�dd�gd��|�t�dd
�dg�|�t�dd
�dg�|�t�dd
�dg�|�t�dd
�dg�|�d �t�d!d"��d#�|�d �t�d$d"��d%�|�d �t�d&d'��d(�|�d �t�d)d*��d+�|�d �t�d,d*��d+�|�d �t�d-d.��d*�d �d/d0�td1�D��}|�tt�d2|��d3�|�tt�d4|��d5�|�tt�d6|��d7�|�tt�d8|��d9�|�tt�d:|��d9�|�tt�d;|��d7�|�tt�d<|��d=�|�tt�d>|��d?�|�tt�d@|��dA�|�tt�dB|��dC�|�tt�dD|��dC�|�tt�dE|��dF�|�tt�dG|��dH�|�tt�dI|��dH�|�t	t
t�dJ���|j�|�t�dKdL�ddMg�|�t�dNdL�ddMg�|�t�dOdL�ddMg�|�t�dPdL�ddMg�dS)QNz[a]rUrz(?i)[a]r`z[a-b]z	(?i)[a-b]z(?V0)([][])r�za[b]crz[\p{Alpha}]�a0z(?i)[\p{Alpha}]�A0z[a\p{Alpha}]�ab0r�z[a\P{Alpha}]rWz(?i)[a\p{Alpha}]z(?i)[a\P{Alpha}]z[a-b\p{Alpha}]�abC0)rUr��Cz(?i)[a-b\p{Alpha}]�AbC0)r`r�rez[\P{Alpha}]z[^\p{Alpha}]z[^\P{Alpha}]r�z[^\d-h]za^b12c-hza^bcz[^\dh]za^bc-z	[^h\s\db]z	a^b 12c-hza^c-z[^b\w]rr�z[^b\S]z[^8\d]za 1b2cs��|]}t|�VqdSr�rd�r�r�rrr�	<genexpr>���z&RegexTests.test_set.<locals>.<genexpr>r?z	\p{ASCII}rUz
\p{Letter}�uz	\p{Digit}rXz(?V1)[\p{ASCII}&&\p{Letter}]�4z'(?V1)[\p{ASCII}&&\p{Alnum}&&\p{Letter}]z&(?V1)[\p{ASCII}&&\p{Alnum}&&\p{Digit}]z(?V1)[\p{ASCII}&&\p{Cc}]�!z(?V1)[\p{ASCII}&&\p{Graph}]�^z(?V1)[\p{ASCII}--\p{Cc}]�_z[\p{Letter}\p{Digit}]rTz(?V1)[\p{Letter}||\p{Digit}]z\p{HexDigit}�z(?V1)[\p{HexDigit}~~\p{Digit}]r[z(?V1)[\p{Digit}~~\p{HexDigit}]z(?V0)([][-])z(?V1)[[a-z]--[aei]]r�r�z(?iV1)[[a-z]--[aei]]z(?V1)[\w--a]z
(?iV1)[\w--a])
r&r)r=r<rcr+rrB�lenrvrr*rw)r
�	all_charsrrr�test_set�s�������������������������������zRegexTests.test_setc

Cs^'gdddtj|jf�dddtj|jf�dddtj|jf�dddtj|jf�dddtj|jf�ddd	td
�f�dddtj|jf�dddtj|jf�d
ddtj|jf�dddtj|jf�dd
d	td
�f�ddd	td
�f�dddtd�f�ddd	td
�f�dddtd�f�dddtj|jf�dd
d	td
�f�ddd	td
�f�dd
dtj|jf�d�dtd�ddttd�d�f�dd
dtd
�f�ddd td!�f�d"d#dtd#�f�d$d#dtd#�f�d%d#dtd#�f�d&d#dtd�f�d'd(dtd(�f�d)d(dtd(�f�d*d+dttd,��f�d-d+dtd�f�d.d/dtd�f�d0d1dtd�f�d2d+dtd�f�d3d4dtd4�f�d5d4dtd4�f�d6d7dttd8�td9�td:�td;�td<�td=��f�d>d?dtd?�f�d@dAdtdB�f�dCdDdtdD�f�dCdEdtd�f�dFdGdtd�f�dHdGdtd�f�dCdIdtdI�f�dJdEdtd�f�dKdEdtdE�f�dLdGdtd�f�dMdGdtdG�f�dNdGdtdG�f�dOddtj|j	f�dP�dQdQdtdQ�f�dQdRdtd�f�dQdSdtd�f�dQdTdtd�f�dQdUdtdQ�f�dQdVdtdQ�f�dWdQdtdQ�f�dXdQdtdQ�f�dXdYdtdY�f�dXdZdtdZ�f�d[dYdtdY�f�d[dQdtd�f�d[d\dtd�f�d[dZdtdZ�f�d]dYdtdY�f�d]dQdtdQ�f�d]dZdtd�f�d^dQdtdQ�f�d_dQdtdQ�f�d_d`dtd�f�dad`dtdQ�f�d_dbdtd�f�dcdbdtdQ�f�dddQdtd�f�dedQdtd�f�dfdQdtdQ�f�dfdSdtdS�f�dgdhdtdh�f�dgdidtd�f�djdQdtd�f�djdkdtdk�f�dldkdtd�f�dldmdtdm�f�dndodtdp�f�dqdrdtdr�f�dsdrdtdr�f�dtdrdtdr�f�dudvdtj|j
f�dwdvdtj|j
f�dxdvdtj|jf�dydvdtj|j	f�dzdvdtj|jf�d{d{dtd{�f�d|d}dtd}�f�d|d}dtd}�f�d~ddtd�f�d~dkdtd�f�d�d�dtd��f�d�d�dtd�f�d�d�dtd�f�d�d�dtd��f�d�drdtd
�f�d�d�dtd
�f�d�d�dtd
�f�d�d�dtd�f�d�d�dtd�f�d�d�dtd�f�d�d�dtd�f�d�d�dtd��f�d�d�dtd��f�d�d�dtd�f�d�d�dtd�f�d�drdtd�f�d�d�dtd�f�d�d�dtd�f�d�d�dtd�f�d�d�dtd�f�d�d�dtd��f�d�d�dtd��f�d�d�dtd��f�d�dQdtd��f�d�d�dtd��f�d�d�d�td��f�d�d�dtd�f�d�d�dtd��f�d�d�dtd��f�d�d�dtd��f�d�d�dtd��f�d�dQd�td��f�d�dQd�td��f�d�d�dtdQ�f�d�d�d�td��f�d�d�d�td��f�d�d�d�td��f�d�dvdtj|j	f�d�d�dtd��f�dQddtd�f�d�ddtd�f�d�d�dtd��f�d�d�d�td��f�d�d�dtd��f�d�d�dtd��f�d�d�dtd
�f�d�d�d�tdăf�d�d�dtdƃf�d�d�dtd�f�d�d�d�td��f�d�d�d�td˃f�d�dQd�td̓f�d�dQd�tdσf�d�d�d�tdуf�d�d�d�tdуf�d�d�d�tdԃf�d�d�dtdփf�d�d�dtd�f�d�dQd�tdكf�d�d�d�td܃f�d�d�dtdރf�d�d�d�td�f�d�d�d�td�f�d�d�d�td�f�d�d�dtd�f�d�d�dtd�f�d�d�d�td�f�d�d
dtd
�f�d�d�dtd�f�d�d�dtd�f�d�d�d�td�f�d�d�d�td�f�d�d�dtd�f�d�dpdtdp�f�d�d�d	tdQ�f�d�d�d	tdQ�f�d�d�d	td��f�d�d�d�td��f��d�ddtd�f�d�d�d�t�d�f��dd�d�t�d�f��ddd�t�d�f��ddd�t�d�f��ddd�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��dd�d�t�d�f��dd�d�t�d�f��d�dd�t�d�f��d�dd�t�d�f��d�dd�t�d�f��d�d�dt�d �f��d!�d"d�t�d#�f��d!�d$d�t�d%�f��d&�d'd�t�d(�f��d&dQdtd�f��d)�d'd�t�d*�f��d+dod�t�d,�f��d-�ddtj|jf��d.�d�d/t�d0�f��d1�d�d/t�d2�f��d3�ddtj|jf��d4�d5dt�d5�f��d6�d5dtj|jf��d7�d8dt�d8�f��d7�d8dt�d9�f��d:�d;dt�d;�f��d<d
dtd
�f��d=�d>dt�d>�f��d?d
dtd
�f��d@�dAdt�dA�f��dB�d>dt�d>�f�dQdQdtdQ�f�dQdRdtd�f�dQdSdtd�f�dQdTdtd�f�dQdUdtdQ�f�dQdVdtdQ�f�dWdQdtdQ�f�dXdQdtdQ�f�dXdYdtdY�f�dXdZdtdZ�f��dCdZdtdZ�f�d[dYdtdY�f�d[dQdtd�f�d[d\dtd�f��dDd\dtd�f�d[dZdtdZ�f��dDdZdtdZ�f��dEdZdtdZ�f��dFdZdtdZ�f��dGdZdtd�f�d]dYdtdY�f�d]dQdtdQ�f��dHdQdtdQ�f�d]dZdtd�f�d^dQdtdQ�f��dIdQdtdQ�f�d_dQdtdQ�f�d_d`dtd�f�dad`dtdQ�f�d_dbdtd�f�dcdbdtdQ�f�dddQdtd�f�dedQdtd�f�dfdQdtdQ�f�dfdSdtdS�f�dgdhdtdh�f�dgdidtd�f�djdQdtd�f�djdkdtdk�f�dldkdtd�f�dldmdtdm�f�dndodtdp�f�dqdrdtdr�f�dtdrdtdr�f��dJdvdtj|jf�dudvdtj|j
f�dwdvdtj|j
f�d{d{dtd{�f�d|d}dtd}�f�d~ddtd�f�d~dkdtd�f�d�d�dtd��f�d�d�dtd�f�d�d�dtd�f�d�d�dtd��f�d�dQdtd��f�d�d�dtd��f�d�d�d�td��f��dKdvdtj|j
f��dLdvdtj|j
f�d�d�dtd�f�dxdvdtj|jf�d�d�dtd��f�d�d�dtd��f�d�d�dtd��f�d�d�dtd��f�dydvdtj|j	f�dzdvdtj|jf�d�dQd�td��f�d�dQd�td��f�d�d�dtdQ�f��dMd�dtdQ�f��dNdvdtj|jf��dOd�dtdQ�f�d�d�d�td��f��dPd�d�td��f�d�d�d�td��f��dQd�d�td��f�d�d�d�td��f��dRd�d�td��f�d�dvdtj|j	f�d�d�dtd��f�dQddtd�f�d�ddtd�f��dS�dTd�t�dU�f��dVd�d�t�dW�f�d�d�dtd��f�d�d�d�td��f�d�d�dtd��f�d�d�dtd��f�d�d�dtd
�f�d�d�d�tdăf�d�d�dtdƃf�d�d�dtd�f�d�d�d�td��f�d�d�d�td˃f�d�dQd�td̓f�d�dQd�tdσf�d�d�d�tdуf�d�d�d�tdуf�d�d�d�tdԃf�d�d�dtdփf�d�d�dtd�f�d�dQd�tdكf�d�d�d�td܃f�d�d�dtdރf�d�d�d�td�f�d�d�d�td�f�d�d�d�td�f�d�d�dtd�f�d�d�dtd�f�d�d�d�td�f��dXd
�dYtd
�f��dZddtd�f��d[ddtj|jf��d\ddtj|jf�d�d
dtd
�f�d�d�dtd�f�d�d�dtd�f�d�d�d�td�f�d�d�d�td�f�d�d�dtd�f�d�dpdtdp�f�d�d�d	tdQ�f�d�d�d	tdQ�f��d]�d^dt�d^�f��d]�d_dtd�f��d]�d`dtd�f��d]�dadtd�f��d]�dbdt�d^�f��d]�dcdt�d^�f��dd�d^dt�d^�f��de�d^dt�d^�f��de�dfdt�df�f��dg�dhdt�dh�f��di�dhdt�dh�f��dj�dfdt�df�f��dk�d^dtd�f��dk�dldtd�f��dm�dldtd�f��dk�dhdt�dh�f��dn�dhdt�dh�f��do�dhdt�dh�f��dp�dhdt�dh�f��dq�dhdtd�f��dr�dfdt�df�f��dr�d^dt�d^�f��ds�d^dt�d^�f��dr�dhdtd�f��dt�d^dt�d^�f��du�d^dt�d^�f��dv�d^dt�d^�f��dv�dwdtd�f��dx�dwdt�d^�f��dv�dydtd�f��dz�dydt�d^�f��d{�d^dtd�f��d|�d^dtd�f��d}�d^dt�d^�f��d}�d`dt�d`�f��d~�ddt�d�f��d��d�dtd�f��d��d^dtd�f��d��d�dt�d��f��d��d�dtd�f��d��d�dt�d��f��d��d�dt�d��f��d��d�dt�d��f��d��d�dt�d��f��d�dvdtj|jf��d�dvdtj|j
f��d�dvdtj|j
f��d��d�dt�d��f��d��d�dt�d��f��d��d�dt�d��f��d��d�dtd�f��d��d�dt�d��f��d��d�dtd�f��d��d�dtd�f��d��d�dt�d��f��d��d^dtd��f��d��d�dtd��f��d��d�d�t�d��f��d�dvdtj|j
f��d�dvdtj|j
f��d��d�dtd�f��d�dvdtj|jf��d��d�dt�d��f��d�d�dtd��f��d��d�dt�d��f��d��d�dt�d��f��d�dvdtj|j	f��d�dvdtj|jf��d��d^d�t�d��f��d��d^d�t�d��f��d��d�dt�d^�f��d��d�dt�d^�f��d�dvdtj|jf��d��d�dt�d^�f��d~�d�dt�d^�f��d��d�dt�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�dvdtj|j	f��dÐd�dt�dăf��d]ddtd�f��d�ddtd�f��dƐd�d�t�dȃf��dɐd�d�t�dʃf��dːd�dt�d̃f��d͐d�d�t�dσf��dАd�dt�dуf��dҐd�dtd��f��dҐd�dtd��f��dՐd�d�t�d׃f��dؐd�dt�dكf��dڐd�dtd�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�dt�d�f��d�d�dtd�f��d�d^d�t�d�f��d�d�d�t�d�f��d�d�dt�d�f��d�d�d�t�d�f��d�d�d�t�d��f��d�d�d�t�d��f��d�d�dtd�f��d�d�dtd�f��d�d�d�t�d��f��d�d��dYtd��f��d��d�dt�d��f��d�d�dtd��f��dd�d	td��f��d�dd	t�d�f��d�ddtd�f��d�ddt�d�f��d�d�d�t�d	�f��d
�dd�t�d�f��d
d�dtd�f��d�d�dt�d��f��d�d�d	t�d^�f��d�d�d	t�d^�f��d�ddt�d�f��d�ddt�d�f��d�ddt�d�f��ddmd	td��f��ddmd	td��f��ddmd	td��f��ddm�dt�d�f��d�dd	t�d�f��d�d d	t�d!�f��d"�d#d	t�d$�f��d%�d&dtj|jf��d'�d(dt�d(�f��d)�d*dtd�f��d)�d&dt�d&�f��d+�d*dt�d*�f��d,�d(dt�d(�f�da�d-dtd�f��d.�d-dtdQ�f��d/�d0dtdQ�f�dCdEdtd�f�dKdEdtdE�f��d1�d2dt�d3�f��d4�d2dt�d3�f��d5�d6dtdQ�f��d7�d6dtdQ�f��d8�d9dt�d9�f��d:�d;�d<t�d=�f��d>�d;�d<t�d=�f��d?�d@�dAt�dB�f��dCddtj|jf��dD�dEdtdk�f��dFddtj|jf��dG�dHdt�dH�f��dId�dtd��f��dJ�dKdtd�f��dL�dKdt�dK�f��dM�dKdt�dK�f��dN�dOdt�dP�f��dQ�dRdt�dR�f��dS�dTdt�dT�f��dU�dVdt�dV�f��dU�dWdt�dW�f��dX�dYd	td�f��dZ�d[dt�d[�f��d\�d[dt�d[�f��d]�d[dt�d[�f��d^�d[dt�d[�f��d_�d`dt�d`�f��da�dbdtd�f��dc�dddtd�f��de�dKdtd�f��dfd��dAt�dg�f��dhdQ�dt�di�f��djdQ�dt�di�f��dkdQ�dt�di�f��dld
dtd
�f��dl�dmdt�dm�f��dn�dmdt�dm�f�}|D]�}d}zt|��dok�r�|\}}}}n|\}}}}}Wn*t�y1�dp��dq�dr�|d�ds�D��dtg�}|��du�|��Y�q�wg}	|�rZ|��dv�D]}
z
|	�t|
��W�q=t�yY|	�|
�Y�q=w|du�r�|j||�dw��|�||tj||�Wd�n	1�s}wY�q�t�||�}|�r�|	�r�t|j|	��}n
t|dd��}nt|�}|�||��q�dS(xNz(?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)�1rUz(?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{rWz'\x01'rr�9rWz\141z((a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)\119�abcdefghijklk9z0,11)rx�kryrzz[\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�rVz\x00ffffffffffffffz\x00f�z\x00fe�þz\x00ffz\t\n\v\r\f\a\gz	

gz	

\gz\t\n\v\r\f\arVrWrXrYrZr[r\z[\t][\n][\v][\r][\f][\b]z	

z^\w+=(\\[\000-\277]|[^\n\\])*z(SRC=eval.c g.c blah blah blah \\
	apes.cz SRC=eval.c g.c blah blah blah \\r�acbrrzacc
ccbza.{4,5}bza
bza.b(?s)z(?s)a.bza.*(?s)bz(?s)a.*bz(?s)a.{4,5}brO)r�r�rWz''r��xbc�axc�abx�xabcy�ababczab*czab*bc�abbc�abbbbczab+bc�abqzab?bczab?cr�abccrX�aabcrY�^r�za.cza.*c�axyzc�axyzdza[bc]dr�za[b-d]e�aceza[b-d]�aacr�za[-b]�a-za[\-b]za[b-]za[]br�za[za\zabc)z(abcza]za[]]bza]bza[^bc]d�aedza[^-b]c�adcza-cza[^]b]cza]cz\ba\b�-az-a-z\by\br��yzr�zx\bzx\Br!z\BzrYzz\Bz\Bxz\Ba\Bz\By\Bz\By\br"z\by\Bzab|cdr�r�z()ef�defz0,1)rr�z$br�za\(b�a(b)r�za\(*bza((bza\\bza\brfz0,1,2)rUrUrUz(a)b(c))r�rUr�za+b+c�aabbabcz(a+|b)*)r�r�z(a+|b)+z(a+|b)?r�z)(z[^ab]*ror/z	a|b|c|d|er�z(a|b|c|d|e)fr)rr�zabcd*efg�abcdefgzab*�	xabyabbbz�xayabbbzz(ab|cd)er)ror�z[abhgefdc]ij�hijz	^(ab|cd)ez(abc|)efr�z(a|b)c*d)�bcdr�z
(ab|ab*)bc)r�rUz
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)z1,2,3,4)r�rUr�r�z[a-zA-Z_][a-zA-Z0-9_]*�alphaz^a(bc+|b[eh])g|.h$�abh)�bhNz(bc+d$|ef*g.|h?i(j|k))�effgz)r�r�N�ij)r�r��j�effg�bcdd�reffgzz(((((((((a)))))))))zmultiple words of textzuh-uhzmultiple wordszmultiple words, yeahz	(.*)c(.*))rr�rpz\((.*), (.*)\)z(a, b)z2,1)r�rUz[k]za[-]?cz(abc)\1r-z
([a-c]*)\1z^(.+)?B�ABr`z(a+).\1$r�)r�r�z	^(a+).\1$�aaaa)r-r�z
([a-c]+)\1z(a)\1)r�rUz(a+)\1z(a+)+\1z(a).+\1r�)r�rUz(a)ba*\1z
(aa|a)a\1$r7)r7rUz
(a|aa)a\1$z(a+)a\1$z
([abc]*)\1z
(a)(b)c|ab)r�NNz(a)+x�aaax)r�rUz([ac])+x�aacx)r�r�z([^/]*/)*sub1/zd:msgs/tdir/sub1/trial/away.cpp)zd:msgs/tdir/sub1/ztdir/z([^.]*)\.([^:]*):[T ]+(.*)�track1.title:TBlah blah blahz0,1,2,3)r��track1�titlezBlah blah blahz	([^N]*N)+�abNNxyzN)r��xyzN�abNNxyz)�abNN�Nz	([abc]*)x�abcx)r�r�z	([xyz]*)x)r!r�z	(a)+b|aac)r�Nz
(?P<i d>aaa)az(?P<id>aaa)az0,id)r�r7z(?P<id>aa)(?P=id))r�r�z(?P<id>aa)(?P=xd)r��gz\g<1>z(.)\g<1>�gg)r�r�z\Nr��\N{LATIN SMALL LETTER A}z\pr�r�z\P�Pz\P{Lu}zab{0,}bczab{1,}bcz	ab{1,3}bcz	ab{3,4}bcz	ab{4,5}bcz	ab{0,1}bczab{0,1}cza[b-a]z*az(*)bza{1,}b{1,}cza**za.+?cz
(a+|b){0,}z
(a+|b){1,}z(a+|b){0,1}z	([abc])*d�abbbcd)r�r�z([abc])*bcd)r�rUz((((((((((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]zA-z	(?i)a[b-]z
(?i)a[b-a]z(?i)a[]bz(?i)a[z(?i)a]zA]z	(?i)a[]]bzA]Bz(?i)a[^bc]d�AEDz(?i)a[^-b]c�ADCzA-Cz(?i)a[^]b]czA]Cz	(?i)ab|cd�ABCDz(?i)()ef�DEF)�EFr�z(?i)*az(?i)(*)bz(?i)$brz(?i)a\z(?i)a\(b�A(B)r�z	(?i)a\(*bzA((Bz(?i)a\\bzA\Bz(?i)abc)z(?i)(abcz	(?i)((a)))r`r`r`z(?i)(a)b(c))r!r`rez	(?i)a+b+c�AABBABCz(?i)a{1,}b{1,}cz(?i)a**z	(?i)a.+?c�ABCABCz
(?i)a.{0,5}?cz(?i)(a+|b)*)r�rz(?i)(a+|b){0,}z(?i)(a+|b)+z(?i)(a+|b){1,}z(?i)(a+|b)?)r`r`z(?i)(a+|b){0,1}z(?i)(a+|b){0,1}?�r�Nz(?i))(z
(?i)[^ab]*�CDEz(?i)a*z
(?i)([abc])*d�ABBBCD)r�rez(?i)([abc])*bcd)r�r`z
(?i)a|b|c|d|e�Ez(?i)(a|b|c|d|e)fr�)r�r�z(?i)abcd*efg�ABCDEFGz(?i)ab*�	XABYABBBZ�XAYABBBZz(?i)(ab|cd)e�ABCDE)r��CDz(?i)[abhgefdc]ij�HIJz
(?i)^(ab|cd)ez(?i)(abc|)efr#z(?i)(a|b)c*d)�BCDrz(?i)(ab|ab*)bc)r!r`z(?i)a([bc]*)c*)r!�BCz(?i)a([bc]*)(c*d))r�r��Dz(?i)a([bc]+)(c*d)z(?i)a([bc]*)(c+d))r�rr�z(?i)a[bcd]*dcdcde�ADCDCDEz(?i)a[bcd]+dcdcdez
(?i)(ab|a)b*c)r!r�z(?i)((a)(b)c)(d))r!r`rr�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))))))))))rez(?i)multiple words of textzUH-UHz(?i)multiple wordszMULTIPLE WORDS, YEAHzMULTIPLE WORDSz
(?i)(.*)c(.*))r�r��DEz(?i)\((.*), (.*)\)z(A, B))rr`z(?i)[k]z
(?i)a[-]?cz(?i)(abc)\1z(?i)([a-c]*)\1za(?!b).�abadr�za(?=d).z	a(?=c|d).z
a(?:b|c|d)(.)za(?:b|c|d)*(.)za(?:b|c|d)+?(.)za(?:b|(c|e){1,2}?|d)+?(.)z1,2)r�r�z(?<!-):(.*?)(?<!-):z
a:bc-:de:fzbc-:dez(?<!\\):(.*?)(?<!\\):z
a:bc\:de:fzbc\:dez(?<!\?)'(.*?)(?<!\?)'z
a'bc?'de'fzbc?'dezw(?# comment�wz w(?# comment 1)xy(?# comment 2)z�wxyzzw(?i)�Wz(?i)wz"(?x)w# comment 1
x y
# comment 2
zzjkl
abc
xyzrZr[zjkl
xyzabc
123rz
--ab_cd0123--�	ab_cd0123z[\w]+z\D+�1234abc5678z[\D]+z[\da-fA-F]+�123abcz([\s]*)([\S]*)([\s]*)z
 testing!1972z3,2,1)r�ztesting!1972r�z(\s*)(\S*)(\s*)z(([a-z]+):)?([a-z]+)$�smilz1,2,3)NNr�z((.)\1+)z.*dzabc
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 *:zxx:za[ ]*?\ (\d+).*za   10za    10z(?ms).*?x\s*\Z(.*)zxx
x
z(?i)M+�MMMz(?i)m+z(?i)[M]+z(?i)[m]+z"(?:\\"|[^"])*?"z"\""z^.*?$zone
two
three
za[^>]*?bza>bz^a*?$z
^((a)c)?(ab)$)NNr�z^([ab]*?)(?=(b)?)c)r�Nz^([ab]*?)(?!(b))cz^([ab]*?)(?<!(a))cz\b.\b�Är�r�rLcSsg|]}t|��qSr)r�)r��frrrr��	r�z+RegexTests.test_various.<locals>.<listcomp>r6�...z%Incorrect number of test fields: ({})r)ror	)r)r�r�r��MISSING_RPARENr��
UNKNOWN_GROUPr�rd�TRAILING_CHARSrm�
BAD_ESCAPE�BAD_CHAR_RANGE�NOTHING_TO_REPEAT�MULTIPLE_REPEAT�
OPEN_GROUPrrrsrr,r�r��appendr@�subTestrrr;r�r&)
r
r�rG�excvalror	rr�fields�
group_listr�rMrrrr�test_various�sZ����
��
�
��

��
��
�������
����"�#�$�%�&��*�+�,�-�0��2��4�7�8�9�;�<�=�>�����@��C��H�I�J�K�L�N�O�P�Q�R�T�U�V�W�X�Y�Z�[�\�]�_�`�a�b�c�d�e�f�g�h�j�k�l�m�n�o�p�q�r�s�u�v�w�x�y�z�{�|�}�~�����������������	��
����
������������������������������������ ��"��#��$��%��&��'��(��)��*��+��-��.��/��0��1��2��3��4��5��6��8��9��:��;��<��=��>��?��@��A��C��D��E��F��G��H��I��J��K��L��N��O��Q��S��T��U��W��X��Y���[��]��^��_��`��a��b��c��d��e��f��h��i��j��k��l��m��n��o��p��q��s��t��
u���w���z��{��|��}��~����������������	���
���������
������������������������������������������������ ���!���"���#���$���%���'���(���)���*���+���,���-���.���/���0���2���3���4���5���6���7���8���9���:���;���=���>���?���@���A���B���C���D���E���F���H���I���J���K���L���M���N���O���P���Q���S���T���U���V���W���X���Y���Z���[���\���^���_���`���a���b���c���d���e���f���g���i���j���k���l���m���n���o���p���q���r���t���u���v���w���x���y���z���{���|���}��������������������������������������	�������������������������������������������������� ����!�����#����$����%����&����'����(����)����+����,����-����.����/����0����1����2����3����4����6����7����8����9����:����;����<����=����>����?����A����B����C����D����E����F����G����H����I����J����L����M����N����O����P����Q����R����S����T����U����W����X����Y����Z����[����\����]����^����_����`����b����c����d����e����f����g����h����i����j����k����m����n����o����p����q����r����s����t����u����v����x����y����z����{����|����}����~�������������������������������������������	�����
���������������
������������������������������������������������������������������������������������� �����"�����#�����$�����'�����)�����*�����+�����-�����.�����1�����2������
4������6�����
8������:�����;�����<�����?�����@�����A�����B�����C�����D�����F�����G�����H�����I�����L�����N�����P�����T�����U�����\�����]�����^�����a������g������j������n������s�����t�����w�����x�����y�����z�����{�����~�����������������������
������������������������������������������������������������������������!������#������$������%������&������+������-������/������1������3������5������6������7������9������
:�������
<�������@�,��
����zRegexTests.test_variouscCs||�t�ddd�d�|�t�ddd�d�|�t�dt�d�d�d�|�t�ddd�d�|�t�dd	d
�d�d�dS)Nztest\?zresult\?\.
ztest?r$�\1\1r!rRz\\1\\1cSrJ)NrrrLrrrrN�	rOz-RegexTests.test_replacement.<locals>.<lambda>)r&r)rcrAr>rrr�test_replacement�	s�zRegexTests.test_replacementcCsNtjtjtj}|d}d|d|d}|�ttt�|���|j	�dS)Nr�r�r�rO)
r	�ascii_lowercase�digits�ascii_uppercaser&rvrr)r*rw)r
�all�side�regexprrr�test_common_prefix�	s zRegexTests.test_common_prefixcCs|�t�dd��d�gd��|�t�dd��dd�dgddgf�|�t�d	d
��dd�dggd
�f�|�t�dd��dd�gd�gd�f�|�t�dd��ddd�dggd�dgf�|�t�dd��d�dg�|�t�dd��d�ddg�|�t�dd��d�dg�dS) Nz(\w)+r�r5r�z(\w{3})+r�rr�z^(\d{1,3})(?:\.(\d{1,3})){3}$z192.168.0.1r��192)�168rWruz^([0-9A-F]{2}){4} ([a-z]\d){5}$z3FB52A0C a2c4g3k9d3)�3F�B5�2A�0C)�a2�c4�g3�k9�d3z([a-z]W)([a-z]X)+([a-z]Y)�aWbXcXdXeXfYr6�aW)�bX�cX�dX�eX�fYz.*?(?=(.)+)br�r�z.*?(?>(.){0,2})dr�r��(.)+rU)r&r)r;�capturesr=r>rrr�
test_captures�	s<�
��
���
����� zRegexTests.test_capturescCs�t�dd�}|�|�ddd�d�t�dd�}|�|�ddd�d�t�d	d
�}|�|�ddd�d�t�dd
�}|�|�dd�d�t�dd�}|�|��d�t�dd�}|�|��d�dS)Nz(X.*?Y\s*){3}(X\s*)+AB:zXY
X Y
X  Y
XY
XX AB:rr5r�))r6��r[��rQ�z(X.*?Y\s*){3,}(X\s*)+AB:))rr#r$r&z\d{4}(\s*\w)?\W*((?!\d)\w){2}�9999XX)r2rb)�r�zA\s*?.*?(\n+.*?\s*?){0,2}\(Xz
A
1
S
1 (X)�rrX)r)r.z	Derde\s*:zaaaaaa:
Derde:)r.�z
aaaaa:
Derde:)r\rZ)r)r;r&r<r�rrr�test_guards�	s ��zRegexTests.test_guardsc	Cs�d}t�}t�}|�d�D],}|�d�\}}|�||f�|�||f�|�||f�|�||f�|�||f�q
|D]:}|D]5}t�d|d|�}|rb||f|vra|�d�t|�t|���q@||f|vru|�d�t|�t|���q@q<dS)Nu
I=i;I=ı;i=İ�;�=z(?i)\A�\Zz{} matching {}z{} not matching {})	r�r��update�addr)r=r,r�r�)r
�pairsrs�matching�pairr6r7rMrrr�test_turkic�	s4������zRegexTests.test_turkiccCsgd�}|�tjdd|d���d�|�tjdd|d���d�|�tjdd|d�d�gd�}|�tjd	d
|d���d
�|�tjdd|d���d�|�tjd	d
|d�d�|�tttjdgd�d���|j�|�tjddt	gd��d�g�|�tjddt	gd��d�dg�dg}|�tjdd|d��
�d�ddg}|�tjdd|d��
�d�dg}|�tjdd|d��
�d�dg}|�tjdd|d��
�d �|�tjdd!|d��
�d �|�t�d"d#��
�d$�|�t�d"d%��
�d$�|�tjd&d'gd��
�d(�dS))N)�one�two�threez
333\L<bar>444�	333one444)r�z(?i)333\L<bar>444�	333TWO444�
333four444)sonestwosthrees
333\L<bar>444s	333one444s(?i)333\L<bar>444s	333TWO444s
333four444z3\L<bar>4\L<bar>+5z^\L<options>zsolid QWERT)�good�	brilliantz	+s\ol[i}dr0z+solid QWERT)r<r=�+solidr>�STRASSE�(?fi)\L<words>ustraße��wordsr2�stress�rr\�kitz
(?i)\L<words>�SKITSr0uSKİTSz(?fi)\b(\w+) +\1\bu straße STRASSE )r5r%u STRASSE straße z
^\L<options>$r�r1)r&r)r=r�rvrr*rwr+r�r<r;)r
r1rrr�test_named_lists�	s���������������
��
��
��
������
��
��
���zRegexTests.test_named_listscCsL|�ttt�d���|j�|�ttt�d���|j�|�ttt�d���|j�|�ttt�d���|j�|�ttt�d���|j�|�ttt�d���|j�d}|�t�d|�d�|�t�d	|��d
d�d�|�t�d
|�d�|�t�d|�d
d�|�t�d|�d
d�d}|�t�d|��d
d�d�|�t�d|��d
d�d�|�t�d|��d
d�d�|�t�d|��d
d�d�|�t�d|��d
d�d�|�t�d|��d
d�d�|�ttt�d���|j�|�t�dd��d
d�d�|�t�dd��d
d�d �|�t�d!d��d
d�d"�|�t�d#d$��d
d�d%�|�t�d#d&�d�|�t�d'd(��d
d�d)�|�t�d*d+��d
d�d,�|�t�d*d-��d
d�d�|�t�d.d-��d
d�d/�|�t�d0d1��d
d�d�|�t�d0d2��d
d�d3�|�t�d0d4��d
d�d3�|�t�d0d5��d
d�d3�|�t�d0d6��d
d�d�|�t�d0d7��d
d�d�|�t�d0d8��d
d�d�|�t�d0d9��d
d�d:�|�t�d0d;��d
d�d:�|�t�d0d<��d
d�d:�|�t�d0d=�d�|�t�d0d>�d�|�t�d0d?�d�|�t�d0d@�d�|�t�d0dA�d�|�t�dBdC��d
d�dD�|�t�dEdC��d
d�dF�|�t�dGdH��d
d�dI�|�t�dGdJ�d�|�t�dGdK��d
d�dL�dM}|�t�dN|��d
d�dO�|�t�dP|��d
d�dQ�|�t�dR|��d
d�dS�|�tjdTdUdV�	�dW�dXdYg�|�tjdTdZdV�	�dW�d[dXg�|�tjd\dZdV�	�dW�dYdXg�|�tjd]dUdV�	�dW�d^dXg�|�tjd_dUdV�	�dW�dYdXg�|�tjd]dZdV�	�dW�dXdYg�|�tjd`dadb�	�dW�dcddg�|�tjd`dedb�	�dW�dfdcg�|�tjdgdedb�	�dW�dddcg�|�tjdhdadb�	�dW�didcg�|�tjdjdadb�	�dW�dddcg�|�tjdhdedb�	�dW�dcddg�|�t�dkdl��
�dm�|�t�dndl��
�dm�|�t�dodp��
�dq�|�t�drds�dsdtg�|�t�dudv�dvdtg�|�t�dwdx���dy�|�t�dwdz���d{�|�t�dwd|���d}�|�t�dwd~�d�|�t�dwd���d��|�t�d�d��j
d��|�t�d�d��j
d��|�t�d�d��j
d��|�t�d�d��j
d��|�t�d�d��j
d��|�t�d�d��jgd��d�ggf�|�tt�d�d���d��dS)�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}rr5)�rW�rHz(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})r1r1z(?b)(fuu){i<=3,d<=3,e<=5})�rWrXrKz(fuu){i<=2,d<=2,e<=5})�r\rXrLz(?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)r2r2z(?e)(foobar){e})r9r9z(?b)(foobar){e})�rYrQrNz(foobar){e<=2}�
xirefoabrzlfd)�r�rWrP�xirefoabzlfdz(foobar){i<=2,s<=2,e<=2}�oobargoobaploowap)�r)rYrSz\b(foobar){e}\b�zfoobarz)�rr.rUzboing zfoobarz goobar woopz(?b)\b(foobar){e}\b)�r%r#rVz^(foobar){e<=1}$�foobar�xfoobar)rDrD�foobarx�fooxbar�foxbar�xoobar�foobax�oobar)�rr)r_�fobar�fooba�xfoobarx�foobarxx�xxfoobar�xfoxbar�foxbarxz (foobar){i<=1,d<=2,s<=3,2d+1s<4}�(3oifaowefbaoraofuiebofasebfaobfaorfeoaro)�r�rZrhz$(?b)(foobar){i<=1,d<=2,s<=3,2d+1s<4})��"�'rizfoo(bar){e<=1}zap�	foobarzap)�rrW�r6r��fobarzap�foobrzap)rU�r6r)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)rsrsz(?es)^.*(dot.org){e}.*$)rr)�]�dz^.*(dot.org){e}.*$))r�w)��ez\b\L<words>{e<=1}\bz book cot dog desk zcat dogrA�cot�dogz book dog cot desk z dogz(?e)\b\L<words>{e<=1}\bz(?r)\b\L<words>{e<=1}\bzdog z(?er)\b\L<words>{e<=1}\bs\b\L<words>{e<=1}\bs book cot dog desk scat dogscotsdogs book dog cot desk s dogs(?e)\b\L<words>{e<=1}\bs(?r)\b\L<words>{e<=1}\bsdog s(?er)\b\L<words>{e<=1}\bz(\w+) (\1{e<=1})zfoo fou)r��fouz(?r)(\2{e<=1}) (\w+)s(\w+) (\1{e<=1})sfoo fou)sfoosfouz(?:(?:QR)+){e}rr�z	(?:Q+){e}r�z(?:service detection){0<e<5}zservic detection)rrQzservice detect)rr+zservice detecti)rr%zservice detectionzin service detection)r��(?:cats|cat){e<=1}�cat�rrr5�(?e)(?:cats|cat){e<=1}�rrrz(?:cat|cats){e<=1}�cats�rr5rz(?e)(?:cat|cats){e<=1}z(?:cat){e<=1} (?:cat){e<=1}zcat cot�r5rrz/(?e)(GTTTTCATTCCTCATA){i<=4,d<=4,s<=4,i+d+s<=8}�ATTATTTATTTTTCATA)rr�rXrYr6z(?:fo){e<=1}|(?:fo){e<=2}�FOT)r&rvrr)r*rwr;r<r+r�rr=�	fullmatch�fuzzy_counts�
fuzzy_changesr�rUrrr�
test_fuzzy4
s|�������
�
�����
�
���
�
�����
�
�
�
�
�
�
�
�
�
���
�
�
�
��������������
�
�
�
����������
��
��
��
��
��
��
��
��
��
��
��
���
��
���
��
��
��
��
��
��
��
��
��
��
���zRegexTests.test_fuzzycCs:|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�dd�d�|�t�dd�dd�d	�|�t�dd
�dd�d�|�t�dd�d�|�t�d
d�dd�d�|�t�d
d�dd�d�|�t�d
d�dd�d�|�t�d
d�dd�d�|�t�d
d
�dd�d�|�t�d
d�d�|�t�dd�dd�d�|�t�dd��d�gd��|�t�dd�dd�d�|�t�dd��d�gd��|�t�dd�dd�d�|�t�dd�dd�d�|�t�d d!�dd�d"�|�t�d#d!�dd�d"�t�d$�}|�t|�d%��d&�|�t|�d'��d(�|�t|�d)��d&�|�t|�d*��d(�|�t|�d+��d(�|�t|�d,��d(�|�t|�d-��d&�|�t|�d.��d&�|�t|�d/��d(�|�t|�d0��d&�|�t|�d1��d&�|�t|�d2��d&�dS)3Nz(\w)(?:(?R)|(\w?))\1rR)rRr!r�r�)r�rUr��abba)r�rUN�kayak)r�ryN�paper)�papr�rU�dontmatchmez(?r)\2(?:(\w?)|(?R))(\w))rRr�r!)r�r�rU)r�NrU)r�Nry)r�rUr�z\(((?>[^()]+)|(?R))*\)�
(ab(cd)ef))r�rr5)r�r��(cd)rz(?r)\(((?R)|(?>[^()]+))*\))r�r�)rr�r�r�z\(([^()]+|(?R))*\)zsome text (a(b(c)d)e) more text)�(a(b(c)d)e)r�z(?r)\(((?R)|[^()]+)*\))r�rUz!(foo(\(((?:(?>[^()]+)|(?2))*)\)))�foo(bar(baz)+baz(bop)))r�r�z(bar(baz)+baz(bop))zbar(baz)+baz(bop)z%(?r)(foo(\(((?:(?2)|(?>[^()]+))*)\)))zv^\s*(<\s*([a-zA-Z:]+)(?:\s*[a-zA-Z:]*\s*=\s*(?:'[^']*'|"[^"]*"))*\s*(/\s*)?>(?:[^<>]*|(?1))*(?(3)|<\s*/\s*\2\s*>))\s*$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
�rgxrrr�test_recursive�
s������������
����
��
���
��
���
���
���
���
zRegexTests.test_recursivecCs�t�d�}|�t�|�|u�|�t�|�|u�|�d�}|�t�|�|u�|�t�|�|u�|�|jdu�t�|�}|��|�|jdu�|�|jdu�t�dd�}t�|�}|�	t
|���d�|�	t
|���d�t�dd�}t�|�}|�	t
|���d�|�	t
|���d�t�dd�}t�|�}|�	t
|�d�|�	t
|�d�t�dd�}t�|�}|�	t
|�d�|�	t
|�d�dS)NrUrIr�r�r�r)
r)r*�
assertTrue�copy�deepcopyr=r	�
detach_stringr�r&r�r�r�)r
�rrM�m2r��it2rrr�	test_copy<s6






zRegexTests.test_copycCsv|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d	�|�t�dd��d�d�dS)
Nrz{0} => {2} {1}r�foo bar => bar fooz(?<word1>\w+) (?<word2>\w+)z{word2} {word1}�bar foo)r�r5)r�r5)r&r)�subf�subfnr=�expandfr>rrr�test_formatgs2��
����
��
��zRegexTests.test_formatc	CsH|�tt�dd��d�|�tt�dd��d�|�ttjdddd��d�|�ttjdddd	��d�|�ttjdd
dd	��d�|�ttjdd
ddd��d�|�tt�d
d��d�|�tt�d
d��d�|�ttjd
ddd��d�|�ttjd
ddd	��d�|�ttjd
d
dd	��d�|�ttjd
d
ddd��d�dS)Nr�Tr�Fr6)r�xabcr5)rr�r�rz(?r)abc�r&r�r)r�r>rrr�test_fullmatchus4�������zRegexTests.test_fullmatchcCs�|�t�ddd�d�|�t�dtd�td��d�|�t�ddd�d�|�t�dtd�td��d�|�t�dtd�td��d�|�t�dtd�td��d�d	td	�fD]D}|�t�d
|�gd��tj	dkr�|�t�d
|�gd��|�t�d|�gd��qX|�t�d
|�gd��|�t�d|�gd��qXdtd�td�td�fD]D}|�t�d|�gd��tj	dkr�|�t�d|�gd��|�t�d|�gd��q�|�t�d|�gd��|�t�d|�gd��q�dtd�fD]&}|�t�
d|�gd��|�t�
d|�gd��|�t�
d |�gd!��q�d"td"�td"�td"�fD]'}|�t�
d#|�gd$��|�t�
d%|�gd$��|�t�
d&|�gd'���q'dtd�fD]C}|�t�d|��
�d(�|�t�d)|��
�d*�|�t�d)|��d+�d�|�t�d)|��d,�d�|�t�d)|��d,d,�d-��qUdtd�td�td�fD]C}|�t�d|��
�d(�|�t�d.|��
�d/�|�t�d.|��d+�d�|�t�d.|��d,�d�|�t�d.|��d,d,�d0��q�dS)1Nr"rUr��xaz�yr�sxyzsxazr�r�r�r�r�r�r�r�r�r�s:a:b::c�:)rEr�r�rEr�s:*)rErEr�rEr�rEr�rEs(:*))rEr�rErEr�r�rErEr��::rErEr�rErE)rEr�r�r�)rEr�r�r�r�r�r�r�r�r�r�r�r�s
a:b::c:::ds:+)r�r�s:::s(:+)s(:)(:*)))r�rE)r�r�)r�r�rr�r�rr5r�s(a))r�)r�r�)r'r)rcrr�	bytearray�
memoryviewr�r�r�r+r&r=rr�)r
r	rrr�test_issue_18468�s~��������
�
� � �zRegexTests.test_issue_18468cCs�|�tjdddd�jd�|�tjdddd���d�|�tjdddd�jd�|�tjdddd���d�|�tjdd	dd�d�|�tjd
ddd�jd�|�tjd
ddd���d
�|�tjd
ddd�jd�|�tjd
ddd���d�|�tjdddd�jd�|�tjddddgd�jd�|�tjddddgd���d�|�tjddddgd�jd�|�tjddddgd���d�|�tjddddgd�jd�|�tjddddgd���d�|�tjddddgd�jd�|�tjddddgd���d�|�tjddddgd�d�|�tjdddd���d�|�tjdddd���d�|�tjdddd���d�|�tjdddd���d�|�tjdddd���d�|�tjdd dd�d�|�tjdd!dd�d�dS)"Nr�rUT��partialrr�r~r9�catchzabc\w{3}r�Fr2rr_z\d{4}$�1234z	\L<words>�post)r�rBr4rr@�POST�post�POSz	[a-z]*4R$r&�ab4�a4�a4R�4a�a44)r&r)r=r�r<r>rrr�test_partial�s����������������������������������zRegexTests.test_partialc
Cs:8|�ttjdtjd��d�|�ttjdtjd��d�|�t�dd�ddg�|�t�d	d�ddg�|�t�dd
�dg�|�t�dd�d
g�|�t�dd�d
g�|�dd�t�dd�D�dg�|�t�ddtjtjB��	d�d�|�t�ddtjtjB��	d�d�|�t�ddtjtjB��	d�d�|�t�dd��
�d�|�ttjddtjd��d�|�t�dd ��	dd!�d"�|�t�d#d$��	dd!�d%�|�t�d&d'��	d�d'�|�t�d(d)�d�|�t�d*d+��	d�d�|�t�d,d-��
d!�d.�|�t�d,d/��
d!�d0�|�t�d,d1��
d!�d2�|�t�d3d1��	�d1�|�t�d4d5��
�d6�|�t�d7d-��
�d8�|�t�d7d/��
�d9�|�t�d:d��	d�d�|�tjd;d1tjd��	d�d1�|�t�d<d=��
dd!�d>�|�t�d?d=��
dd!�d@�|�t�dAd=��
dd!�dB�|�t�dCd=��
dd!�dD�|�t�dEdF��	d�d-�|�tjdGdHdIdJgdK�gdL��|�t�dMdH�gdN��|�t�dOdH�gdL��|�t�dPdH�gdL��|�t�dQd-��	dd!dR�dS�|�t�dTdU��
dd!�dV�|�t�dWd-��	dd!�dX�|�t�dYdZ�d�|�t�d[d\�d�|�tj|jd]d^��|�t�d_d`��
d�da�|�t�dbdc��	d�dc�|�t�ddde�d�|�t�dfdg�d�|�t�dhdi��	dd!dR�dj�|�t�dkdl�d$dmg�|�t�dndl�d$dmg�|�t�dodl�d$dmg�|�t�dpdl�d$dmg�|�t�dqdr��	�dr�|�dsd�t�dtdu�D�dvdwg�|�t�dxdy��dz�gd{��|�tj|jd|d^��d}}d~}|�t�||tj�dd�|�t�d�d��d�g�|�tt�d�d�d�tj��td���|�t�d�d��d�|�t�d�d���d��d�d9g�|�t�d�d�d^�d��d��tjd�tjd�}|�|�d��d�|�|�d��g�|�tj|jd�d^��|�tjd�d�d��d��|�tjd�dd��d��|�t�d��d��|�tjd�d�d��d��|�tjd�dd��d��|�t�d��d��|�t�d�d���
�d��|�t�d�d���
�d��|�t�d�d���
�d��tjd�tjtjBd�}|�d�d�|�d��D�d�g�|�|�d��d�g�d�}|�d�d�|�|�D�d�g�|�|�|�d�g�tjd�tjtjBtjBd�}|�d�d�|�d��D�d�g�|�|�d��d�g�d�}|�d�d�|�|�D�d�g�|�|�|�d�g�tjd�k�r?|�t�d�d�d��dU�n|�t�d�d�d��d��|�t�d�d�d��dU�tjd�k�rg|�t�d�d�d��d��n|�t�d�d�d��d��|�t�d�d�d��d��|�tjd�d�d�tjd�d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�d¡j dá|�t�d�d¡j dá|�t�d�d¡j dá|�t�d�d��j d��|�t�d�d��j d��|�t�d�d��j d��|�t�d�dȡg�|�t�d�d�d��d��|�tt�d-d-tj!��d�|�t�d�dˡd dg�|�t�d�dˡd dg�|�t�d�dˡd dg�|�t�d�dˡd dg�|�tjd�d�d^��|�t�d�d-��	dd!dR�dҡ|�t�d�d-��	dd!dR�dҡdԠ"d�dքt#d׃D��}|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����|�tdԠ"t�d�|���tdԠ"t�d�|����t$t#d��}|�td��"t�d�|���td��"t�d�|����|�td��"t�d�|���td��"t�d�|����|�td��"t�d�|���td��"t�d�|����|�td��"t�d�|���td��"t�d�|����|�td��"t�d�|���td��"t�d�|����|�td��"t��d|���td��"t��d|����|�td��"t��d|���td��"t��d|����|�td��"t��d|���td��"t��d|����|�td��"t��d|���td��"t��d|����|�td��"t��d|���td��"t��d	|����|�td��"t��d
|���td��"t��d|����|�td��"t��d|���td��"t��d
|����|�td��"t��d|���td��"t��d|����|�td��"t��d|���td��"t��d|����|�tt��d�d��	��t�d��|�t��d�d��
��d�|�t��d�dd���d�|�t��d�dd���d�|�t�%�d�dd���d�|�t�%�d�dd���d�|�tj&�dd�d�d��
�d9�|�tj&�dd�d�d�j'd�|�tj�d�d d�d��
��d!�|�tj�d"�d d�d��
��d!�|�tj�d#�d d�d��
��d$�|�t��d%�d&��
�d8�|�t��d'�d(�d�|�t��d)�d*�g�d+��|�t��d,�d*�g�d+��|��d-d�t��d.�d/�D�g�d0��|��d1d�t��d2�d/�D�g�d0��|�t��d3�d4�d�d4�|�t��d3�d5�d�d5�|�t��d6�d7�d�d7�|�t��d8�d9�d�d9�|�t��d:d��	dd!��d;�|�t��d<�d=��d>�d?g�|�t��d@�d=�d�dAg�|�t��dBd��	dd!��dC�|�t��dD�d=��dEd�g�|�t��dF�d=��dAdg�|�t��dG�dH�d�dH�|�t��dId-��	�dJ�d�|�t��dId-���dJ�d-g�|�t��dK�dL�d�dM�|�t��dN�dL�d�dM�|�t��dO�dL�d�|�t��dP�dL�d�dL�|�t��dQ�dR�d�dR�|�t��dQ�dS�d�dT�|�t��dU�dR�d�dV�|�t��dU�dS�d�dT�|�t��dW�dS�d�dS�|�t��dW�dX�d�dT�|�t��dY�dX�d�dT�|�t��dZ�dX�d�dT�|�t��d[�dL�d�|�t��d\�dL�d�dL�|�t��d]�dR�d�dR�|�t��d]�dS�d�dT�|�t��d^�dS�d�dS�|�t��d^�dX�d�dT�|�t��d_�dX�d�dT�|�t��d`�dX�d�dT�|�t��da�dR�d�dR�|�t��da�dS�d�dT�|�t��db�dR�d�dV�|�t��db�dS�d�dT�|�t��dc�dS�d�dS�|�t��dc�dX�d�dT�|�t��dd�dX�d�dT�|�t��de�dX�d�dT�|�t��df�dR�d�dR�|�t��df�dS�d�dT�|�t��dg�dS�d�dS�|�t��dg�dX�d�dT�|�t��dh�dX�d�dT�|�t��di�dX�d�dT��dj}|�t(t��dk|��d!�|�t��dl�dm��
�d9�|�t��dn�do�d�do�t��dp�}�dq}	|��drd�|�|	�D��ds�dtg�|�t��du�dvtj��
��dw�|�t��dx�dvtj��
��dy�|�t��dz�d{��
��d|�|�t��d}�d{�d�|�t��d~�d��
��d��|�t��d~�d���d��d�g�|�t��d��d���	dd!��d��|�t��d��d���	dd!��d��|�t��d��d��d���d��|�t��d��d��d���d��|�tj�d��d��d�g�d���
�d��|�tj�d��d��d�g�d���
�d��|�t��d��d���
��d��|�t��d��d���
��d��|�t��d��d���
��d��|�t��d��d���
��d��|�t��d��d���
��d��tj�d��d��d�g�d��}
t)�*|
�}t)�+|�}
|�|
��d���
�d6�|�tj�d��d�tjd��
��d|�|�tj�d��d�tjd��
��d��|�tj�d�d�tjd�d�|�tj�d��d�tjd��
��d|�|�tj�d��d�tjd��
��d��|�tj�d�d�tjd�d�|�,tj�d�d^��|�,tj�d�d^��|�tt��d���d�|�tt��d���d�|�t��d��d�tj-��d��d�g�|�tj�d��d�d�d��
��d���d�}�d�}
|�tt��d�||
��d�|�tt��d�|
|��d�|�tt��d�||
��d��|�tt��d�|
|��d��|�tt��d�||
��d��|�tt��d�|
|��d��|�ttj�d��d��d��d�g�d���d�|�ttj�d��d��d��d�g�d���d�|�ttj�d��d��d��d�g�d���d�|�ttj�d��d��d��d�g�d���d�|�tj�d��d��d��d�g�d���
��d��|�tj�d��d��d��d�g�d���
��d��|�t��d��d���
��d��|�t��d��d���
��d��|�t��ddá�
��d��|�t��ddġd�|�t��dŐdơ�
��dǡ|�t��dȐdɡ�
��dʡ�d�}�d�}|�tt�||��d��|�tt��d͐d���d�|�tt��dΐd���d��|�tt��dϐd���d�|�tt��dАd���d��|�tt��dѐdҡ�d��|�t��dӐdԡ�
��dա|�t��d֐d�tj��
��d��|�t��d֐d�tj�j d��|�t��dؐd�tj��
��d��|�t��dؐd�tj�j d��|�t��dِd�tj��
��dۡ|�t��dِd�tj�j �dܡ|�tj�dݐd�tjtjBd��
��dߡ|�t��d�d=��dAg�|�t��d�d=��dAg�|�t��d�d��d�d�g�|�t��d�d�g�|�t��d�d��d�g�|�t��d�d�g�d��|�t��d�d��	��d�|�t��d�d��	��d�|�t��d�d��	��d�|�t��d�d��	��d�|�t��d�d��	��d�|�t��d�d��	��d�|�t��d�d��	��d�|�t��d��d��	��d�|�t��d��d���	��d��|�t��d��d���	��d��|�t��d��d���	��d��|�t��d��d���	��d��|�tj�d�d�d��d���d��|�tj�d�d�d�d���d��|�tj�d�dd��d���d��|�tj�d�dd�d���d�|�t��d���d��|�t��dde��
�d8�|�t��d�d��
�d8�|�t��d�d��
��d�|�t��ddԡ�
��d�|�t��ddԡ�
��d�|�t��dd$��
��d�|�t��dd$��.��d	di�|�t��dd$��/��d	d-gi�|�t��d
d$��
��d�|�t��d
d$��.��d	di�|�t��d
d$��/��d	d-gi�|�t��dd$��
��d�|�t��dd$��.��d	di�|�t��dd$��/��d	d-gi�|�tt��dd��d�|�tj�d
�dd�d��
��d��|�tj�d�dd�d��
��d��|�tt��d�d��d�|�tt��d�d��d�|�tt��d�d��d�|�tt��d�d��d�|�tt��d�d��d�|�tt��d�d��d�|�tt��d�d��d�|�tt��d�d��d��|�tt��d�d��d�|�tt��d�d��d��|�tt��d�d��d�|�tt��d�d��d��|�tt��d �d!��d�|�tt��d"�d!��d��|�t�&�d#d$��d��g�d$��|�t�&�d#d$��	d��d �|�t�&�d%d$��d��g�d$��|�t�&�d%d$��	d���d&�|�tj�d'd�d�d�j'd��|�tj�d'�d(d�d�j'd��|�tj�d)d�d�d�j'd��|�tj�d*d�d�d�j'd��|�tj�d*�d(d�d�j'd��|�tj�d+d�d�d�j'd��|�tj�d+�d(d�d�j'd��|�tj�d,d�d�d�j'd��|�tj�d-d�d�d�j'd��|�tj�d-�d(d�d�j'd��|�tj�d.d�d�d�j'd��|�tj�d.�d(d�d�j'd��|�tj�d/d�d�d�j'd��|�tj�d0d�d�d�j'd��|�tj�d0�d(d�d�j'd��|�tj�d1d�d�d�j'd��|�tj�d1�d(d�d�j'd��|�tj�d2d�d�d�j'd��|�tj�d3d�d�d�j'd��|�tj�d3�d(d�d�j'd��|�tj�d4d�d�d�j'd��|�tj�d5d�d�d�j'd��|�tj�d6d�d�d�j'd��|�tj�d7d�d�d�j'd�|�tj�d8d�d�d�j'd�|�tj�d9d�d�d�j'd�|�tj�d7d-d�d�j'd��|�tj�d8d-d�d�j'd��|�tj�d9d-d�d�j'd��|�tj�d:d�d�d�j'd��|�tj�d;d�d�d�j'd��|�tj�d<d�d�d�j'd��|�tj�d=d�d�d�j'd�|�tj�d>d�d�d�j'd�|�tj�d?d�d�d�j'd�|�tj�d=d-d�d�j'd��|�tj�d>d-d�d�j'd��|�tj�d?d-d�d�j'd��|�tj�d@�dAd�d�j'd���dB}�dC}tj||tjd�}|�|j d��|�|j0g�dDggf�|�t��dE�dF�j �dG�|�t��dE�dH�j d��|�t��dI�dJ��dJg�|�tt��dKd-��d�|�tt��dLd-��d�|�t�&�dM�dL��
�d6�|�t��dN�dO��/��dPgg�dPg�dQ��|�tt��dR�dS��d�|�tt��dT�dS��d�|�t��dU�dV�j0ggg�dW�f�|�t��dX�d&�j �dY�|�t��dX�d&�j0dggd!gf�|�t��dZ�d&�j �d[�|�t��dZ�d&�j0ggdgf�|�t��d\�d&�j �d[�|�t��d\�d&�j0ggdgf�|�t��d]�d^�j �d_�|�t��d`�d^�j d��|�t��da�d^�j d��|�t��db�dc�j �dd�|�t��de�dc�j �dd�|�t�&�df�dg�j d��|�t�&�dh�dg�j d��|�t��di�dj�d�|�tt��dk��d�|�tt��dl��d�|�t��dm�dn�g�do��|�t��dp�dn�g�do��|�tj�dq�drtj1d�j �ds�|�tt��dt�d���d�|�tt��du�d���d�|�t��dv�dw��	��dw�|�t��dv�dx�d�|�t��dy�dz��	��dz�|�t��dy�d{�d�|�t��dy�dz�j0g�d|ggf�|�t��d}�dz��	��dz�|�t��d~�dz�j0g�d|ggf�|�t��d��2�d��g�d���|�t��d��2�d��g�d���|�t��d����d��d�|�t��d����d��d�tj�d�tjtj3Bd�}|�|��d���	��d��|�|��d���	��d��|�|��d���	��d��|�|��d���	��d���d�}�d�}tj||tjd�}|�|�
��d��|�|�.��d��d��d��d��d��d���tj||tj-d�}|�|�
��d��|�|�.��d��d��d��d��d��d����d�}�d�}tj||tjd�}|�|j �dG�|�|j0gggf��d�}tj||tjd�}|�|j �dd�|�|j0�d��d�gggf�|�t��d��d��d���d��|�t�%�d��d��d���d��|�t��d��d���4�d���d��f|�t��d��d���5�d���d��|�t��d��d��d�|�tj�d��d�tjd�d�|�t��d��d���
�d9�|�t��d��d���
�d9�|�t��d��d��d�|�t��d��d���
�d8�|�t��d�d$��6�d$gg�d$�f�|�t��d�d$��7�d6gg�d��f�|�tt�&�d��d���d�|�tt�&�d��d���d�|�t��d�de�d�|�t��d�de��
�d.�|�t��d��d���
��d��|�t��d�d���
�d8�|�t��d�d���
�d9�|�t��d�d���
�d9�|�t��d�d���
�d8�|�tj�d��d�g�d���
��d�|�t��d���d-��
�d8�|�tj�d�tjd��d-��
�d8�|�tj�d��d�d�d��
��d��|�tj�d��d�d�d�d�|�tj�d��d�d�d��
��d��|�tj�d��d�d�d��
��d��|�tj�d��d�d�d�d�|�tj�dĐd�d�d��
��d��|�tj�dĐd�d�d�d�|�tj�dĐd�d�d��
��d��|�tj�dŐd�d�d��
��d��|�tj�dŐd�d�d�d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�|�ttj�dƐd�d�d��d�dS(�Nz(?>b)rTz^((?>\w+)|(?>\s+))*$z\((?:(?>[^()]+)|(?R))*\)za(bcd(e)f)g(h)z	(bcd(e)f)z(h)z\((?:(?:[^()]+)|(?R))*\)za(b(cd)e)f)g)hz(b(cd)e)z
a(bc(d(e)f)ghz(d(e)f)z(?r)\((?:(?>[^()]+)|(?R))*\)cSr9rr:r�rrrr�!r�z+RegexTests.test_hg_bugs.<locals>.<listcomp>z\((?:[^()]*+|(?0))*\)z
a(b(c(de)fg)hz	(c(de)fg)za(bc)dr�rz([\da-f:]+)$r�r�z^(?=ab(de))(abd)(e)�abde)rpr�r�z\ r�z^(a|)\1{2}br�r5)r�r�z	^(a){0,0}r�r�z(?>.*/)bza/bz((?i)blah)\s+\1z	blah BLAHz(\()?[^()]+(?(1)\)|)z(abcdz(a*)*rU�r5r5r��r�r�r7�r6r6z	a(?#xxx)*z
(?=abc){3}abc�	abcabcabcr9z^(?:a(?:(?:))+)+rr&za(?x: b c )dza#comment
*z(?V1)(a(?(1)\1)){1}�
aaaaaaaaaar�z(?V1)(a(?(1)\1)){2})r9r4z(?V1)(a(?(1)\1)){3})r2rnz(?V1)(a(?(1)\1)){4})r*)r�rXz(?V1)(a)(?<=b(?1))�bazz(?fi)\L<keywords>u)POST, Post, post, poſt, post, and poſtr�r)�keywords)r��Postr�upoſtr��poſtz
(?fi)pos|post)r��Posrupoſr�r�z
(?fi)post|posz(?fi)post|anotherz(?V1)((a)(?1)|(?2))r�r�z(?V1)(\1xx|){6}rR)r&r�z(a|)+r�z(a|)*\d�Paaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz^(?:a?b?)*$r�cSrj)Nz\N{1}rkrrrrrN�rlz)RegexTests.test_hg_bugs.<locals>.<lambda>r/za
a
r�z(q1|.)*(q2|.)*(x(a|bc)*y){2,}�xayxayz(?i)[^a]r`z(?i)[[:ascii:]]uKz((a|b(?1)c){3,5})�baaaaca)r�r�rUz
(?<=:\S+ )\w+z:9 abc :10 defr�z
(?<=:\S* )\w+z(?<=:\S+? )\w+z(?<=:\S*? )\w+z(?:fe)?male�femalecSr9rr:r�rrrr��r�z!(fe)?male: h(?(1)(er)|(is)) (\w+)z(female: her dog; male: his cat. asdsasdazfemale: her dogz
male: his catz (?<rec>\((?:[^()]++|(?&rec))*\))zaaa(((1+0)+1)+1)bbb�rec)z(1+0)z	((1+0)+1)z
(((1+0)+1)+1)cSr�)Nr!�\r�rrrrrN�r�z%(CAGCCTCCCATTTCAGAATATACATCC){1<e<=2}ڮtcagacgagtgcgttgtaaaacgacggccagtCAGCCTCCCATTCAGAATATACATCCcgacggccagttaaaaacaatgccaaggaggtcatagctgtttcctgccagttaaaaacaatgccaaggaggtcatagctgtttcctgacgcactcgtctgagcgggctggcaagg�tCAGCCTCCCATTCAGAATATACATCCzc..+/cz
cA/c
cAb/czcAb/cz(\w+)rvu#अन्‍न ന്‍ किनu)[अन्‍न] [ന്‍] [किन]z.*a.*ba.*aa�ababbaz(?<x>a(?<x>b))r�r!r�z(-)cSs
|�d�S)Nr!)r�rLrrrrN��
r�axbxcz
\bt(est){i<2}z	Some textcSrj)Nz.???rkrrrrrN�rlzfoo!?F)�special_onlyzfoo\!\?zfoo!\?sfoo!?sfoo\!\?sfoo!\?z^([^z]*(?:WWWi|W))?$�WWWi)r�z^([^z]*(?:WWWi|w))?$z^([^z]*?(?:WWWi|W))?$r0cSr9rr:�r�r!rrrr�
r��yxxxcSr9rr:r�rrrr�
r�cSr9rr:r�rrrr�
r�cSr9rr:r�rrrr�
r�r�z(?V0).*r^z(?V1).*z(?V0).*?r�z	|||||||||z	|t|e|s|t|z(?V1).*?z^(@)\n(?!.*?@)(.*)z\1\n==========\n\2z@
z
@
==========
r}�cazr�r�z(?b)(?:cats|cat){e<=1}z
(?:cat){e<=1}z(?e)(?:cat){e<=1}z(?b)(?:cat){e<=1}z(?:cats){e<=2}zc ats)r5r5rz(?e)(?:cats){e<=2}r�z(?b)(?:cats){e<=2}zc a ts)rr�rz(?:cats){e<=1}z(?e)(?:cats){e<=1}z(?b)(?:cats){e<=1}z\bof ([a-z]+) of \1\bz#To make use of one of these modulesz\g<0>z(?V1)[[b-e]--cd]r�z(?V1)[b-e--cd]z(?V1)[[bcde]--cd]z(?V1)[bcde--cd]z ^unknown property at position 4$cSrj)Nz\p{}rkrrrrrNn
r�z(?:()|(?(1)()|z)){2}(?(2)a|z))rUr�r�z(?:()|(?(1)()|z)){0,2}(?(2)a|z)r�csrgrrhrirrrrj}
rkz*RegexTests.test_hg_bugs.<locals>.<genexpr>iz[[:alnum:]]+z[\p{Alpha}\p{PosixDigit}]+z[[:alpha:]]+z
\p{Alpha}+z[[:ascii:]]+z[\p{InBasicLatin}]+z[[:blank:]]+z[\p{gc=Space_Separator}\t]+z[[:cntrl:]]+z\p{gc=Control}+z[[:digit:]]+z[0-9]+z[[:graph:]]+z<[^\p{Space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]+z[[:lower:]]+z
\p{Lower}+z[[:print:]]+z%(?V1)[\p{Graph}\p{Blank}--\p{Cntrl}]+z[[:punct:]]+z2(?V1)[\p{gc=Punctuation}\p{gc=Symbol}--\p{Alpha}]+z[[:space:]]+z\p{Whitespace}+z[[:upper:]]+z
\p{Upper}+z[[:word:]]+zL[\p{Alpha}\p{gc=Mark}\p{Digit}\p{gc=Connector_Punctuation}\p{Join_Control}]+z
[[:xdigit:]]+z[0-9A-Fa-f]+r?rEs(?a)[[:alnum:]]+s(?a)[\p{Alpha}\p{PosixDigit}]+s(?a)[[:alpha:]]+s(?a)\p{Alpha}+s(?a)[[:ascii:]]+s(?a)[\x00-\x7F]+s(?a)[[:blank:]]+s(?a)[\p{gc=Space_Separator}\t]+s(?a)[[:cntrl:]]+s(?a)\p{gc=Control}+s(?a)[[:digit:]]+s
(?a)[0-9]+s(?a)[[:graph:]]+s@(?a)[^\p{Space}\p{gc=Control}\p{gc=Surrogate}\p{gc=Unassigned}]+s(?a)[[:lower:]]+s(?a)\p{Lower}+s(?a)[[:print:]]+s&(?aV1)[\p{Graph}\p{Blank}--\p{Cntrl}]+s(?a)[[:punct:]]+s3(?aV1)[\p{gc=Punctuation}\p{gc=Symbol}--\p{Alpha}]+s(?a)[[:space:]]+s(?a)\p{Whitespace}+s(?a)[[:upper:]]+s(?a)\p{Upper}+s(?a)[[:word:]]+sP(?a)[\p{Alpha}\p{gc=Mark}\p{Digit}\p{gc=Connector_Punctuation}\p{Join_Control}]+s(?a)[[:xdigit:]]+s(?a)[0-9A-Fa-f]+z\X$uab℃u℃z([^L]*)([^R]*R)�LtR)r�r�r$zx\1y�xayxbyr%zx{1}yz(a)*abcr��OXRG�OOGOXrqz.XRGz	.{1,3}XRG)r5r)zR|R�Rz
(.)(?(1)(?!))r�z(y)?(\d)(?(1)\b\B)�ax1y2z3b))r�ru)r��2)r�rJz(y)?+(\d)(?(1)\b\B)cSr9r�r<r�rrrr��
r�z(?i)(?:error){e}z
regex failure)r_)r)rX)rXrZ)rZrZcSr9rr�r�rrrr��
r�z(?fi)(?:error){e}z(?p)\d+(\w(\d*)?|[eE]([+-]\d+))�10b12z10E+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\wrz(?r)(\w\w\K\w\w)z6(?(DEFINE)(?<quant>\d+)(?<item>\w+))(?&quant) (?&item)z5 elephantsz#(?&routine)(?(DEFINE)(?<routine>.))�routinez12(*FAIL)|3�123rJz(?r)12(*FAIL)|3z
\d+(*PRUNE)\dz\d+(?=(*PRUNE))\dz\d+(*PRUNE)bcd|[3d]�123bcd�123zzdr�z\d+?(*PRUNE)bcd|[3d]�3bcdz\d++(?<=3(*PRUNE))zzd|[4d]$�124zzdz\d++(?<=(*PRUNE)3)zzd|[4d]$z\d++(?<=2(*PRUNE)3)zzd|[3d]$z(?r)\d(*PRUNE)\d+z(?r)\d(?<=(*PRUNE))\d+z(?r)\d+(*PRUNE)bcd|[3d]z(?r)\d++(?<=3(*PRUNE))zzd|[4d]$z(?r)\d++(?<=(*PRUNE)3)zzd|[4d]$z (?r)\d++(?<=2(*PRUNE)3)zzd|[3d]$z\d+(*SKIP)bcd|[3d]z\d+?(*SKIP)bcd|[3d]z\d++(?<=3(*SKIP))zzd|[4d]$z\d++(?<=(*SKIP)3)zzd|[4d]$z\d++(?<=2(*SKIP)3)zzd|[3d]$z(?r)\d+(*SKIP)bcd|[3d]z(?r)\d++(?<=3(*SKIP))zzd|[4d]$z(?r)\d++(?<=(*SKIP)3)zzd|[4d]$z(?r)\d++(?<=2(*SKIP)3)zzd|[3d]$z�June 30, December 31, 2013 2012
some words follow:
more words and numbers 1,234,567 9,876,542
more words and numbers 1,234,567 9,876,542z(?<!\d)(?>2014|2013 ?2012)z1(?>2)�12zn(?V1w)(?=(?=[^A-Z]*+[A-Z])(?=[^a-z]*+[a-z]))(?=\D*+\d)(?=\p{Alphanumeric}*+\P{Alphanumeric})\A(?s:.){8,255}+\ZzAAaa11!!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
cSsg|]}|�dd��qSr�r�r�rrrr��s)rb)r�r\)rb)�6�;z
(abcdefgh){e}z******abcdefghijklmnopqrtuvwxyz)r�r+z(abcdefghi){e})r�r%z(?:(?=\d)\d+\b|\w+)r�r2z(?(?=\d)\d+\b|\w+)z (?(?<=love\s)you|(?<=hate\s)her)z
I love yourLz&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>�21ru)�kwz
(?irV1)\L<kw>za|b�111a222)r6r�z(?r)a|bz(?if)<(CLI)><\1>z
<cli><cli>r*z
<cli><clI>z(?ifr)<\1><(CLI)>z\L<options>r�r�r0z(x{6}){e<=1}�xxxxxx�xxxxxr_z(?r)(x{6}){e<=1}cSrj)Ns00000\0\00\^(\00\U05000000rkrrrrrN�rlcSrj)Ns{e<lrkrrrrrN�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�ccrDz(?ir)\1dog..(?<=(\L<aa>))$z(2)(?:\1{5}){e<=1}�3222212)r5r\z(\d)(?:\1{5}){e<=1}z&\A(?P<whole>(?>\((?&whole)\)|[+\-]))\Zz((-))z((-)+)zx.*? (.).*\1(.*)\1z	x  |y| z|rmz\.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>((?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))))zfoo(?<=foo)zfoo(?<!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)rrY)rr.rza?yz�xxxxyz)r�r�z(?:(?![a-d]).)+z.(?(DEFINE)(?P<mydef>(?:(?![a-d]).)))(?&mydef)+z((\w{1,3})(\.{2,10})){1,3}z("Erm....yes. T..T...Thank you for that."�zErm....�Ermz....�zT...�Tr�z((\w{1,3})(\.{2,10})){3}z((\w{1,3})(\.{2,10})){2}z((\w{1,3})(\.{2,10})){1})r)zT..rr<r
z(?:ESTONIA(?!\w)){e<=1}zESTONIAN 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}zA 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)rz
(?(?=A)A|)r1z
(?(?=X)X|)z(?(?=X))z(?(DEFINE)(?<func>.))(?&func)r�funcz!(?(DEFINE)(?<func>.))(?=(?&func))z#(?(DEFINE)(?<func>.)).(?<=(?&func))zab(?#comment\))cdz[a-z]+ [a-z]*?:rz(?r):[a-z]*? [a-z]+z(?u)\p{Script:Beng}u৯z(?u)\p{Script:Bengali}z!(?u)\p{Script_Extensions:Bengali}z(?u)\p{Script_Extensions:Beng}z(?u)\p{Script_Extensions:Cakm}z(?u)\p{Script_Extensions:Sylo}z(?u)\p{scx:Latin}r�z(?u)\p{scx:Ahom}z(?u)\p{scx:Common}�4z(?u)\p{scx:Caucasian_Albanian}z(?u)\p{scx:Arabic}uتz(?u)\p{scx:Balinese}z(?u)\p{scx:Devanagari}uजz(?u)\p{scx:Batak}z(?P<x>.)*(?&x)r�z(?P<x>.)(?P<x>.)(?P<x>.)r�z(?:ab)*�ababz(?:ab)*?z(?:ab)*+z(?:ab)+z(?:ab)+?z(?:ab)++z(?r)(?:ab)*z(?r)(?:ab)*?z(?r)(?:ab)*+z(?r)(?:ab)+z(?r)(?:ab)+?z(?r)(?:ab)++r/za*?za*+r:za+?za++z(?r)a*z(?r)a*?z(?r)a*+z(?r)a+z(?r)a+?z(?r)a++z
(?:\s*\w+'*)+�whateveraz(?P<termini5>GGCGTCACACTTTGCTATGCCATAGCAT[AG]TTTATCCATAAGATTAGCGGATCCTACCTGACGCTTTTTATCGCAACTCTCTACTGTTTCTCCATAACAGAACATATTGACTATCCGGTATTACCCGGCATGACAGGAGTAAAA){e<=1}(?P<gene>[ACGT]{1059}){e<=2}(?P<spacer>TAATCGTCTTGTTTGATACACAAGGGTCGCATCTGCGGCCCTTTTGCTTTTTTAAGTTGTAAGGATATGCCATTCTAGA){e<=0}(?P<barcode>[ACGT]{18}){e<=0}(?P<termini3>AGATCGG[CT]AGAGCGTCGTGTAGGGAAAGAGTGTGG){e<=1}�?GCACGGCGTCACACTTTGCTATGCCATAGCATATTTATCCATAAGATTAGCGGATCCTACCTGACGCTTTTTATCGCAACTCTCTACTGTTTCTCCATAACAGAACATATTGACTATCCGGTATTACCCGGCATGACAGGAGTAAAAATGGCTATCGACGAAAACAAACAGAAAGCGTTGGCGGCAGCACTGGGCCAGATTGAGAAACAATTTGGTAAAGGCTCCATCATGCGCCTGGGTGAAGACCGTTCCATGGATGTGGAAACCATCTCTACCGGTTCGCTTTCACTGGATATCGCGCTTGGGGCAGGTGGTCTGCCGATGGGCCGTATCGTCGAAATCTACGGACCGGAATCTTCCGGTAAAACCACGCTGACGCTGCAGGTGATCGCCGCAGCGCAGCGTGAAGGTAAAACCTGTGCGTTTATCGATGCTGAACACGCGCTGGACCCAATCTACGCACGTAAACTGGGCGTCGATATCGACAACCTGCTGTGCTCCCAGCCGGACACCGGCGAGCAGGCACTGGAAATCTGTGACGCCCTGGCGCGTTCTGGCGCAGTAGACGTTATCGTCGTTGACTCCGTGGCGGCACTGACGCCGAAAGCGGAAATCGAAGGCGAAATCGGCGACTCTCATATGGGCCTTGCGGCACGTATGATGAGCCAGGCGATGCGTAAGCTGGCGGGTAACCTGAAGCAGTCCAACACGCTGCTGATCTTCATCAACCCCATCCGTATGAAAATTGGTGTGATGTTCGGCAACCCGGAAACCACTTACCGGTGGTAACGCGCTGAAATTCTACGCCTCTGTTCGTCTCGACATCCGTTAAATCGGCGCGGTGAAAGAGGGCGAAAACGTGGTGGGTAGCGAAACCCGCGTGAAAGTGGTGAAGAACAAAATCGCTGCGCCGTTTAAACAGGCTGAATTCCAGATCCTCTACGGCGAAGGTATCAACTTCTACCCCGAACTGGTTGACCTGGGCGTAAAAGAGAAGCTGATCGAGAAAGCAGGCGCGTGGTACAGCTACAAAGGTGAGAAGATCGGTCAGGGTAAAGCGAATGCGACTGCCTGGCTGAAATTTAACCCGGAAACCGCGAAAGAGATCGAGTGAAAAGTACGTGAGTTGCTGCTGAGCAACCCGAACTCAACGCCGGATTTCTCTGTAGATGATAGCGAAGGCGTAGCAGAAACTAACGAAGATTTTTAATCGTCTTGTTTGATACACAAGGGTCGCATCTGCGGCCCTTTTGCTTTTTTAAGTTGTAAGGATATGCCATTCTAGACAGTTAACACACCAACAAAGATCGGTAGAGCGTCGTGTAGGGAAAGAGTGTGGTACCi�z)(?e)(dogf(((oo){e<1})|((00){e<1}))d){e<2}�dogfoodr��dogfootr�u👨‍👩‍👧‍👦z(?=a)az(?!b)az
((\d)*?)*?zX(?(DEFINE)(?<mydef>(?<wrong>THIS_SHOULD_NOT_MATCHx?)|(?<right>right))).*(?<=(?&mydef).*)zx rightrM)�mydef�wrongrMz(?:cat){e<=1:[u]}�cutz(?:cat){e<=1:u}z?(?be)(AGTGTTCCCCGCGCCAGCGGGGATAAACCG){s<=5,i<=5,d<=5,s+i+d<=10}�TTCCCCGCGCCAGCGGGGATAAACCG)rr5r6r)z	(?:bc){e})r5rr5z
(?e)(?:bc){e}rz
(?b)(?:bc){e}z,(?e)(?:^(\$ )?\d{1,3}(,\d{3})*(\.\d{2})$){e}z$ 10,112.111.12)r�rr)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�rrz/(?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)rr6rz(?:(x*)\1\1\1)*x$z(?:(x*)\1{3})*x$zt(?:es){s<=1:\d}t�te5t�teztzt(?:es){i<=1:\d}t�tes5t�tesztr6zt(es){i<=1,0<e<=1}tzt(?: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 *za|\.*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|_))z1 month agoz9 hours 1 minute agoz1 minute agoz10 months 1 hour agoz
1 hour agoz1 month 10 hours agoz10 hours ago�2TTCAGACGTGTGCTCTTCCGATCTCAATACCGACTCCTCACTGTGTGTCTzw(?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�sidrdzt(?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�&GGAAAACACTGGTCTCAGTCTCGTCCCCGAAGTGGTCGrw�z(test1)|(test2)z
matched: \1\2�test1zmatched: test1zmatched: {1}{2}z(?:\bha\b){i:[ ]}�havingz	(?a:\w)\wudжz(?a:\w)(?u:\w)z	^\p{LC}+$u😺z	^\p{So}+$r )rr�r�z\p{HorizSpace}+u4	   ᠎              z\p{VertSpace}+u

…

z(?(?<=A)|(?(?![^B])C|D))z
^a?(a?)b?c\1$�abcar4z(?(?=a).|..)z(?(?=b).|..)z(?(?!a).|..)z(?(?!b).|..)z(\L<foo>){e<=5}�blah)r�r�z
[^/]*b/ccczb/ccczb/ccbzb/ccz
[^/]*b/xyzzb/xyzb/yzz(?i)[^/]*b/cccz(?i)[^/]*b/xyzz<thinking>.*?</thinking>r6z	<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;rmr�rr=r]r<rrr��UNDEF_CHAR_NAMEr!r��	BESTMATCHr�rc�WORD�spansr�rA�FULLCASErrHr�r�rr��DEBUGrrBrFr�r�r�rr�pickle�dumps�loadsr��ENHANCEMATCHr�r_r�rr��V0r�r��allcaptures�allspans)r
�fz�seq�rxr��rawr�rV�
TEST_REGEX�	TEST_DATAr�r��upper_i�lower_irU�py_regex_patternrorM�sequencerrr�test_hg_bugss��
��
��
��
��
��

���������
����
�
�
�
�
�
�
�
��
��
��
��
�����
����������
����
��������
��
��
���
��
��
��
���
��
���
��
��
��
��
���
��
��
������
�
��
��
����������������������������������������������������������������������������������������������� �������� ��������������������������������������������������������������������
�
���������
��� � �������

�������������
���������������
��
��
��
��
����������������������������������������������������������������������������������������������������������������
����������������������	������������
�
����������������������������""(($"&&$$$$$$$$"""""""&zRegexTests.test_hg_bugscCs�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�d	d��d�|�tt�d
d��d�|�tt�d	d��d�|�tt�d
d��d�|�tt�dd��d�|�tt�dd
��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd��d�|�tt�dd ��d�|�tt�d!d"��d�|�tt�d!d#��d�|�tt�dd$��d�|�tt�dd%��d�|�tt�d&d'��d�|�tt�d&d(��d�dS))Nz(?r)(?:a){e<=1:[a-z]}r�Tz(?:a){e<=1:[a-z]}r�Fr�r�z(?:ab){e<=1:[a-z]}z(?r)(?:ab){e<=1:[a-z]}z(a)\1{e<=1:[a-z]}z(?r)\1{e<=1:[a-z]}(a)rr�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-szs-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�tssszss-szsss-z5(?firu)(\N{LATIN SMALL LETTER SHARP S})\1{e<=1:[a-z]}z(?fiu)(ss)\1{e<=1:[a-z]}ußtsußstz(?firu)\1{e<=1:[a-z]}(ss)ustßutsßuß-sußs-z(?firu)(ss)\1{e<=1:[a-z]}us-ßu-sßr�r>rrr�test_fuzzy_extsh����������������������������������������������������������������������zRegexTests.test_fuzzy_extcCs�|�t�dd��d�d�|�t�dd��d�d�|�t�dd��d�d�|�t�ddd�d�|�t�ddd�d�|�t�ddd�d�dS)Nz	(?P<x>.)+r�z{0} {0[0]} {0[-1]}zabc abc abcz0{1} {1[0]} {1[1]} {1[2]} {1[-1]} {1[-2]} {1[-3]}z
c a b c c b az0{x} {x[0]} {x[1]} {x[2]} {x[-1]} {x[-2]} {x[-3]})r&r)r=r�r�r>rrr�test_subscripted_captures_s@
��
��
����
��
��z$RegexTests.test_subscripted_capturescCs�tjdkrL|�t�dd�gd��|�t�ddd�d�|�t�dd�gd��|�dd	�t�dd�D�gd
��|�dd	�t�dd
�D�gd��dSdS)Nr�z\b|:+za::bc)r�rUr�r�r�r�r�z-a---bc-)r�r�r�r�r�cSr9rr�r�rrrr�yr�z2RegexTests.test_more_zerowidth.<locals>.<listcomp>)r1r�r4r��r)r)cSr9rr�r�rrrr�{r�z
(?m)^\s*?$z	foo


bar)r�)r�r)rV)r�r�r&r)r�rcr+r�r>rrr�test_more_zerowidthrs
�����zRegexTests.test_more_zerowidthcCs4|�t�dd�gd��|�t�dd�gd��dS)Nz\Ru


…

)rirP��r��…u
u
s\Rs


�)s
rb���
r�r>rrr�test_line_ending~s�zRegexTests.test_line_endingr)�rrrrwrtr�r�r�r�r�r�r�r�r_rmr�r�r�r�r�r�r�r�r�r�r�r��DUPLICATE_GROUP�
CANT_TURN_OFFr6r'r.r?rDrerhrjrurxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr r$r8r9r<r>rDrGrMrOr^r`rerirnrqrurvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr&r'r*r+r,r.r2r3r;r>r?r@rWr\r`rtrrr
r"r,r5rGr�r�r�r�r�r�r�rMrTrUrWr^rrrrrs(
9	3
%!X
			"9
b:	0*6Md	6BG+L5XrcCstjdd�dS)Nr�)�	verbosity)�unittest�mainrrrr�	test_main�rrd�__main__)�weakrefrr�r<r)r	r�rbrArrFr�TestCaserrdrrrrr�<module>sb
�