如何替换不在引号中的字符串
How to replace a string which is not in quotes
我正在努力应对以下情况,我有一个多行字符串,其中多次包含单词 test,该字符串是:
Hello my name is "test" im a test
test is testing
我需要替换所有不在引号中的测试字符串
每个找到的字符串后面都应该跟至少 1 个空格或换行符,而不是其他任何内容,因此上面的字符串将转换为:
Hello my name is "test" im a HELLOWORLD
HELLOWORLD is testing
测试字符串也可以在前面加上空格,但也不能没有。
我已经发现了一种只替换不在引号内的字符串的方法:
str.replace(/(test)(?=(?:[^"]|"[^"]*")*$)/, 'HELLOWORLD')
有人能帮我找到其他规则吗?
(\btest\b)(?=(?:[^"]|"[^"]*")*$)
尝试 this.See 演示。
您可以使用:
var str = 'Hello my \'test\' name is "test" im a test\ntest is testing';
var repl = str.replace(/("[^"]*"|'[^']*')|\btest\b/g, function([=10=], ) {
return ( == undefined) ? "HELLOWORLD" : ; });
输出:
Hello my 'test' name is "test" im a HELLOWORLD
HELLOWORLD is testing
我正在努力应对以下情况,我有一个多行字符串,其中多次包含单词 test,该字符串是:
Hello my name is "test" im a test
test is testing
我需要替换所有不在引号中的测试字符串 每个找到的字符串后面都应该跟至少 1 个空格或换行符,而不是其他任何内容,因此上面的字符串将转换为:
Hello my name is "test" im a HELLOWORLD
HELLOWORLD is testing
测试字符串也可以在前面加上空格,但也不能没有。
我已经发现了一种只替换不在引号内的字符串的方法:
str.replace(/(test)(?=(?:[^"]|"[^"]*")*$)/, 'HELLOWORLD')
有人能帮我找到其他规则吗?
(\btest\b)(?=(?:[^"]|"[^"]*")*$)
尝试 this.See 演示。
您可以使用:
var str = 'Hello my \'test\' name is "test" im a test\ntest is testing';
var repl = str.replace(/("[^"]*"|'[^']*')|\btest\b/g, function([=10=], ) {
return ( == undefined) ? "HELLOWORLD" : ; });
输出:
Hello my 'test' name is "test" im a HELLOWORLD
HELLOWORLD is testing