【问题标题】:Is it possible to repeat a match in a grep regexp?是否可以在 grep 正则表达式中重复匹配?
【发布时间】:2018-04-28 17:38:45
【问题描述】:

我正在使用这个:

grep '\s[A-Z]+\s[A-Z]+\s' file.txt -Po

哪个会匹配

 ABC DE
 AB AB
 DEF GHIFOO

我想要做的是类似的事情

grep '\s([A-Z]+)\s%1\s' file.txt -Po

只匹配

 AB AB
 BC BC
 DDD DDD

等等

我什至无法解决,更不用说如何解决了。是吗?

谢谢

【问题讨论】:

    标签: linux grep pcre


    【解决方案1】:

    第一个捕获的组应指定为\1 而不是%1

    示例file.txt:

    AA AB
    AB AB
    BC BC
    DDD DDD
    NN WN
    

    考虑更新的正则表达式模式:

    grep -Po '\b([A-Z]+)\s\1\s*' file.txt
    

    输出:

    AB AB
    BC BC
    DDD DDD
    

    奖励相反行动的方法:

    grep -Po '\b([A-Z]+)\s(?!\1)[A-Z]+\s*' file.txt
    

    输出:

    AA AB
    NN WN
    

    【讨论】:

    • @Codemonkey,你得到了奖金方法
    猜你喜欢
    • 2017-02-09
    • 2021-02-16
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多