REGEXEXTRACT 与捕获组

标签 regex google-sheets

我想知道在 Google Sheets 中使用 REGEXEXTRACT() 时是否有办法引用在同一表达式中捕获的组?

假设我们有一个示例字符串:aaa123bbb123ccc456ddd123eee123fff456ggg
我们想提取一些 3 位数字至少出现 3 次的部分。
通常我会像这样使用正则表达式:(\d{3})(?:[^\1]*\1){2,}
但是如何引用中的第一组=REGEXEXTRACT(A1;"(\d{3})(?:[^\1]*\1){2,}") ?
这个在表格中返回错误。

最佳答案

RE2 模式中没有反向引用支持,您需要编写一个自定义 JS 函数来获取您需要的内容:

function IS_THREE_DIGIT_REPEATING(input) {
  var rx = /(\d{3})(.*\1){2}/;
  var res = rx.exec(input);
  return res ? res[1] : "No";
}

它将打印单元格中第一个捕获组的内容(重复的 3 位数字)或 No如果没有匹配。

enter image description here

图案详情
  • (\d{3}) - 捕获组 1:三位数字
  • (.*\1){2} - 除换行符以外的任何 0+ 字符连续出现 2 次,其后跟在组 1 中捕获的值相同。
  • 关于REGEXEXTRACT 与捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48520869/

    相关文章:

    sql - Google 表格 - 从所选选项卡进行查询

    javascript - 正则表达式内的计算

    arrays - 标记包含 FILTER 列表中的单词的单元格

    python - 正则表达式获取除字母、空格、' 和 - 之外的所有内容

    javascript - 追踪发送电子邮件的谷歌应用程序脚本

    javascript - 如何在 Google Apps 脚本中将 API key 添加到 UrlFetchApp

    r - 将字符串中的所有字母子字符串化在两个字符之间

    python - 从 ifconfig (ubuntu) 中提取网络信息的算法

    google-sheets - 过滤 IMPORTHTML 数据

    sorting - 谷歌应用脚​​本 : Remove blank rows from range selection for sorting