正则表达式匹配另一个字符串后面的字符串

时间:2016-12-07 02:47:06

标签: regex

假设我有字符串"hello hello hello goodbye"

我如何在python中创建一个仅与hello之前找到的最后goodbye匹配的正则表达式?

1 个答案:

答案 0 :(得分:1)

"hello(?= goodbye)"可以完成这项工作,最后一部分是一个积极的前瞻性的'这要求随附的文本立即跟随,以使比赛有效。

编辑:澄清说“你好”之间可能有额外的文字。并且'再见',这应该有效:".*(hello).*?goodbye"。请注意,在这种情况下,找到了'hello'是第1组,而不是整个匹配,所以使用这个正则表达式的代码会有点不同。关键点在于开始时.*是一个贪婪的比赛;它最初匹配整个字符串,然后逐个字符地进行备份,以试图找到“你好”。这样做的结果是,如果你的字符串中有多个hello / goodby,那么正则表达式只匹配最后一个;你无法使用re.findall()(例如)来查找所有内容。