【问题标题】:Unix egrep command how to create a pattern to match the following?Unix egrep 命令如何创建匹配以下的模式?
【发布时间】:2014-04-17 17:21:03
【问题描述】:

我想问一下 egrep 中的反向引用。

我有一个文件,它包含:

aaaa someothertext

还有 77 77 之类的东西

如何使用反向引用来匹配模式“aaaa”和“77 77”?

我试过了:

egrep '(aa )\1' file.txt

它会匹配“aaaa”。然后。我尝试将 'aa' 替换为 ' ([a-zA-Z0-9])\1',结果如下:

egrep '(([a-zA-Z0-9])\1 )\1' file.txt

这行不通。

如果您能提供帮助,我将不胜感激!

【问题讨论】:

    标签: regex unix command-line grep pattern-matching


    【解决方案1】:

    请记住,捕获组由它们的左括号索引:您在定义之前调用了第一个组。

    ((a)b) 中,\1 指的是(a)b\2 指的是a

    要解决此问题,您可以使用正确的索引:

    (([a-zA-Z0-9])\2 )\1
    

    【讨论】:

    • 不清楚模式是“xx xx”还是“xx xx”。如果要匹配第一个,则为((a-zA-Z0-9])\2) \1
    • @Robin 谢谢!现在我明白了 \n 是什么意思......完全!
    • 很高兴我能帮上忙。 @MarkLakata:是的。由于第一个示例 ((aa )\1) 似乎完成了这项工作,但我没有修改正则表达式。
    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多