我有很长的Google表格QUERY
,部分是这样的:
=QUERY(LOOKUP!$A$4:$H,"Select count(B) where UPPER(D) matches 'OK' and UPPER(H) matches '.*(?:^|,|,\s)"®EXEXTRACT(REGEXREPLACE($Q3,"\s|-",""),"
\w+
")&"(?:,\s|,|$).*' and (UPPER(C) contains '"®EXEXTRACT($Q3, "\{(\w+)\}")&"' or UPPER(F) contains '"®EXEXTRACT($Q3, "\{(\w+)\}")&"') limit 1 label count(B) ''",0)
基本上,如果我有一个类似apple {pear}
的条目,我只希望将苹果位作为查询的一部分进行匹配。除非我将&
放在匹配的位置,否则这绝对可以。 apple&banana {pear}
即使查找中明确存在apple&pear
,匹配也会失败,因此我认为问题出在我的RegEx
上。我试过仅用上面的\w+
替换RegEx
中分隔位置处的.*
选择器,但是没有运气。
任何帮助将不胜感激
答案 0 :(得分:0)
将\w+
替换为\w+(?:&\w+)*
更有意义。
\w+(?:&\w+)*
模式匹配
\w+
-1个或多个单词字符,字母,数字或_
(?:&\w+)*
-匹配0次或多次出现:
&
-一个&
字符\w+
-1个或多个单词字符,字母,数字或_
如果您不想匹配_
,请使用
[A-Za-z0-9]+(?:&[A-Za-z0-9]+)*
请注意,如果您不在乎输入中是否有[A-Za-z0-9&]+
个字符(并希望与之匹配),也可以使用&
。