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



在这种情况下,我试图使用regex替换文本块中的一堆标记,但我也希望允许用户转义任何标记。

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

现场示例:https://regex101.com/r/mDGs3C/1

Welcome {{ PLAYER_NAME }} to the event

使用替换,这将呈现

Welcome Richard to the event

为此,我使用了以下regex,它似乎工作正常。

/{{s*PLAYER_NAMEs*}}/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_NAMEs*}}/gm

这个几乎有效,但在某些情况下,它会切断前一个单词的最后一个字母,看看我的例子,可以看到e被切断了单词welcome

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

捕获非斜杠并将其放回替换中:

参数
操作
搜索 ([^\]){{s*PLAYER_NAMEs*}}
替换 $1 Richard

最新更新