Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在Python中查找模式的正则表达式_Python_Regex - Fatal编程技术网

用于在Python中查找模式的正则表达式

用于在Python中查找模式的正则表达式,python,regex,Python,Regex,我在调整正则表达式公式以满足我的需要时遇到了问题 我想找到一种模式: AxxHxxxAxxHxxxbbbbbAxxHxxxAxxHxxx 但不是: AxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxx 如果我使用: "(A\w{2}H\w{3}){2,4}.+(A\w{2}H\w{3}){2,4}" 两者都会找到。我尝试通过以下方式排除AxxHxxx的长距离重复: "(?!(A\w{2}H\w{3}){8})(A\w{2}H\w{

我在调整正则表达式公式以满足我的需要时遇到了问题

我想找到一种模式:

AxxHxxxAxxHxxxbbbbbAxxHxxxAxxHxxx
但不是:

AxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxxAxxHxxx
如果我使用:

"(A\w{2}H\w{3}){2,4}.+(A\w{2}H\w{3}){2,4}"
两者都会找到。我尝试通过以下方式排除AxxHxxx的长距离重复:

"(?!(A\w{2}H\w{3}){8})(A\w{2}H\w{3}){2,4}.+(A\w{2}H\w{3}){2,4}"
但它实际上不起作用。你们中有谁有办法解决这个问题吗?因为我将在大数据集上操作,所以我希望最好避免使用拼接字符串之类的循环地狱

提前谢谢

编辑:

由于大家对另一组示例感兴趣,我将尝试更详细地解释我试图实现的目标

我想在单个字符串中找到一个片段,该片段由两个重复和一组介于两者之间的任意字符组成,例如:

.......A..H...A..H...A..H...............A..H...A..H...A..H.......................
其中,“.”是任意字符,并且有两个“A..H..”的重复模块。唯一的问题是,我不想继续重复,比如:

.......A..H...A..H...A..H...A..H...A..H...A..H......................

这似乎可以为您的测试用例生成正确的结果,但它非常难看

/^(?:A{2}H.{3})+(?:(?!A{2}H.{3})+(?:A{2}H.{3})+$/

这是你想要的吗

效率将与字符串的长度成正比


编辑:使用PCRE改进的解决方案我不知道我有多了解您的问题

为了解决你的具体问题,我想你可以用这样的方法

^(.*)\1((?!\1).)+\1{2}$

检查

第一个字符串和第二个字符串之间的区别是什么?BBB可以有什么格式。它可以从A或H开始吗?两个重复模块(“AxxHxxx”*2)被“BBB”中断。我希望正则表达式只查找被一定数量的字符打断的字符串。是的,它可以是任何字符串,除了另一个重复的“axxxxx”。@MateuszK您能给出另一组示例吗?我找不到你使用的规则。