Python - 匹配{}与正则表达式之间的子字符串出现

时间:2015-02-03 18:24:18

标签: python regex string match

我试图在两个选择器之间搜索一个或多个可变子字符串" {"和"}"使用正则表达式。如果找到多个,则输出应为列表。

以下是字符串的示例:

mystring = "foofoofoo{something}{anything}foofoofoo"

这是我使用的正则表达式:

re.findall(r"^.*(\{.*\}).*$", mystring)

但它给了我以下输出:{anything}

我已尝试使用r"(\{.*\})"并返回{something}{anything}这几乎不错,除非它不是列表。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

从正则表达式中移除锚点和.*,以便从{}捕获:

>>> mystring = "foofoofoo{something}{anything}foofoofoo";
>>> re.findall(r"(\{[^}]*\})", mystring);
['{something}', '{anything}']

要从匹配项中跳过{},请使用已捕获的群组:

>>> re.findall(r"\{([^}]*)\}", mystring);
['something', 'anything']

答案 1 :(得分:1)

re.findall(r"({.*?})", mystring)

让你的*非贪婪。