【问题标题】:Does regex not work in Excel search?正则表达式在 Excel 搜索中不起作用吗?
【发布时间】:2017-06-28 03:34:44
【问题描述】:

我正在尝试在 Excel 的文本单元格中搜索尾随空格。知道 Excel 搜索接受正则表达式后,我希望能够利用完整的功能集,但惊讶地发现某些功能似乎不起作用。

例如,我有一些带有 ELUFA\s\s\s\s\s 之类的字符串的单元格(注意:在我的 excel 表中没有 \s,但在 ELUFA 之后只有空白的不可见空格,但我必须添加这些 \s在这里,否则 Stackoverflow 只会删除这些空格,字符串只会显示为 ELUFA) 或 NATION CONFEC.\s,并带有尾随空格。

我在 excel 搜索函数中使用了表达式 [A-Z.]{1}\s+$,希望它会返回这些单元格的搜索结果,但它没有,只是告诉我没有找到任何东西。

然而,我发现真正有趣的是 Excel 搜索能够以某种方式解释像 A * 这样的正则表达式。使用此表达式,excel 搜索只为我找到 ELUFA\s\s\s\s\s 单元格,而没有其他与此正则表达式不匹配的单元格。

对于 Excel 搜索接受的完整 REGEX 的哪个子集是否存在某种限制?我们如何让 excel 搜索接受here 所述的完整 REGEX 功能集?

谢谢。

【问题讨论】:

  • Google 表格具有接受完整正则表达式的REGEXMATCH 函数。
  • 你在说哪个搜索?工作表函数 Search() 或使用 Ctrl+F 打开的搜索对话框?
  • @teylyn:我指的是使用 CTRL+F 打开的搜索对话框。我还指的是 GUI 右上角的小搜索栏。他们都一样吧? Search() 函数呢,和 CTRL+F 有什么区别?
  • @chthonicdaemon:谷歌表格呢?太好了,我想我会在谷歌表格中打开我的电子表格!
  • 是的,搜索功能与搜索框完全不同。搜索框搜索工作表中的所有单元格并跳转到匹配的单元格。 Search() 函数在一个单元格内进行搜索,并将匹配的位置作为数字返回(如果有)。我真的很惊讶您标记了针对 Search() 函数而不是您所询问的功能的答案。

标签: vba excel wildcard


【解决方案1】:

Excel SEARCH() 函数不支持完整的正则表达式。它实际上只支持两个通配符,?*。来自documentation

您可以在 find_text 参数中使用通配符——问号 (?) 和星号 (*)。问号匹配任何单个字符;星号匹配任何字符序列。如果要查找实际的问号或星号,请在字符前输入波浪号 (~)。

如果要匹配空格,则必须将它们作为文字输入。请注意,查找任意数量的尾随空格可以像ELUFA\s 一样简单,末尾有一个空格,因为这实际上会匹配一个或多个空格。

【讨论】:

  • 但是我的数据集太大了,以至于我无法单独查明特定名称并因此预测整个名称并在末尾附加空格 \s 进行搜索....和如果我只搜索一个空格,那么我会遇到许多不相关的结果,它们没有尾随空格,但在两个名称之间有空格....
  • @AKKA 如果我是你,我会考虑使用一些 VBA 代码。使用 VBA,我认为您可以接近完整的正则表达式支持,并且您不会遇到这个问题。
  • 查看here,了解 VBA 中正则表达式的讨论。
  • @AKKA 如果您的问题是关于使用 Ctrl-F 打开的搜索对话框,您怎么会接受这个作为答案?此答案不涵盖搜索对话框的任何方面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 2018-08-22
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多