首页 > 解决方案 > 将包含特殊字符的字符串与不包含特殊字符的字符串匹配

问题描述

我正在尝试使用 Google 表格查询来匹配字符串,其中两个字符串都不确定是否包含特殊字符。我会尽力解释:

我有一个数据表

+-----+------+-----+-----+
|  A  |   B  |  C  |  D  |
|x    | y    |ø    |z    |
|xx   | yy   |á    |zz   |
|xxx  | yyy  |e    |zzz  |
+-----+------+-----+-----+

我的查询函数看起来像这样:

=QUERY(A1:D3, "SELECT * WHERE (C = 'ø') OR (C = 'è') OR (C = 'a')")

目前,使用此查询将仅返回 1 行,因为(C = 'ø')它与 'ø' 完全匹配,但其他查询都没有匹配项。

对于(C = 'è'),我们可以将字符串中的所有重音字符替换为其非重音字符。
在这种情况下,'è' 变为 'e' 并且有一个匹配项 - 现在查询将返回第二行。

(我在这里找到了一个替换字符串中所有重音字符的好方法。)

最后,这是我的主要问题所在:(C = 'a'). 我想不出办法让它匹配“á”,除非我检查“a”的每个重音变体,但这似乎很愚蠢。可悲
的是,也不可能做类似的事情。"... WHERE (CUSTOM_FUNCTION(C) = 'a')"

正如我之前提到的,匹配的任何一方都可能包含也可能不包含重音/特殊字符。
我还应该提到它不会只是一个字符,它将是一个完整的字符串。

如果有人对此有任何可能的解决方案,将不胜感激。

标签: regexgoogle-sheetsgoogle-sheets-formuladiacriticsgoogle-query-language

解决方案


QUERY您可以使用公式代替FILTER公式。

=FILTER(A2:D22,REGEXMATCH(C2:C22,"ø|è|á")=TRUE)

(请根据您的需要调整范围。您还可以添加/删除更多特殊字符。)

在此处输入图像描述

使用的功能:


推荐阅读