Google Sheets正则匹配日期问题求助:无法区分7月3日与31日
解决Google表格正则匹配日期的问题
问题根源
- 原公式用
.*&CellThatProvidesTheDate&.*的匹配逻辑,会把包含目标日期子串的内容全部纳入,导致“Wednesday, July 3”错误匹配到“July 31”(因为包含“3”这个子串)。 - 尝试的
\b正则写法无效,一是错误用REGEXEXTRACT提取后和原单元格内容对比(逻辑冗余且错误),二是表单提交的多日期通常用逗号分隔,仅靠单词边界\b的匹配精度不足。
修正后的公式
用REGEXMATCH直接判断单元格是否包含独立的目标日期,替代原有的REGEXEXTRACT对比逻辑:
=IFERROR(SORT(FILTER('Google Form Link'!$B$2:$B, 'Google Form Link'!$D$2:$D = A15, REGEXMATCH('Google Form Link'!$C$2:$C, "(^|, )" & CellThatProvidesTheDate & "(, |$)")), 1, TRUE), "")
公式说明
(^|, ):匹配日期的起始边界——要么单元格内容以目标日期开头,要么日期前是逗号加空格(对应多日期分隔的场景)。(, |$):匹配日期的结束边界——要么日期后是逗号加空格(后续还有其他日期),要么单元格内容以目标日期结尾。- 这种写法能确保只匹配完整的“Wednesday, July 3”条目,不会误触包含该日期子串的其他内容。
如果表单日期的分隔符不是逗号加空格,可根据实际情况调整正则里的分隔符部分。
内容的提问来源于stack exchange,提问作者5Reaper5
相关产品推荐
相关产品推荐

