我的正则表达式无法正常工作。我告诉你before regex text
和after regex text
。我正在使用此正则表达式re.search(r'(?ms).*?{{(Infobox film.*?)}}', text)
。您将看到我的正则表达式未在| country = Assam, {{IND
之后显示结果。我的正则表达式在这一点上停滞不前。你能帮帮我吗?感谢
在正则表达式之前:
{{Infobox film | name = Papori | released = 1986 | runtime = 144 minutes | country = Assam, {{IND}} | language = [[Assamese language|Assamese]] | budget = | followed by = free }}
正则表达式后:
{Infobox film | name = Papori | released = 1986 | runtime = 144 minutes | country = Assam, {{IND
为什么正则表达式在此时陷入困境? country = Assam, {{IND
编辑:期待结果
Infobox film | name = Papori | released = 1986 | runtime = 144 minutes | country = Assam, {{IND}} | language = [[Assamese language|Assamese]] | budget = | followed by = free
答案 0 :(得分:2)
你的正则表达式正在捕捉第一个{{
和第一个}}
之间的所有内容,它位于信息框的“国家/地区”条目中。如果您想要在第一个{{
和最后一个 }}
之间的所有内容,那么您希望通过删除{{1}来使大括号内的.*
变得贪婪}:
?
请注意,这会在输入中找到 last re.search(r'(?ms).*?{{(Infobox film.*)}}', text)
(例如,如果有另一个模板远远低于信息框的末尾,它会找到结束),所以这可能不是你想要的。当您嵌套这样的东西时,正则表达式并不总是最好的搜索方式。