假设我有字符串"hello hello hello goodbye"
我如何在python中创建一个仅与hello
之前找到的最后goodbye
匹配的正则表达式?
答案 0 :(得分:1)
"hello(?= goodbye)"
可以完成这项工作,最后一部分是一个积极的前瞻性的'这要求随附的文本立即跟随,以使比赛有效。
编辑:澄清说“你好”之间可能有额外的文字。并且'再见',这应该有效:".*(hello).*?goodbye"
。请注意,在这种情况下,找到了'hello'是第1组,而不是整个匹配,所以使用这个正则表达式的代码会有点不同。关键点在于开始时.*
是一个贪婪的比赛;它最初匹配整个字符串,然后逐个字符地进行备份,以试图找到“你好”。这样做的结果是,如果你的字符串中有多个hello / goodby,那么正则表达式只匹配最后一个;你无法使用re.findall()
(例如)来查找所有内容。