Google Sheets Regex 引擎是否支持回顾?
Does Google Sheets Regex engine support lookbehind?
我的印象是 Sheets 支持 re2,它不支持 lookaround。
考虑他遵循 Sheet 的示例脚本。
正则表达式期望匹配单词 dog 本身或者如果前面有单词 cat.
function testRegex(){
var rg = /(?<=(cat|\b))dog/;
var s = "catdog";
Logger.log("%s: %s",s,rg.test(s));
s = "sdog";
Logger.log("%s: %s",s,rg.test(s));
s = "dog";
Logger.log("%s: %s",s,rg.test(s));
}
结果很完美:
所以问题是否支持?
您正在 Google Apps 脚本中使用 JavaScript。 GAS 现在使用现代 JavaScript 引擎,支持后视、命名捕获组、s
修饰符。所以,你的模式效果很好。
如果您在 REGEXEXTRACT
或 REGEXREPLACE
公式中使用回顾模式,它将失败,因为那些 REGEX~
函数使用 RE2 正则表达式库。你不能在那里使用后视。
我的印象是 Sheets 支持 re2,它不支持 lookaround。
考虑他遵循 Sheet 的示例脚本。 正则表达式期望匹配单词 dog 本身或者如果前面有单词 cat.
function testRegex(){
var rg = /(?<=(cat|\b))dog/;
var s = "catdog";
Logger.log("%s: %s",s,rg.test(s));
s = "sdog";
Logger.log("%s: %s",s,rg.test(s));
s = "dog";
Logger.log("%s: %s",s,rg.test(s));
}
结果很完美:
所以问题是否支持?
您正在 Google Apps 脚本中使用 JavaScript。 GAS 现在使用现代 JavaScript 引擎,支持后视、命名捕获组、s
修饰符。所以,你的模式效果很好。
如果您在 REGEXEXTRACT
或 REGEXREPLACE
公式中使用回顾模式,它将失败,因为那些 REGEX~
函数使用 RE2 正则表达式库。你不能在那里使用后视。