【问题标题】:Different regex output for grep, ack and rubulargrep、ack 和 rubular 的不同正则表达式输出
【发布时间】:2013-07-15 22:12:35
【问题描述】:

我想用不同的工具测试这个(<\/?)+[a-z]+(>) 正则表达式,看看我会得到什么。实际上,实验的目的是测试每个实用程序如何将结果显示回控制台。基本上它会搜索下面的 html 文档,然后匹配所有的 html 标签。令我惊讶的是,我从grepackag 得到的结果差异很大。 grep 甚至没有返回任何东西

确认

Grep

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Test</title>
    </head>
    <body>
        body and so
        df
        s;kl,
        <p>Hello code kit</p>
        <p>Thats pretty great</p>
        <p>Really neat!</p>
        <p>I wanna be a developer for life</p>
        <nav>
             breeee!
        </nav>
        I am in love 
        <p>Ummmmmm!</p>
        wtf
        okay buddy!
        <p>
            I took that shit out
        </p>
        <aside>
            eeem
        </aside>
        Sometimes u really get bored
    </body>
</html>

为了理智,我继续在rubular 和中提琴上进行了测试!输出就像我在 CLI 中使用 ag 时一样。所以我的问题是为什么这个简单的正则表达式的结果会因使用的工具而异

【问题讨论】:

    标签: regex grep ack


    【解决方案1】:

    您需要为grep 使用扩展正则表达式才能在这种情况下工作。添加-E 标志。在这种情况下,我对所有三个工具的输出几乎相同:

    【讨论】:

    • 哦,我明白了。我将 grep 切换为具有 -E 标志并且它起作用了。无论如何,您对 grep 使用什么颜色设置。不过,Ack 的行为仍然很奇怪。只匹配一半。
    • 哦,抱歉 - 我忘了我有一个别名可以将 --color 添加到 grep
    • ack 由于 ack 中的错误,“仍然表现得很奇怪”。请参阅下面的答案。
    【解决方案2】:

    恭喜。您在 ack 中发现了一个错误。显然 ack 正在着色两个捕获组而不是整个匹配字符串。

    我在 GitHub 中为它创建了一个错误报告:https://github.com/petdance/ack2/issues/304

    感谢您报告此事,尽管这不是您的本意。 :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多