从python中的字符串中使用正则表达式提取括号

时间:2011-12-16 20:15:39

标签: python regex wikipedia brackets

如果我们只知道“模板”,如何从此字符串中提取{{template | {{template2}} | other params}}:

{{template0}}
{{template|{{template2}}|other params}}
{{template3}}

1 个答案:

答案 0 :(得分:2)

这应该做你想要的:

>>> match = re.search(r'^{{template\b.*$', your_string, re.M)
>>> match.group()
'{{template|{{template2}}|other params}}'

它在'模板'之后使用单词边界(\b),因此它不匹配'template0'或'template3'。使用了re.M选项,因此^$将匹配行的开头和结尾,而不是字符串的开头和结尾。

编辑:从评论中为换行案例尝试以下正则表达式:

r'^{{template\b(?:[^}]\n+|\n+[^{]|.)*$'

无论您将换行符放在|之前还是之后,这都应该有效。

编辑2 非常重要的正则表达式问题,您可以预先指定输入的内容。这是另一个版本,与您最新评论中的文字一起使用:

r'^{{template\b(?:[^}\n]\n+|\n+[^{\n]|.)*}}$'

现在它会正确处理多个换行符,最后我添加了}},以防你的匹配是其他格式的行之前的最后一个括号组。