我试图在两个选择器之间搜索一个或多个可变子字符串" {"和"}"使用正则表达式。如果找到多个,则输出应为列表。
以下是字符串的示例:
mystring = "foofoofoo{something}{anything}foofoofoo"
这是我使用的正则表达式:
re.findall(r"^.*(\{.*\}).*$", mystring)
但它给了我以下输出:{anything}
我已尝试使用r"(\{.*\})"
并返回{something}{anything}
这几乎不错,除非它不是列表。
有什么想法吗?
答案 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)
让你的*
非贪婪。