匹配名称加上最后一个分隔符(除

时间:2019-07-10 18:09:24

标签: regex

让我们假设在一个文本文件中有很多行,每个行包含多个以“;”开头的名称。除姓氏(不以其结尾)之外的定界符。 我们可以使用以下正则表达式:

^(\w+;)+$  // Not good

以前的正则表达式将不起作用,因为它会强制使用姓氏,因此整行都以“;”结尾也

1 个答案:

答案 0 :(得分:2)

您可以在其后添加匹配的单个\w+。如果不需要捕获组,则可以使其不捕获。

这样,您将重复匹配的单词字符,后跟;,并以单词字符结束匹配。

^(?:\w+;)+\w+$

说明

  • ^字符串的开头
  • (?:非捕获组
    • \w+;匹配1个以上的字符字符,后跟;
  • )+关闭非捕获组并重复1次以上
  • \w+匹配1个以上的字符字符
  • $字符串结尾

Regex demo

如果单个单词也应匹配,则可以使用*而不是+重复0+组

^(?:\w+;)*\w+$

Regex demo