我正在尝试使用JavaScript清理文件。该文件包含如下文本行:
a <- b + c / d;
我希望在<-
的任意一侧有一个非空格字符串时,用=
替换所有<-
,用单个空格分隔。理论上很容易:
line = "a <- b + c / d"
result = line.replace( /(\S+) <- (\S+)/, /$1 = $2/ )
以上代码在运行时生成/a = b/ + c / d
。但是,从概念上讲,它应该产生a = b + c / d
。如何使用$1
- 样式的反向引用,而不允许JavaScript有机会插入斜杠?
答案 0 :(得分:3)
使用字符串作为第二个参数:
result = line.replace( /(\S+) <- (\S+)/, "$1 = $2" );
。
正在发生的事情是第二个参数正在从RegExp
强制转换为String
,这会在替换中添加斜杠。
答案 1 :(得分:0)
替换的第二个参数不是正则表达式而是字符串。
您需要像这样使用它:
result = line.replace( /(\S+) <- (\S+)/, '$1 = $2' );