我想正则匹配字符串中的任何字母/数字/下划线字符以及双冒号,如果第一个单词包含"Blue"
例如,
Blue Red Yellow //return Red
Blue Red::Orange Yellow //return Red::Orange
Purple Red Yellow //return nothing
Blue R_E_D //return R_E_D
Red Blue //return nothing
Blue.ish Yellow //return Yellow
我尝试了/BluS+s+(w+)/
,它适用于除::
以外的所有情况。我如何在检查w+
以匹配双冒号以及如果存在而无需强制我的正则表达式仅匹配如果有::
存在后添加匹配。
您可以使用捕获组并重复单词char或:
^BluebS*h+([w:]+)
模式匹配:
^
或者如果没有开始使用b
BluebS*
匹配字Blue
和可选的非空白字符h+
匹配1+空格([w:]+)
捕获组1中的1+字字符或:
Regex演示
或者使用K
清除匹配缓冲区:
^BluebS*h+K[w:]+
Regex演示
如果单词不能以冒号开头,但中间应该有::
,Bluebird
也应该匹配,如@ikegami:
bBlueS*h+Kw+(?:::w+)*
Regex演示