regex - Google 工作表中的正则表达式匹配以识别包含另一个工作表中的任何字符串的单元格
问题描述
我有一个 ColumnA ,其中每个单元格包含多个用逗号分隔的值,例如:
Elvis Costello, Madonna
Bob, Elvis Presley, Morgan Stanley
Frank, Morgan Stanley, Madonna Ford,
Elvis Costello, Madonna Ford
我想确定哪些行/单元格包含另一个工作表/列中的任何确切术语,例如
Elvis Presley
Madonna
我使用 Regexmatch 找到了这个简单的解决方案(该页面上的最后一个解决方案)有没有办法从 A1:A1000 的一系列单元格中进行 REGEXMATCH ?
假设您想从城市列表中搜索匹配项。
将您的城市列表放在一个标签中。将它们变成小写以便于查找,因为搜索词都是小写的。您可以通过添加新列并使用 LOWER 函数来完成此操作。返回具有搜索短语列表的单元格。在任何空白单元格中(顶行的一侧是一个好地方)输入这个公式: CITY LIST FORMULA: =TEXTJOIN("|",1,'vlookup city'!B$2:B$477) (如果您的标签名为“vlookup city”并且您的城市位于该标签的 B 列中)
在您的搜索字词旁边添加一个新列,或者选择一个现有的列,以便在其中放置“找到的匹配”信息。
在该新列中,添加此公式(如果您的数据从第 4 行开始,并且您将城市列表公式放在单元格 G3 中:) =REGEXMATCH(A4,G$4)
将公式一直填写到您的列表中。您可以双击单元格右下角的蓝色小方块,或一直拖到列表底部。
巴丁!它将在您的搜索短语中的任何位置搜索这些城市名称中的任何一个。
如果搜索词组包含至少一个匹配项,它将返回“True”。
然后,您可以在公式中添加额外的功能,使其返回其他内容。例如:=IF(REGEXMATCH(A4,G$4), "找到匹配", "未找到匹配")
这是一个超轻量级的解决方案,不会让您的工作表减慢太多并且易于使用。
https://docs.google.com/spreadsheets/d/1XAIDB98r2CGu7hL3ISirErDPNlgT6lVt-TCG0qI1uTE/edit?usp=sharing
问题是 Regexmatch 解决方案识别“Elvis Costello”和“Madonna Ford”,而我只想识别包含要匹配的确切术语的单元格/行,即“Elvis Presley”和“Madonna”,即逗号之间的任何内容必须与其中一个搜索词完全匹配,而不仅仅是部分正确。
我希望这是有道理的:)
谢谢大家!
解决方案
我想我可能已经找到了答案,但仍在尝试仔细检查它是否正确。
我在之前和之后添加了 \b 。因此,在我问题的引用部分重新发布的示例表中,我更改了单元格:
Cell B3:
=TEXTJOIN("|",1,'vlookup city'!B$2:B$476)
并添加了另一个像这样的单元格:
Cell B2:
=concatenate("\b(",$B$3,")\b")
仍在检查是否删除了所有错误标志。谢谢
推荐阅读
- ruby - 在没有救援的情况下使用 ruby begin 的目的是什么?
- php - 使用 php 更改链接单击时回显内的目录名称或路径
- boost - boost b2 --layout=system 使用 CMake 在 Visual Studio 上导致 LNK1104 错误
- docker - 无法创建 docker 注册表代理缓存:权限被拒绝
- c# - 为什么是 services.AddDbContext
() 使 dbContext 成为 Scoped 服务?不应该是 Singleton 服务吗? - workflow - vtiger CRM - 7.1.0 - 如何找到邀请用户操作?
- python - 如何使用fabric2修改任务中的主机列表?
- php - 如何使用 symfony 4.2 在 dompdf 生成的 pdf 中显示图像?
- multithreading - 在 Prolog 中递归地加入线程
- ruby-on-rails - 生产环境中的rails变量