代码之家  ›  专栏  ›  技术社区  ›  Eric Marceau

Grep:有没有一种特殊的方法可以将“无字符”作为“字符位置”匹配的置换?

  •  1
  • Eric Marceau  · 技术社区  · 7 月前

    这是给真正的大师们的。:-)

    假设我有一个起始字符串,称之为“ 乞求 “,以及一个结束字符串,称之为” rem “,有没有一种方法可以在以下情况下执行grep?” 无字符 “可以包括规格( 而不是“*” )作为选项,与以下命令中方括号内指定的其他字符一起使用:

    grep "${beg}"'[-_*]'"${rem}"
    

    此外,是否有方法指定模式?” - " ( 空格、连字符、空格 )而不是“ [*] “?意思是,以下任何一项(且只有一项)

    • [ - ]
    • [ _ ]
    • {无字符}
    • " - " ?

    这有可能吗?

    1 回复  |  直到 7 月前
        1
  •  1
  •   Gilles Quénot ticktalk    7 月前

    如果你想匹配你问的方式:

    文件:

    beg_rem
    beg--rem
    beg rem
    begrem
    

    代码:

    grep -E 'beg(?:-|_| |){1}rem'
    

    将匹配这些行:

    beg_rem
    beg rem
    begrem
    

    正则表达式匹配如下:

    节点 解释
    beg “乞求”
    (?: 组,但不捕捉(1次):
    - -
    |
    _ _
    |
    空间
    |
    没有什么
    ){1} 分组结束
    rem 'rem'