0

正则表达式示例:

/^([\w]+:)?other:(.*)$/

示例字符串:

test:other:words...

第一组将匹配“测试:”,但我希望它只捕获“测试”。一开始我以为:

/^([\w]+)?:?other:(.*)$/

但我意识到一开始我不能有一个:。如何捕获一个如果存在必须以:结尾的组,但是这个:不能被该组捕获?

示例输入和输出:

randomString:constantString:somethingElse

应该将“randomString”作为第一组。

constantString:somethingElse

应该将第一组设为空

4

2 回答 2

2

如果您希望您的第一个单词是可选的,请使用:

/^(?:(\w+):)?other:(.*)$/

这个正则表达式使\w+:作为一个整体的非捕获组,并使其成为可选的。此外,它还使用内部的捕获组来捕获\w+部分。

因此,如果\w+:存在,则组 1 包含\w+部分,否则它包含一个空字符串。

于 2013-09-24T18:38:39.207 回答
1

开始了:

^(?:(\w+):)?constantString:(.*)$

(?:) 是一个非捕获组

演示

于 2013-09-24T18:53:42.860 回答