正则表达式替换文本,除非它前面有反斜杠而不使用后视

Regex replacing text unless it's preceeded with backslashes without the usage of look-behind

我有这种情况,我试图使用正则表达式替换文本块中的一堆标签,但是我也希望允许用户转义任何标签。

注意:我想避免向前看/向后看,因为 Safari 不支持它

实例:https://regex101.com/r/mDGs3C/1

Welcome {{ PLAYER_NAME }} to the event

使用应该呈现的替换

Welcome Richard to the event

为此我使用了以下正则表达式,它似乎工作正常。

/{{\s*PLAYER_NAME\s*}}/gm

不过我也想要能够越狱的能力,所以下面

Welcome {{ PLAYER_NAME }} to the event, you can use tags in here such as \{{ PLAYER_NAME }}

我想输出为...

Welcome Richard to the event, you can use tags in here such as {{ PLAYER_NAME }}

所以我尝试在我的正则表达式的开头使用以下内容来声明我不希望它匹配包含双反斜杠的内容。

/[^\]{{\s*PLAYER_NAME\s*}}/gm

这几乎行得通,但是在某些情况下它会切断前一个单词的最后一个字母,看看我的例子,看看 e 被切断了 welcome

https://regex101.com/r/mDGs3C/1

捕获非斜线并将它们放回替换中:

Operation Parameter
Search ([^\])\{\{\s*PLAYER_NAME\s*}}
Replace Richard