使用正则表达式时TextFinder无法替换文本的问题排查
问题原因与修复方案
你的代码未生效的核心问题是JavaScript字符串的转义规则:在普通单/双引号包裹的字符串中,\是转义字符,你写的\w和\s会被自动解析为普通字符w和s,导致实际生效的正则表达式变成(w+), s(w+).*?,完全无法匹配lastName, firstName格式的内容。
两种可行的修复方式
转义正则中的反斜杠
在单/双引号字符串中,要让正则元字符\w、\s生效,必须把反斜杠转义为\\:SpreadsheetApp.getActive() .createTextFinder('([\\w]+),\\s([\\w]+).*?') .useRegularExpression(true) .matchEntireCell(false) .matchFormulaText(false) .replaceAllWith('$2 $1');使用ES6模板字符串
模板字符串(用``包裹)不需要额外转义正则中的反斜杠(仅反引号和美元符号需要转义),直接写原正则格式即可:SpreadsheetApp.getActive() .createTextFinder(`(\w+),\s(\w+).*?`) .useRegularExpression(true) .matchEntireCell(false) .matchFormulaText(false) .replaceAllWith('$2 $1');
修正后,正则就能正确匹配lastName, firstName格式的内容,并替换为firstName lastName格式。
内容的提问来源于stack exchange,提问作者Joshua Pelton-Stroud
相关产品推荐
相关产品推荐

