我的正则表达式无法正常工作

时间:2011-11-06 19:10:21

标签: python regex

我的正则表达式无法正常工作。我告诉你before regex textafter 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

1 个答案:

答案 0 :(得分:2)

你的正则表达式正在捕捉第一个{{和第一个}}之间的所有内容,它位于信息框的“国家/地区”条目中。如果您想要在第一个{{最后一个 }}之间的所有内容,那么您希望通过删除{{1}来使大括号内的.*变得贪婪}:

?

请注意,这会在输入中找到 last re.search(r'(?ms).*?{{(Infobox film.*)}}', text) (例如,如果有另一个模板远远低于信息框的末尾,它会找到结束),所以这可能不是你想要的。当您嵌套这样的东西时,正则表达式并不总是最好的搜索方式。