Python 正则表达式:匹配同一未知子字符串的两个匹配项

Python 正则表达式:匹配同一未知子字符串的两个匹配项,python,regex,string,Python,Regex,String,我正在尝试编写一个正则表达式来匹配字符串中两个出现的未知子字符串 例如: 11=11 /代码>应该是有效的,因为11在中间出现两次等号。code>ashg=hgasfa也有效,因为hg出现两次'或1=1'应有效 更具体地说,在我的项目中,我试图匹配所有字符串数据,其中等号的两侧包含相同的字符串 我记得在修改甚至编写精彩的文本片段时使用了变量,如$1或$2。如何实现此功能?我可以像*$1=$1.*那样编写正则表达式吗?这甚至可以用正则表达式实现吗?您需要使用反向引用(如\1)来引用特定组索引中的

我正在尝试编写一个正则表达式来匹配字符串中两个出现的未知子字符串

例如:<代码> 11=11 /代码>应该是有效的,因为11在中间出现两次等号。code>ashg=hgasfa也有效,因为

hg
出现两次<由于
1
出现两次,因此code>'或1=1'应有效

更具体地说,在我的项目中,我试图匹配所有字符串数据,其中等号的两侧包含相同的字符串



我记得在修改甚至编写精彩的文本片段时使用了变量,如
$1
$2
。如何实现此功能?我可以像
*$1=$1.*
那样编写正则表达式吗?这甚至可以用正则表达式实现吗?

您需要使用反向引用(如
\1
)来引用特定组索引中的字符

>>> s = 'ashg=hgasfa'
>>> re.search(r'([^=]+)=\1', s)
<_sre.SRE_Match object; span=(2, 7), match='hg=hg'>
>>> re.search(r'([^=]+)=\1', 'ashg=hgasfa').group(1)
'hg'
>>> re.search(r'([^=]+)=\1', '11=11').group(1)
'11'
>>> re.search(r'([^=]+)=\1', ' or 1=1 ').group(1)
'1'
>s='ashg=hgasfa'
>>>重新搜索(r'([^=]+)=\1',s)
>>>再搜索(r'([^=]+)=\1',ashg=hgasfa')。组(1)
“hg”
>>>重新搜索(r'([^=]+)=\1',11=11')。组(1)
'11'
>>>重新搜索(r'([^=]+)=\1','或1=1')。组(1)
'1'

上面的
([^=]+)
捕获了
=
符号之前存在的一个或多个字符(但不是
=
符号),然后正则表达式引擎检查
=
符号旁边是否存在相同的字符集。如果是,那么它将返回一个匹配对象,否则它不会返回。

您需要使用反向引用(如
\1
)来引用特定组索引中的字符

>>> s = 'ashg=hgasfa'
>>> re.search(r'([^=]+)=\1', s)
<_sre.SRE_Match object; span=(2, 7), match='hg=hg'>
>>> re.search(r'([^=]+)=\1', 'ashg=hgasfa').group(1)
'hg'
>>> re.search(r'([^=]+)=\1', '11=11').group(1)
'11'
>>> re.search(r'([^=]+)=\1', ' or 1=1 ').group(1)
'1'
>s='ashg=hgasfa'
>>>重新搜索(r'([^=]+)=\1',s)
>>>再搜索(r'([^=]+)=\1',ashg=hgasfa')。组(1)
“hg”
>>>重新搜索(r'([^=]+)=\1',11=11')。组(1)
'11'
>>>重新搜索(r'([^=]+)=\1','或1=1')。组(1)
'1'
上面的
([^=]+)
捕获了
=
符号之前存在的一个或多个字符(但不是
=
符号),然后正则表达式引擎检查
=
符号旁边是否存在相同的字符集。如果是,那么它将返回匹配对象,否则不会返回