在一个正则表达式中搜索一些替代方案

时间:2014-05-02 09:13:38

标签: regex awk

我正在尝试创建一个正则表达式,以匹配我的字符串的开头几个替代品。

  1. 如果整个字符串不包含/,则匹配^[a-zA-Z\-]
  2. 如果字符串包含/,则匹配^[\w],直到第一次出现/
  3. 的示例:

    __Gi0__/0/0/0
    __BVI__10
    

    需要返回匹配项,因此我想将其包装在()

    我试过这些

    ([a-zA-Z]+)|([\-\w]{2,}/)
    

    但它不符合第二种情况。

    有什么建议吗?

    我的awk版本是GNU Awk 4.0.0

1 个答案:

答案 0 :(得分:2)

你可以简单地这样做:

^((\w+)\/|([a-zA-Z_-]+))

第二个捕获的组包含您想要的内容。

或者如@Jenny建议的那样,你可以按照以下方式使第一组不捕获:

^(?:(\w+)\/|([a-zA-Z_-]+))

DEMO