Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果找到其他字符,则忽略结束字符(在代码中查找范围) 我正在尝试如何在C++中使用正则表达式来创建更高级的东西,比如创建自己的编码语言(只是为了好玩),我在读取代码的范围方面有点问题。_C++_Regex_Scope - Fatal编程技术网

如果找到其他字符,则忽略结束字符(在代码中查找范围) 我正在尝试如何在C++中使用正则表达式来创建更高级的东西,比如创建自己的编码语言(只是为了好玩),我在读取代码的范围方面有点问题。

如果找到其他字符,则忽略结束字符(在代码中查找范围) 我正在尝试如何在C++中使用正则表达式来创建更高级的东西,比如创建自己的编码语言(只是为了好玩),我在读取代码的范围方面有点问题。,c++,regex,scope,C++,Regex,Scope,我现在用这个文本来测试我的正则表达式 private char test; public static int foo = 0; private int var = 0; private void run(char data, int add) { var += 50 + add; print (var + test, asdm, asf.getString()); if (var == 70) { print("yes"); } }

我现在用这个文本来测试我的正则表达式

private char test;
public static int foo = 0;
private int var = 0;
private void run(char data, int add) 
{
     var += 50 + add;
     print (var + test, asdm, asf.getString());
     if (var == 70) {
        print("yes");
     }
}
我用来读取run的作用域的正则表达式和其中的if语句

\{([\S\s]*?)\}
这就是它匹配的atm

{
    var += 50 + add;
    print (var + test, asdm, asf.getString());
    if (var == 70) {
        print("yes");
    }
问题是它在实际需要的}之前找到一个},我想知道是否有办法绕过这个问题,将每个单独的作用域作为它自己的一部分来捕获


我曾尝试过处理环回,但我一直得到错误“表达式包含不匹配的(and)”,即使它应该是有效的正则表达式。EdEx,我发现C++版本的ReGEX(默认的一个)不支持查找,这就是为什么它不能工作。

正则表达式不能匹配平衡表达式,除非它有一些ReExp引擎的递归扩展。SCNR:如果你正在创建一个语言,你应该使用一个类似于<代码> BISO/<代码>的语法分析器生成器。正则表达式可以识别单个标记,但您应该使用语法来识别语言的大规模结构。我已经快速查看了bison,但它似乎需要一个预定义的语法文件来解析代码,并且每次都需要一个新的语法文件。。等我有时间再看一下。