如何在 JavaScript 中的模式之间 replace/append 文本
how to replace/append text between a pattern in JavaScript
我想在模式之间重新铺设一个字符串
假设我的输入字符串是
var st= "include('sometxt.abc')";
var st2 = "include('somename.xyz')";
我想替换每个包含的文本,例如 我对上述输入的输出将是
"include('folder/sometext.abc')"
"include('folder/sometxt.abc')"
但是,我可以使用模式搜索字符串,但不知道如何替换,
搜索模式是
/include\("\w+.\w+"\)/g
thnakyou.
您可以使用positive lookahead来获取要插入文本的位置。
/(?=[a-zA-Z]+?\.)/
var st = "include('sometxt.abc')";
var st2 = "include('somename.xyz')";
const result = st.replace(/(?=[a-zA-Z]+?\.)/, "folder/");
console.log(result);
既然要在before the first '
中插入一些东西,为什么不使用indexOf
来得到该字符的索引,然后在该字符之后使用 substr
到 'insert' 它?
示例:
var st= "include('sometxt.abc')";
var st2 = "include('somename.xyz')";
console.log(insert(st));
console.log(insert(st2));
function insert(to, what = 'folder/') {
let posOfFirstQuote = to.indexOf("'") + 1;
return to.substr(0, posOfFirstQuote) + what + to.substr(posOfFirstQuote);
}
一些备注:
- 您的正则表达式与示例不匹配,因为引用不同。
- 文件名可以包含
\w
不匹配的字符。这可能太局限了。
您可以使用捕获组来匹配插入点前后的部分(对于“folder/”)。您可以使用反向引用来要求开盘价和收盘价是同一类型。
我们可以想象更多检查,但使用这些成分您可以做到:
var input = `include('sometxt.abc')
include('somename.xyz')`;
let result = input.replace(/(\binclude\((['"]))(\S+\.\S+\))/g, "folder/");
console.log(result);
我想在模式之间重新铺设一个字符串
假设我的输入字符串是
var st= "include('sometxt.abc')";
var st2 = "include('somename.xyz')";
我想替换每个包含的文本,例如 我对上述输入的输出将是
"include('folder/sometext.abc')"
"include('folder/sometxt.abc')"
但是,我可以使用模式搜索字符串,但不知道如何替换, 搜索模式是
/include\("\w+.\w+"\)/g
thnakyou.
您可以使用positive lookahead来获取要插入文本的位置。
/(?=[a-zA-Z]+?\.)/
var st = "include('sometxt.abc')";
var st2 = "include('somename.xyz')";
const result = st.replace(/(?=[a-zA-Z]+?\.)/, "folder/");
console.log(result);
既然要在before the first '
中插入一些东西,为什么不使用indexOf
来得到该字符的索引,然后在该字符之后使用 substr
到 'insert' 它?
示例:
var st= "include('sometxt.abc')";
var st2 = "include('somename.xyz')";
console.log(insert(st));
console.log(insert(st2));
function insert(to, what = 'folder/') {
let posOfFirstQuote = to.indexOf("'") + 1;
return to.substr(0, posOfFirstQuote) + what + to.substr(posOfFirstQuote);
}
一些备注:
- 您的正则表达式与示例不匹配,因为引用不同。
- 文件名可以包含
\w
不匹配的字符。这可能太局限了。
您可以使用捕获组来匹配插入点前后的部分(对于“folder/”)。您可以使用反向引用来要求开盘价和收盘价是同一类型。
我们可以想象更多检查,但使用这些成分您可以做到:
var input = `include('sometxt.abc')
include('somename.xyz')`;
let result = input.replace(/(\binclude\((['"]))(\S+\.\S+\))/g, "folder/");
console.log(result);