Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Regex VS2008中正则表达式搜索中的堆栈溢出_Regex_Visual Studio_Cobol - Fatal编程技术网

Regex VS2008中正则表达式搜索中的堆栈溢出

Regex VS2008中正则表达式搜索中的堆栈溢出,regex,visual-studio,cobol,Regex,Visual Studio,Cobol,我试图在一个巨大的COBOL文件中找到是否所有的“if”都有一个对应的“END-if”。 使用VisualStudio2008,我知道它有一个带有正则表达式功能的搜索工具。(不过,读了杰夫·阿特伍德(Jeff Atwood)的文章后,我知道Visual Studio中的正则表达式与真实交易并不完全相同。) 不管怎样,我想出了这个表达: <(IF)#(.*\n*)#END-IF\n 我想知道是否所有的“如果”都有一个结束“如果结束” 谢谢 这里的例子是尝试使用正则表达式执行递归解析,通常这

我试图在一个巨大的COBOL文件中找到是否所有的“if”都有一个对应的“END-if”。 使用VisualStudio2008,我知道它有一个带有正则表达式功能的搜索工具。(不过,读了杰夫·阿特伍德(Jeff Atwood)的文章后,我知道Visual Studio中的正则表达式与真实交易并不完全相同。)

不管怎样,我想出了这个表达:

<(IF)#(.*\n*)#END-IF\n
我想知道是否所有的“如果”都有一个结束“如果结束”

谢谢


这里的例子是尝试使用正则表达式执行递归解析,通常这会给您带来麻烦。 正如我所读到的(当然,我不熟悉这里Visual Studio使用的风格),您的正则表达式尝试匹配尽可能多的行,直到找到一个END-IF——包括匹配另一个END-IF。 换句话说,当面对

IF condition-1
    statement-1
END-IF
IF condition-2
    statement-2
END-IF
找到一个匹配项,而不是两个

另外,考虑一下您希望如何处理此案例:

IF condition-1
    IF condition-2
        statement-1
    END-IF
END-IF

除非您试图编写自己的语言转换器或COBOL lint工具,否则我认为您可以满足于编译器将找到匹配的END IF,或在段落末尾标记未关闭的IF。

StackOverflow中的Stack overflow!这很讽刺