我正在将我编写的python脚本转换为javascript。我的python脚本具有以下正则表达式以匹配'\'的单个实例:
re.sub(r'(?<!\\)(\\{1})(?!\\)', r'\\', word)
尝试在js中运行此命令时出现编译错误:
"Invalid regular expression: /(?<!\\)(\\{1})(?!\\)/: Invalid group"
经过一番搜索后发现js中的正则表达式不支持外观。
我看了this answer他们使用了:
^(?!filename).+\.js
从字符串开头以负面预测的形式,这对我没有帮助,因为我需要在字符串中的任何位置将'\'
更改为'\\'
。
我不认为这是一个重复的问题,因为我的问题是试图确定如何避免和匹配字符串中不同点的相同字符,而链接的问题试图避免特定的短语被匹配。
我需要在它们之前或之后匹配没有'\'的'\'字符。
答案 0 :(得分:1)
您始终可以使用捕获组而不是lookbehind
string.match(/(^|[^\\])(\\{1})(?!\\)/)[2]
let replaced = "a\\b\\\\".replace(/(^|[^\\])(\\{1})(?!\\)/, x => x[0] == '\\' ? x : 'value')
console.log(replaced)
将返回与(?<!\\)(\\{1})(?!\\)
答案 1 :(得分:0)
在没有断言的情况下匹配(^|[^\\])\\([^\\]|$)
然后替换它们
请注意,这不会告诉您它是否正在逃避任何事情
那正则表达式更复杂。