我正在尝试使用正则表达式在两个选择器“{”和“}”之间搜索一个或多个出现的变量子字符串。如果找到多个,则输出应该是一个列表。
这是字符串的示例:
mystring = "foofoofoo{something}{anything}foofoofoo"
这是我使用的正则表达式:
re.findall(r"^.*(\{.*\}).*$", mystring)
但它给了我以下输出:{anything}
我尝试过使用 r"(\{.*\})"
,它返回给我 {something}{anything}
,这几乎很好,只是它不是一个列表。
有什么想法吗?
最佳答案
从正则表达式中删除 anchor 和 .*
以允许其仅捕获从 {
到 }
的内容:
>>> mystring = "foofoofoo{something}{anything}foofoofoo";
>>> re.findall(r"(\{[^}]*\})", mystring);
['{something}', '{anything}']
要从匹配中跳过 {
和 }
,请使用捕获的组:
>>> re.findall(r"\{([^}]*)\}", mystring);
['something', 'anything']
关于Python - 使用正则表达式匹配 { } 之间的子字符串出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28306061/