代码之家  ›  专栏  ›  技术社区  ›  Codemonkey

可以在grep regexp中重复匹配吗?

  •  1
  • Codemonkey  · 技术社区  · 7 年前

    我使用的是:

    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
    

    我甚至不知道这是否可能,更不用说怎么做了。它是?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   RomanPerekhrest    7 年前

    第一个捕获的组应指定为 \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