Python:正则表达式匹配还是条件?

时间:2013-11-13 08:07:08

标签: python regex

我有一个像{string}{string}{string}这样的字符串,我可以通过

解析
import re
input_string = '{string}{string}{string}'
for match in re.finditer(r'{([^}]*)}', input_string):
     print str(match.group(0)) #outputs {string}

但我也希望在大括号之后用asterick捕捉字符串。

input_string = '{string}{string}*{string}{string}*'

如何修改正则表达式以便捕获{string}{string}*

我尝试过r'{([^}]*)}|*',但似乎没有工作。

另外,如果字符串包含大括号怎么办?恩。 {string{3}}如何确保只捕获外部{}而不是内部?

1 个答案:

答案 0 :(得分:1)

在正则表达式的末尾添加\*?以匹配可选的*

import re
input_string = '{string}{string}*{string}{string}*'
for match in re.finditer(r'{([^}]*)}\*?', input_string):
     print str(match.group(0)) #outputs {string}

输出:

{string}
{string}*
{string}
{string}*

对于嵌套括号,简单的正则表达式无法解析它。您可以为此使用递归正则表达式,但它变得不可读(example)。您应该使用正确的解析库,更多讨论和示例here