我想制作一个小程序,它会告诉我哪些文件是哪些文件不包含在我的应用程序中。我试图用这个表达式:包括解析器正则表达式
#include (<|")([^\r\n;#">]*)(>|")
它的工作好,但它也得到错误的输出是正确的:
#include <stdio.h"
这是C编译器是不可能的。 所以问题是:有人知道如何正确编辑我的正则表达式吗?请帮忙。
我想制作一个小程序,它会告诉我哪些文件是哪些文件不包含在我的应用程序中。我试图用这个表达式:包括解析器正则表达式
#include (<|")([^\r\n;#">]*)(>|")
它的工作好,但它也得到错误的输出是正确的:
#include <stdio.h"
这是C编译器是不可能的。 所以问题是:有人知道如何正确编辑我的正则表达式吗?请帮忙。
#include (?:<([^\r\n;#">]*)>|"([^\r\n;#">]*)")
因此,而不是接受[<"]x[>"]
您接受<x>
或"x"
。 Example。
我尝试用不同的方式,但似乎没有简单的方法,至少我没有看到这一点。
#include (<|")([^\r\n;#">]*)(\1)
"cstdio"
,既不<cstdio>
真的没事。失败。#include (<(?=[^\r\n;#">]*>)|"(?=[^\r\n;#">]*"))([^\r\n;#">]*)(>|")
<
或"
是否通过匹配符号转发。重。#include (<[^\r\n;#">]*>|"[^\r\n;#">]*")
<...>
或"..."
。等待更好的答案,我很感兴趣了。我在想,这会好起来的。
P.S:在情况2和3,我们应该更好地节省[^\r\n;#">]*
在一个单独的字符串CONCAT对正则表达式的其他部分。
#include\s{1,}(<|\")[^(>&\")]*(>|\")
虽然这可能对库名称更准确一些,但这根本不能解决''问题。 –
poke
2012-08-11 13:01:12