Regex 如何匹配单词开头的最后4个字符&;c使用PCRE正则表达式?

Regex 如何匹配单词开头的最后4个字符&;c使用PCRE正则表达式?,regex,Regex,我正在尝试匹配以序列&c开头的所有单词的最后四个字符(字母数字) 例如,在下面的字符串中,我想用粗体匹配这些片段: 颜色一是&cFF2AC3,颜色二是&c22DE4A 有人能帮我找到正确的正则表达式吗?我花了几个小时都没用。试试这个 /(?:^| )&c\w*(\w{4})\b/ 如果要在链接到的正则表达式测试仪中尝试,请确保使用g修饰符查看所有匹配项 说明:(?:^ |)匹配字符串的空格或开头,&c\w*匹配符号和单词的前几个字符,然后\w{4}捕获最后4个字符\b在结尾处声明一个分

我正在尝试匹配以序列
&c
开头的所有单词的最后四个字符(字母数字)

例如,在下面的字符串中,我想用粗体匹配这些片段:

颜色一是&cFF2AC3,颜色二是&c22DE4A

有人能帮我找到正确的正则表达式吗?我花了几个小时都没用。

试试这个

/(?:^| )&c\w*(\w{4})\b/
如果要在链接到的正则表达式测试仪中尝试,请确保使用
g
修饰符查看所有匹配项

说明:
(?:^ |)
匹配字符串的空格或开头,
&c\w*
匹配符号和单词的前几个字符,然后
\w{4}
捕获最后4个字符
\b
在结尾处声明一个分词符(一个“非单词”字符或字符串的结尾)。

这是:

/(?i)\s*&c(?:[a-z0-9]{2})([a-z0-9]{4})\b/

如果希望在给定文本中查找所有匹配项,请在其末尾附加一个
g
,它看起来像十六进制数字,因此请使用此模式

&c[0-9A-F]{2}\K([0-9A-F]{4}) 

这几乎可以工作,但它将捕获以
&
开头的任何单词的最后4位数字,而不是特别的
&c
/(?:^ |)和[c]*([\w]{4})\b/
与任何内容都不匹配…我更改为
/(?:^ |)和c[\w]*([\w]{4})\b/
,这应该可以工作。它将匹配
&c2AC3
,这不是什么操作wants@Smac89OP想要“所有以顺序和c开头的单词”。我认为
&c2c3
就是这样一个词。如果这不是OP想要的,那么问题应该被更新。问题在于
&c
之前的内容,
&c
和最后4个
alnum
之间的内容,以及
alnum
之后的内容。如果您不关心开头之前和结尾之后,中间是非空白,那么它就是this
&c\S*\p{Alnum}{4}
。因此,你应该填写比已知部分更重要的空格。