我正在尝试使用正则表达式在两个选择器“ {”和“}”之间搜索一个或多个变量子字符串的出现。如果发现多个,则输出应为列表。
这是string的示例:
mystring = "foofoofoo{something}{anything}foofoofoo"
这是我使用的正则表达式:
re.findall(r"^.*(\{.*\}).*$", mystring)
但是它给了我以下输出:
{anything}
我已经尝试过
r"(\{.*\})"
,它返回我{something}{anything}
,除了它不是列表,这几乎很好。任何想法?
最佳答案
从正则表达式中删除锚点和.*
,以使其仅从{
捕获到}
:
>>> mystring = "foofoofoo{something}{anything}foofoofoo";
>>> re.findall(r"(\{[^}]*\})", mystring);
['{something}', '{anything}']
要从匹配项中跳过
{
和}
,请使用捕获的组:>>> re.findall(r"\{([^}]*)\}", mystring);
['something', 'anything']