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)
让你的 *
不贪心。
我正在尝试使用正则表达式在两个选择器“{”和“}”之间搜索一个或多个可变子字符串。如果找到多个,输出应该是一个列表。
这里是一个字符串的例子:
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)
让你的 *
不贪心。