我试图在两个给定条件下匹配输入字符串。例如,如果我将'000011001000'
作为输入并希望通过'1001'
和'0110'
匹配,那么我需要的正则表达式是什么样的?
我尝试了不同的组合,但无法找到正确的组合。我得到的最接近的是使用
re.match("(1001.*0110)+?")
但是当输入例如'0001100100'
时,那个不起作用。
答案 0 :(得分:2)
此模式使用“look-arounds”,您应该了解正则表达式。
(?=[01]*1001[01]*)(?=[01]*0110[01]*)[01]+
回应评论:
正则表达式中的环视是检查特定条件匹配的简单方法。它本质上做的是当它碰到(?=
(还有其他诸如?!, ?<=, and ?<!
)令牌时停止当前匹配游标,并使用环视声明中的模式读取下一个字符。如果未满足该声明,则匹配失败。如果是,则原始光标继续匹配。想象一下,它是一个探测器,可以在探测器之前检查前方的环境。
如果你想要更多的参考,rexegg可能是我最喜欢的学习正则表达式语法和漂亮技巧的网站。