关于使用REGEXMATCH实现匹配双引号后跟零的条件格式的问题求助
要实现匹配双引号后跟0 /的内容(如"0 / 10"匹配为true,"10 / 10"匹配为false),你可以使用以下正确的REGEXMATCH公式:
=REGEXMATCH(B:B; """0 /")
为什么这个公式有效?
在Google Sheets的公式字符串中,双引号需要用两个双引号来转义,所以"""0 /"会被解析为正则表达式"0 /——精确匹配双引号紧跟0 /的序列。这样就只会命中双引号后直接是0的情况,不会像你第一个尝试那样匹配其他位置的0 /。
分析你之前的尝试问题:
尝试1:
=REGEXMATCH(B:B;"0 /")
这个正则太宽泛,会匹配单元格中任何位置的0 /,包括"10 / 10"里的0 /,不符合你的需求。尝试2:
=REGEXMATCH(B:B;"""0 /")
语法正确但无匹配结果,大概率是因为单元格内容和正则的空格不匹配(比如单元格里是"0/10"无空格,而正则带空格),或者你的单元格中实际存储的双引号是特殊字符(如全角引号)。可以在空白单元格输入=CHAR(34)&"0 /",对比B列内容的字符序列是否一致。尝试3:
=REGEXMATCH(B:B;"[[:punct:]]0 /")[:punct:]虽然包含双引号,但Google Sheets的正则实现中,某些情况下可能对中文标点和英文标点区分严格,如果你的双引号是全角的,就会匹配失败。尝试4:
=REGEXMATCH(B:B;"[^[:digit:]]0 /")
理论上双引号属于非数字字符,应该匹配,但如果你的单元格中双引号和0之间存在隐藏字符(如不可见的空格、换行符),就会导致匹配失败。可以用=CODE(MID(B1,2,1))查看0的前一个字符的ASCII码,确认是否是34(双引号的ASCII码)。尝试5:
=REGEXMATCH(B:B;CONCATENATE(CHAR(34), "0 /"))
这个公式生成的正则和尝试2完全一致,所以失败原因和尝试2相同。
扩展:适配空格不固定的情况
如果你的单元格中0和/之间的空格数量不固定(有时有空格,有时没有),可以用\s*匹配任意数量的空白字符:
=REGEXMATCH(B:B; """0\s*/")
内容的提问来源于stack exchange,提问作者Joe McGinn

