2

我正在尝试制作一个小程序,它会告诉 mi 哪些文件是,哪些文件不包含在我的应用程序中。我尝试使用这个正则表达式:

#include (<|")([^\r\n;#">]*)(>|")

它工作得很好,但它也会得到错误的输出:

#include <stdio.h"

这在 C 编译器中是不可能的。所以问题是:有人知道如何正确编辑我的正则表达式吗?请帮忙。

4

3 回答 3

3
#include (?:<([^\r\n;#">]*)>|"([^\r\n;#">]*)")

所以不是接受[<"]x[>"]你接受<x>"x"例子

于 2012-08-11T12:28:59.290 回答
1

我尝试了不同的方式,但似乎没有简单的方法,至少我没有看到。

  1. #include (<|")([^\r\n;#">]*)(\1)
    是的,这真的很好"cstdio",也不是<cstdio>。失败。
  2. #include (<(?=[^\r\n;#">]*>)|"(?=[^\r\n;#">]*"))([^\r\n;#">]*)(>|")
    这里我们检查是否<通过"匹配符号转发。重的。
  3. #include (<[^\r\n;#">]*>|"[^\r\n;#">]*")
    只需检查这两种情况,如果我们有<...>or "..."

等待更好的答案,我也很感兴趣。有点我在想,这已经很好了。

PS:在情况 2 和 3 中,我们最好保存[^\r\n;#">]*在单独的字符串中并连接到正则表达式的其他部分。

于 2012-08-11T12:41:04.150 回答
0
#include\s{1,}(<|\")[^(>&\")]*(>|\") 
于 2012-08-11T12:55:15.970 回答