正则表达式将第一组与“-”匹配

时间:2020-11-10 07:21:08

标签: regex

我有2个不同的单词:

BB50AR-B0N5-001-UNI
F361424500

在第一种情况下,-在这里,我希望第一个组为BB50AR-B0N5-001,即最后一个组不应该来

在第二种情况下-不存在的情况下,我希望第一组为F361424500

我的尝试:

([\w]+)([-]?)(.*?)($)

上面的正则表达式给出相反的含义

2 个答案:

答案 0 :(得分:3)

您可以使用:^(.+?)(?:-[^-]+?)?$

使用:

  • ^:字符串的开头
  • (.+?):捕获组,具有:
    • .+?:任意字符,一次或无限次,非贪婪
  • (?:-[^-]+?)?:0或1次非捕获组,具有:
    • -[^-]+?:一个--以外的任何内容(一次或无限次),非贪婪
  • $:字符串的结尾

示例:https://regex101.com/r/D55yEL/3/

答案 1 :(得分:3)

也许这两个选项之一可以帮助您。如果您的模式始终是两个相同的字符串:

^\w+(-\w+){0,2}

检查在线demo

或者如果您只是想排除字符串的最后部分(如果定界的话):

^\w+$|.+(?=-)

检查在线demo