我正在尝试创建两个单独的正则表达式,它们捕获字符串的两个特定部分:
示例字符串:3027-20171110020655-test-5
3027-20171110020655-test-5
我需要捕捉第一个:3027和第二个:test-5,第二个组可能并不总是有连字符。
3027
test-5
到目前为止,我已经创建了:[^\-]+,它创建了4个单独的捕获组--我不知道如何进一步缩小它的范围。
[^\-]+
发布于 2017-11-13 15:50:29
添加^令牌以标记字符串的开头:
^
^[^\-]+
然后,根据输入的格式化方式,您不需要单独的regex,只需使用括号(())将要捕获的内容放入捕获组即可。
()
^([^\-]+)-\d+-(.*)
测试它这里
发布于 2017-11-13 15:57:39
可以使用否定式字符类和锚点使用此正则表达式:
^([^-]+)-[^-]*-([^-]+)(?:-([^-]+))?$
最后一组是可选匹配的。
RegEx演示
https://stackoverflow.com/questions/47268277
相似问题