首页 > 解决方案 > 谷歌表格正则表达式引擎是否支持后视?

问题描述

我的印象是 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));
  
}

结果很完美: 结果很完美:

那么问题是否支持?

标签: regexregex-lookaroundsre2

解决方案


您正在 Google Apps 脚本中使用 JavaScript。GAS 现在使用支持后视、命名捕获组、s修饰符的现代 JavaScript 引擎。所以,你的模式运作良好。

如果您在 aREGEXEXTRACTREGEXREPLACE公式中使用后向模式,它将失败,因为这些REGEX~函数使用 RE2 正则表达式库。你不能在那里使用lookbehind。


推荐阅读