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

Python - Match substring occurrences between { } with regex

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

这里是一个字符串的例子:

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

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

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

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

我试过 r"(\{.*\})" 并且它 returns 我 {something}{anything} 这几乎是好的,除了它不是一个列表。

有什么想法吗?

从您的正则表达式中删除锚点和 .* 以允许它从 { 捕获到 }:

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

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

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

让你的 * 不贪心。