谷歌电子表格正则表达式不区分大小写(Regexreplace)

24
我正在尝试使用regexreplace函数在Google Spreadsheets中创建不区分大小写的正则表达式查询。这可能吗?我尝试使用\i标志,但得到了一个#REF错误,表示表达式无效:=regexreplace("Test","t\i","")会出现错误,而我希望得到的最终结果是"es"。
是否可能?在Google Spreadsheets中是否有区分大小写的标志?
提前感谢!

我甚至不知道他们已经在Google电子表格中添加了正则表达式。 - RevanProdigalKnight
你可能想把勾选标记移到正确答案 - user3717023
4个回答

43

据我所知,启用大小写不敏感匹配的唯一方法是在Google文档中使用JavaScript API。

显然,RE2语法支持内联的(?i)大小写不敏感修饰符:

=REGEXREPLACE("Test", "(?i)t", "")

一种可行的替代方案是使用字符类,添加字母T的大小写。请见以下示例:[tT]
=REGEXREPLACE("Test", "[Tt]", "")

3
谷歌表格支持使用特定的正则表达式标志,包括 i 表示不区分大小写。参见 Alexander Ivanov 在 Stack Overflow 上的回答 - Stephen M. Harris
re2支持(?i)标志,考虑更新答案,因为它在此被接受。 - user3717023

20
我找到了这个:
=REGEXREPLACE("Test","(?i)t","")

它返回您想要的内容。
es

google/re2


2
它能够工作是因为你在正则表达式中添加了一个标志。 "i" 标志代表不区分大小写匹配,因此它将匹配任何小写或大写的 T。请参见 https://github.com/google/re2/blob/master/doc/syntax.txt。 - defvol

3

正如Alexander Ivanov所写,

是的,我知道这个话题已经解决了。但我发现了一些有趣的东西!

=REGEXREPLACE("Test","(?i)t","") 它会返回你想要的结果。

es

P.S.:如果有人知道它为什么能工作,请评论。

Google使用他们自己的re2正则表达式引擎。 使用 (?i) 可以设置忽略大小写标志进行搜索 https://re2.googlecode.com/hg/doc/syntax.html


-1

在编程中,没有区分大小写的标志。如果您有一个较长的字符串并且想要使其不区分大小写,可以尝试使用小写正则表达式并使用lower函数将测试变成小写: =REGEXREPLACE(LOWER(string), regex_in_lowercase, replacement) 在您的特定情况下: =REGEXREPLACE(LOWER("test"), "t", "") 问题是捕获表达式将会是小写的! 来源:https://productforums.google.com/forum/#!topic/docs/7kNb9LGeIfM


2
过去这可能是正确的,但现在不是了。明确地说,上述是错误的 - 存在一个忽略大小写的标志,并且它按照您所希望的方式工作 - 基于实际测试,"(?i)SOMESTRING" 匹配所有 "SOMESTRING"、"SomeString"、"Somestring"、"somestring"。 - Michael Sparks
虽然这是一个非常老的答案,但让我来补充一下我的看法。在你想要正则表达式是动态的并且包含在另一个单元格中的情况下,这是最好的方法,因为没有机会将单元格内容与行内的正则表达式相互插值。所以,在我看来,这个答案不应该被如此降级。 - Andrea Moro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接