正则表达式以匹配可选组

时间:2020-03-12 03:14:50

标签: regex regex-group

我正在尝试编写一个正则表达式来匹配三组,而我在三组中我希望一组是可选的。

正则表达式:

^[A-Z]{1,4}-[0-9]{1,4}:\s(\w*)\((\w*)\)*:\s(.*)$

它符合以下条件:

AAAA-1235: fix(test): message 

但是,不在下面。

AAAA-1235: fix: message 

如何修改正则表达式,使其与两个组都匹配。万一第一个消息得到三个小组。

  • 修复
  • 测试
  • 消息

如果有第二条消息,则只有两组

  • 修复
  • 消息

消息

1 个答案:

答案 0 :(得分:0)

您不是将组设为可选,只是将组末尾的)设为可选。您需要将()放在整个组中,而不仅仅是括号中的部分。

此外,要使某些内容可选,请使用?*表示允许任意数量的重复,包括0。

^[A-Z]{1,4}-[0-9]{1,4}:\s(\w*)(\(\w*\))?:\s(.*)$

DEMO