【问题标题】:Include parser regex包括解析器正则表达式
【发布时间】:2012-08-11 12:16:10
【问题描述】:

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

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

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

#include <stdio.h"

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

【问题讨论】:

    标签: c regex string text include


    【解决方案1】:
    #include (?:<([^\r\n;#">]*)>|"([^\r\n;#">]*)")
    

    所以不是接受[&lt;"]x[&gt;"],而是接受&lt;x&gt;"x"Example.

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:
        #include\s{1,}(<|\")[^(>&\")]*(>|\") 
        

        【讨论】:

        • 虽然这在库名称上可能更准确一些,但这根本不能解决 &lt;foo" 问题。
        猜你喜欢
        • 2011-01-08
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        相关资源
        最近更新 更多