我有一个字符串:
const str = 'DELETE FROM "organization" WHERE "name" = $1 AND "metadata" = $2 AND "id" = $3';
我需要找到“元数据”
单词来修改它。我只知道"metadata"
这个词后面有= $2
。
const regex = RegExp(/ = $2/); // just to show what I have
const foundWord = someMagicWithRegex(str, regex); // "metadata"
const newString = str.replace(foundWord, `${foundWord}::text`);
console.log(newString);
'DELETE FROM "organization" WHERE "name" = $1 AND "metadata"::text = $2 AND "id" = $3'
regex
应该是什么样子? (如果可能的话)
最佳答案
您可以使用
var str = 'DELETE FROM "organization" WHERE "name" = $1 AND "metadata" = $2 AND "id" = $3';
console.log(str.replace(/"[^"]*"(\s*=\s*\$2\b)/g, '"NEW METADATA"$1'));
正则表达式为"[^"]*"(\s*=\s*\$2\b)
:
"[^"]*"
-"
,除"
之外的 0 个或多个字符,然后是"
(\s*=\s*\$2\b)
- 捕获组 1(替换模式中的$1
指的是捕获到该组中的值):\s*=\s*
- 包含 0 个以上空格的=
\$
-$
字符(必须转义)2\b
-2
作为一个完整的单词。
关于javascript - 正则表达式通过特定符号查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56788687/