首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带捕捉群的REGEXEXTRACT

带捕捉群的REGEXEXTRACT
EN

Stack Overflow用户
提问于 2018-01-30 11:55:12
回答 3查看 6.1K关注 0票数 9

我想知道,在Google中使用REGEXEXTRACT()时,是否有一种方法可以引用在同一个表达式中捕获的组?

假设我们有一个示例字符串:aaa123bbb123ccc456ddd123eee123fff456ggg

我们想要提取出大约3位数至少3次的部分。通常我会像这样使用regex:(\d{3})(?:[^\1]*\1){2,}

但是如何在=REGEXEXTRACT(A1;"(\d{3})(?:[^\1]*\1){2,}")中提到第一组呢?这个在工作表中返回错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-30 12:09:29

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

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

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

模式细节

  • (\d{3}) -捕获组1:三位数
  • (.*\1){2} -连续出现除换行字符之外的任何0+字符,其值与在组1中捕获的值相同。
票数 8
EN

Stack Overflow用户

发布于 2019-11-11 19:01:20

我在google中模拟捕获组行为的方式是使用REGEXEXTRACT与REGEXREPLACE在线购买

例如

代码语言:javascript
复制
=REGEXREPLACE(A1, "word$", "special" & REGEXEXTRACT(A1, "word$"))

解释:

代码语言:javascript
复制
# REGEXREPLACE(my_cell, regex_to_match_word, text & capture_function)
=REGEXREPLACE(
    A1, 
    "word$", 
    "special" & 
        # REGEXEXTRACT("my_cell", "capture_regex")
        REGEXEXTRACT(
            A1, 
            "word$"
        )
)

参考文献

REGEXREPLACE:https://support.google.com/docs/answer/3098245?hl=en

REGEXEXTRACT:https://support.google.com/docs/answer/3098244?hl=en

票数 1
EN

Stack Overflow用户

发布于 2021-10-29 12:24:04

如果没有脚本,您可能会发现组的第N次出现:

=REGEXEXTRACT("aaa123bbb123ccc456ddd123eee123fff456ggg","(\d{3}\D*){3}")

结果是:

456

或此回复仅适用于数字:

(?:(\d{3})(?:\D*)){3}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48520869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档