我正在尝试用c语言编写一个小型脚本语言,目前正在做一个块解析器,我一直在为块编写正则表达式。积木可以有∞ 子块的时间
这就是我需要抓住的
{
naber();
}
{
int x = 5;
x = 2;
if (x == 5) {
x = 5;
}
}
我试过这个但不管用
\{[^{}]*|(\{[^\{\}]\})*\}
这是我的第一篇帖子,请原谅我
Regex不会帮你的。如果您正在设计一种可能要执行的脚本语言,它具有块和子块,那么您需要上下文无关语法,而不是可以通过正则表达式表达的正则语法。
要解释无上下文语言,您需要以下步骤(简化):
这些应该已经是很多需要搜索的概念了,但是所有这些都可以通过像ANTLR这样的工具轻松实现。很明显,ANTLR可能有替代品,我只是不记得有。
我同意那些说正则表达式不是你应该使用的解析代码。话虽如此,在一些reg引擎上,匹配字符并获取块中的代码是可能的。
这可能适合您{(?
这里有更多关于它的匹配平衡花括号