首页 > 解决方案 > 匹配名称与分隔符连接,除了最后一个

问题描述

假设我们在一个文本文件中有很多行,每行包含多个名称,并用“;”连接。除姓氏以外的分隔符(不以它结尾)。我们可以使用以下正则表达式:

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

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

标签: regex

解决方案


您可以在其后添加匹配的单曲\w+。如果您不需要捕获组,则可以将其设为非捕获。

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

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

解释

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

正则表达式演示

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

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

正则表达式演示


推荐阅读