正则表达式,匹配3组,第二组和第三组可能是可选的

时间:2016-03-22 11:05:06

标签: javascript regex

鉴于我有一个字符串:Sebastian New York Canal st : Dinner at 5 c'clock. 其中:

  • 塞巴斯蒂安是第一场比赛
  • 纽约运河st 秒(可能有很多空格和点)
  • 晚餐5点。第三(可能有很多空格和点)

在第2组和第3组之间我有冒号将这些组分开。

我写了正则表达式:https://regex101.com/r/iI6kN8/1

([A-Za-z0-9]+)?([A-Za-z0-9 ]+)?(:\ ([A-Za-z0-9'. ]+))

当我有3组时它会起作用:

enter image description here enter image description here

但是当我有:

  • Sebastian New York Canal st

  • Sebastian

2 个答案:

答案 0 :(得分:1)

使第3组可选:

sed -i -e 's/\\citet/\\citep/g'

https://regex101.com/r/zW1oM6/2

答案 1 :(得分:1)

试试这个正则表达式

/^(\w+)(?:(.+?(?=:|$))\:?(.*)?)/m

请参阅DEMO