示例正则表达式:
/^([\w]+:)?other:(.*)$/
示例字符串:
test:other:words...
第一组匹配“test:”,但我希望它只捕获“test”。起初我想:
/^([\w]+)?:?other:(.*)$/
但我意识到我不能在一开始就有一个:。如何捕获一个如果存在必须以:结尾的组,但该:不能被该组捕获?
输入和输出示例:
randomString:constantString:somethingElse
应该将'randomString'作为第一组。
和
constantString:somethingElse
应该将第一组视为空
答案 0 :(得分:2)
如果您希望您的第一个单词是可选的,请使用:
/^(?:(\w+):)?other:(.*)$/
此正则表达式将\w+:
作为非捕获组作为一个整体,并使其成为可选项。此外,它还使用内部捕获组来捕获\w+
部分。
因此,如果\w+:
存在,则组1包含\w+
部分,否则它包含空字符串。
答案 1 :(得分:1)