javascrip中反向查找的解决方法

2021-05-13 13:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将我编写的python脚本转换为javascript。我的python脚本有以下正则表达式来匹配“\”的单个实例:

re.sub(r'(?<!\\)(\\{1})(?!\\)', r'\\', word)

尝试在js中运行时遇到编译器错误:

^{pr2}$

经过一番搜索发现,js中的regex不支持look behind。在

我看了this answer,他们用了:

^(?!filename).+\.js

以从字符串开头开始的消极展望的形式,这对我没有帮助,因为我需要将字符串中的任何地方的'\'更改为{}。 我不认为这是一个重复的问题,因为我的问题是试图确定如何避免和匹配字符串中不同点的同一个字符,而链接的问题则试图避免匹配特定的短语。在

我需要匹配前面或后面都没有“\”的字符。在

2条回答
网友
1楼 ·

只需在没有断言的情况下进行匹配(^|[^\\])\\([^\\]|$)然后将它们替换回原处。
请注意,这不会告诉您它是否正在逃逸。
正则表达式更为复杂。在

网友
2楼 ·

您总是可以使用捕获组而不是lookbehind

string.match(/(^|[^\\])(\\{1})(?!\\)/)[2]

和13;

和13;

将返回与(?<!\\)(\\{1})(?!\\)相同的内容

相关问题