【问题标题】:Matching a string containing special characters against a string without special characters将包含特殊字符的字符串与不包含特殊字符的字符串匹配
【发布时间】:2020-12-25 01:57:36
【问题描述】:

我正在尝试使用 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' 并且有一个匹配项 - 现在查询将返回第二行。

(我找到了一个很好的方法来替换字符串 here 中的所有重音字符。)

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

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

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

【问题讨论】:

    标签: regex google-sheets google-sheets-formula diacritics google-query-language


    【解决方案1】:

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

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

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

    使用的功能:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 2019-01-30
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-20
      相关资源
      最近更新 更多