繁体   English   中英

正则表达式:匹配两次出现相同的未知子字符串

[英]Regex: match two occurrences of the same unknown substring

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

例如: 11=11应该有效,因为11两次出现两次,中间带有等号。 ashg=hgasfa也有效,因为hg发生两次。 ' or 1=1 '应该有效,因为1出现了两次。

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


我记得在修改Apache路由 文件甚至编写Sublime Text代码片段时使用了$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'

([^=]+)在上述捕获一个或多个字符(但不是=符号),其之前的存在是为了=用于相同的一组毗邻的字符的存在符号,然后将正则表达式引擎检查=符号。 如果是,则它将返回匹配对象,否则将不返回。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM