xyz*_*333 2 regex google-sheets google-apps-script
我在 Google 表格中有一个脚本
我正在尝试从不同工作表上的值表中查找和替换工作表上的标题
它主要按需要工作,但replace不适用于任何以?
我不知道什么时候?会出现
我正在使用这个:
const regex = new RegExp("(?<![^|])(?:" + search_for.join("|") + ")(?![^|])", "g");
我试图弄清楚如何更正我的正则表达式但没有得到它
在此先感谢您的帮助
我在一张纸上:
| 搜索 | 用。。。来代替 |
|---|---|
| ABC乔 | MNQ |
| XYZ车 | XXX |
| DDD foo? | 鲍勃酒吧 |
我在另一张纸上有标题:
| 标签 | ID | ABC乔 | XYZ车 | DDD foo? |
|---|
运行替换后,我想要标题:
| 标签 | ID | MNQ | XXX | 鲍勃酒吧 |
|---|
我得到的是:
| 标签 | ID | MNQ | XXX | DDD foo? |
|---|
var data = range.getValues();
search_for.forEach(function(item, i) {
pair[item] = replace_with[i];
});
const regex = new RegExp("(?<![^|])(?:" + search_for.join("|") + ")(?![^|])", "g");
//Update Header row
//replace(/^\s+|\s+$|\s+(?=\s)/g, "") - Remove all multiple white-spaces and replaces with a single WS & trim
for(var m = 0; m<= data[0].length - 1; m++){
data[0][m] = data[0][m].replace(/^\s+|\s+$|\s+(?=\s)/g, "").replace(regex,(m) => pair[m])
}
Run Code Online (Sandbox Code Playgroud)
一句警告:你的所作所为有点吓到我了。我希望你知道这是一种脆弱的方法,它可能会出错。
您没有引用正则表达式的动态部分。该?是正则表达式中一个特殊字符。我在下面写了一个解决你的问题的方法。不要在生产中依赖我的解决方案。
//var data = range.getValues();
var data = [
['Label', 'Id', 'ABC Joe', 'XYZ car', 'DDD foo?']
];
var search_for = [
'ABC Joe',
'XYZ car',
'DDD foo?'
];
var replace_with = [
'MNQ',
'NNN XXX',
'Bob bar'
];
var pair = {};
search_for.forEach(function(item, i) {
pair[item] = replace_with[i];
});
const regex = new RegExp("(?<![^|])(?:" + search_for.map((it) => quote(it)).join("|") + ")(?![^|])", "g");
for (var m = 0; m <= data[0].length - 1; m++) {
data[0][m] = data[0][m]
.replace(/^\s+|\s+$|\s+(?=\s)/g, "")
.replace(regex, (m) => pair[m]);
}
// see https://stackoverflow.com/a/3614500/11451
function quote(s) {
var regexpSpecialChars = /([\[\]\^\$\|\(\)\\\+\*\?\{\}\=\!])/gi;
return s.replace(regexpSpecialChars, '\\$1');
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |