我使用的是Google工作表查询功能,其中包含正则表达式命令" MATCHES"。
如果Col2包含字符串dog,cat或fish中的任何一个,我需要对Col1求和。
这是我难看的解决方案,我想知道是否有更简洁的方法:
(.*)?dog(.*)?|(.*)?cat(.*)?|(.*)?fish(.*)?
在英语中,如果相关单元格包含或等于这三个字符串中的任何一个,则评估为true。任何一方都可能有也可能没有文字。
猫|狗|鱼在这种环境下不起作用。来自他们的documentation
匹配 - A(preg)正则表达式匹配。干草堆匹配针 如果针中的正则表达式与haystack匹配,则为true。 示例:国家/地区匹配'。* ia'匹配印度和尼日利亚,但是 不是印第安纳请注意,这不是全局搜索,所以国家/地区 匹配' an'不符合加拿大'
在这种情况下,如果我正确地阅读它们意味着它将不会匹配某些文本/ dogblabla;只是完全匹配。我不确定,但我的反复试验表明我的理解是正确的。
是否有更短的撰写方式(.*)?dog(.*)?|(.*)?cat(.*)?|(.*)?fish(.*)?
答案 0 :(得分:1)
Google地图中的matches
需要完整的字符串匹配,因此cat|dog|fish
无效(请参阅Canada
示例)。
您可以在使用搜索词的替换组之前使用延迟/贪婪点匹配模式,然后在以下后添加相同的构造:
.*(dog|cat|fish).*
这将匹配:
.*
- 除了换行符之外的任何零个或多个(*
)字符(dog|cat|fish)
- dog
,cat
或fish
.*
- 任意零个或多个字符,直到该行的末尾。如果输入包含换行符,您可以尝试将.
替换为[\s\S]
,或在模式的开头添加(?s)
。