在捕获组前插入 $
Insert $ in front of capture group
我有以下输入文本:
string name;
string type;
string class;
...
我希望将它们转换为以下内容:
string $name;
string $type;
string $class;
...
我对正则表达式的尝试:
Javascript:
"string name;".replace(/string (\w+)/,"string $");
Produces (javascript console):
string ;
string ;
string ;
...
Produces (regexr prompt):
string $1;
string $1;
string $1;
...
为什么在第一个 $ 前面插入反斜杠不起作用?实现这一目标的正确表达方式是什么?
注意:我正在使用 regexr(运行客户端 javascript)来批处理我的文本,Javascript 控制台和 String.prototype.replace
函数在Chrome 用于测试连续 $ 符号行为的 Devtools。
Javascript 字符串中的反斜杠只有在 转义序列 中才有意义 - 例如,'\n'
被翻译成文字换行符, '\'
被翻译成文字反斜杠等。如果在 不是 转义序列一部分的字符前有反斜杠,例如 '$'
,则反斜杠将被忽略:
const str = '$';
console.log(str);
console.log(str.length);
不过,文字反斜杠不能解决您的问题。请参阅 docs - 要插入文字 $
作为替换字符串的一部分,请使用 $$
($
在这里本质上是一个转义字符,有点像 \
是字符串文字中的转义字符):
console.log(
"string name;"
.replace(/string (\w+)/, "string $$")
);
由于您正在搜索“string \w+
”的组合,您可以使用更简单的搜索和替换:
str.replace(/string /g, "string $")
这会在每个 string
之后添加一个 $,后跟一个 space
var str = "string name;\nstring type;\nstring class;"
console.log("Original:")
console.log(str);
console.log("New:")
console.log( str.replace(/string /g, "string $") );
我有以下输入文本:
string name;
string type;
string class;
...
我希望将它们转换为以下内容:
string $name;
string $type;
string $class;
...
我对正则表达式的尝试:
Javascript:
"string name;".replace(/string (\w+)/,"string $");
Produces (javascript console):
string ;
string ;
string ;
...
Produces (regexr prompt):
string $1;
string $1;
string $1;
...
为什么在第一个 $ 前面插入反斜杠不起作用?实现这一目标的正确表达方式是什么?
注意:我正在使用 regexr(运行客户端 javascript)来批处理我的文本,Javascript 控制台和 String.prototype.replace
函数在Chrome 用于测试连续 $ 符号行为的 Devtools。
Javascript 字符串中的反斜杠只有在 转义序列 中才有意义 - 例如,'\n'
被翻译成文字换行符, '\'
被翻译成文字反斜杠等。如果在 不是 转义序列一部分的字符前有反斜杠,例如 '$'
,则反斜杠将被忽略:
const str = '$';
console.log(str);
console.log(str.length);
不过,文字反斜杠不能解决您的问题。请参阅 docs - 要插入文字 $
作为替换字符串的一部分,请使用 $$
($
在这里本质上是一个转义字符,有点像 \
是字符串文字中的转义字符):
console.log(
"string name;"
.replace(/string (\w+)/, "string $$")
);
由于您正在搜索“string \w+
”的组合,您可以使用更简单的搜索和替换:
str.replace(/string /g, "string $")
这会在每个 string
之后添加一个 $,后跟一个 space
var str = "string name;\nstring type;\nstring class;"
console.log("Original:")
console.log(str);
console.log("New:")
console.log( str.replace(/string /g, "string $") );