包括解析器正则表达式

时间:2012-08-11 12:16:11

标签: c regex string text include

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

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

它运作良好但输出错误也是错误的:

#include <stdio.h"

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

3 个答案:

答案 0 :(得分:3)

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

因此,您接受[<"]x[>"]<x>,而不是接受"x"Example

答案 1 :(得分:1)

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

  1. #include (<|")([^\r\n;#">]*)(\1)
    是的,这对"cstdio"非常合适,<cstdio>也没有。失败。
  2. #include (<(?=[^\r\n;#">]*>)|"(?=[^\r\n;#">]*"))([^\r\n;#">]*)(>|")
    在这里,我们检查是否通过匹配符号转发<"。重。
  3. #include (<[^\r\n;#">]*>|"[^\r\n;#">]*")
    如果我们有<...>"..."
  4. ,请检查这两种情况

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

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

答案 2 :(得分:0)

#include\s{1,}(<|\")[^(>&\")]*(>|\")