我想知道在Google表格中使用REGEXEXTRACT()
时是否有办法引用在同一表达式中捕获的群组?
假设我们有一个示例字符串:
aaa123bbb123ccc456ddd123eee123fff456ggg
我们想要提取出3个数字至少出现3次的部分。
通常我会像这样使用正则表达式:
(\d{3})(?:[^\1]*\1){2,}
但如何引用第一组
=REGEXEXTRACT(A1;"(\d{3})(?:[^\1]*\1){2,}")
?
这个在Sheets中返回错误。
答案 0 :(得分:4)
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
。
模式详情
(\d{3})
- 捕获第1组:三位数(.*\1){2}
- 连续2次出现任何除了换行符之外的0+字符,后跟与第1组中捕获的值相同的值。答案 1 :(得分:0)
我在Google表格中模拟捕获组行为的方式是使用REGEXEXTRACT Inline和REGEXREPLACE购买
例如
await
解释:
=REGEXREPLACE(A1, "word$", "special" & REGEXEXTRACT(A1, "word$"))
参考
正则表达式:https://support.google.com/docs/answer/3098245?hl=en
REGEXEXTRACT:https://support.google.com/docs/answer/3098244?hl=en