【发布时间】:2020-11-25 16:40:15
【问题描述】:
我想在 Python 中使用匹配 r'{.*?}' 之类的正则表达式,或者使用简单的英文花括号以及其中的所有内容。 (我只关心最外面的,想忽略里面的花括号)
这个表达式的问题在于,使用嵌套的花括号,您不会得到所有内容,因为您会在第一个右大括号处停止,即使它不是匹配的。
注意 r'{.*}' 不是解决方案,因为正在解析的文本中有不止一组匹配的外花括号。
例如,如果文本是:
struct my_struct{
double d;
struct {int i;, char c;} s;
};
我希望表达式匹配:
{
double d;
struct{int i; char c;} s;
}
任何关于如何解释嵌套花括号的指针将不胜感激。请注意,我正在寻找一个空格没有任何意义的地方。说不使用正则表达式、不使用 Python 或以不同方式处理它的解决方案没有用,因为这是更大的正则表达式表达式的一部分。
【问题讨论】:
-
不幸的是,我认为您不能仅使用正则表达式来做到这一点。你可能需要一个真正的解析器。
-
“说不使用正则表达式的解决方案......没用......”——好吧,如果正则表达式根本无法满足您的要求怎么办?
-
我怀疑正则表达式根本没有能力。如果真的不可能,提供一个证明或这种证明的来源会很好
-
@HashBr0wn 我建议阅读这个答案:stackoverflow.com/a/46334384/10785975
-
Python 的正则表达式引擎比标准的有限状态机有更多的功能,就像许多高级语言一样。但是,该帖子中的其他答案可能会有所帮助
标签: python regex curly-braces