我想用正则表达式匹配字符串中的任何字母/数字/下划线字符以及双冒号,如果第一个单词包含“蓝色”。
例如,
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
我试过/Blu\S+\s+(\w+)/
,它对除了::
之外的所有情况都有效。我如何在检查w+
后添加一个匹配,以匹配双冒号,如果存在的话,而不必强制我的正则表达式只匹配::
。
1条答案
按热度按时间kxe2p93d1#
可以 使用 捕获 组 并 重复 单词 char 或
:
中 的 每 一 个
模式 匹配 :
^
或 使用\b
( 如果 不在 开始 位置 )Blue\b\S*
匹配 单词Blue
和 可选 的 非 空格 字符\h+
匹配 1 个 以上 空格([\w:]+)
捕获 组 1 中 的 1 + 个 字 字符 或:
Regex demo 的 最 大 值
或者 使用
\K
清除 匹配 缓冲 区 :格式
Regex demo 格式
如果 单词 不能 以 冒号 开头 , 但 应该 在 冒号 和
Bluebird
之间 有::
, 并且Bluebird
也 应该 匹配 , 如 注解@ikegami 所 示 :格式
Regex demo 格式