我需要一个RegEx来替换长字符串中以单个:
开头但不是以\:
开头的单词。
匹配::Amazing
没有匹配项:\:Amazing
我尝试了[^\\](:Amazing)
,但它也匹配了x:Amazing
我要替换字符串Hello, this is :Amazing and also \:Amazing
与Hello, this is COOL and also :Amazing
谢谢。
最佳答案
您是说:
之后不需要任何字符。您需要对此具有否定的后顾之忧:
:(?<!\S.)Amazing
\S
表示非空白字符注意:这在PHP PCRE中有效
Live demo
JavaScript不支持回溯功能(目前仅支持Google Chrome)。要在JS中也有它,您需要这样的东西:
var str = `Hello, this is :Amazing and also \\:Amazing x:Amazing`;
console.log(str.replace(/(^|\s):Amazing/g, "$1COOL"));