用于在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您能给出另一组示例吗?我找不到你使用的规则。