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

标签 python regex string match

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

这是字符串的示例:

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/

相关文章:

python - 如何根据特定字符在所述列表的第一个成员中出现的位置从列表中的每个字符串中删除字符?

python - 如何在 Django 中正确设置多个项目的环境设置?

python - 绘制 CNN 模型的 ROC 曲线

java - String.split 是如何工作的?

java - 将模式与 java 中的正则表达式进行匹配

java - 在具有边缘空间的字符串列表中查找字符串

python - 使用 memcached.sock 路径连接到 python-memcached

python - 具有 3 个电阻值的公差叠加组合

php删除无效字符

python - 为什么我的字符串比较认为 '100%' < '70%' ?