捕获第一组和第三组+第四组(REGEX)

时间:2017-11-13 15:48:31

标签: regex

我试图创建两个单独的正则表达式来捕获字符串的两个特定部分:

示例字符串:3027-20171110020655-test-5

我需要先捕获:3027和第二个:test-5 第二组可能并不总是有连字符。

我到目前为止创建了:[^\-]+ 这会创建4个独立的捕获组 - 我不确定如何进一步缩小它。

2 个答案:

答案 0 :(得分:1)

添加^标记以标记字符串的开头:

^[^\-]+

然后,根据您的输入的格式,您不需要单独的正则表达式,只需将您要捕获的内容放入捕获组中,使用括号(()

^([^\-]+)-\d+-(.*)

测试here

答案 1 :(得分:0)

您可以使用否定字符类和锚点来使用此正则表达式:

^([^-]+)-[^-]*-([^-]+)(?:-([^-]+))?$

最后一组是可选匹配。

RegEx Demo