QUERY RegEx和&

时间:2018-12-04 16:03:11

标签: regex google-sheets

我有很长的Google表格QUERY,部分是这样的:

=QUERY(LOOKUP!$A$4:$H,"Select count(B) where UPPER(D) matches 'OK' and UPPER(H) matches '.*(?:^|,|,\s)"&REGEXEXTRACT(REGEXREPLACE($Q3,"\s|-","")," \w+ ")&"(?:,\s|,|$).*' and (UPPER(C) contains '"&REGEXEXTRACT($Q3, "\{(\w+)\}")&"' or UPPER(F) contains '"&REGEXEXTRACT($Q3, "\{(\w+)\}")&"') limit 1 label count(B) ''",0)

基本上,如果我有一个类似apple {pear}的条目,我只希望将苹果位作为查询的一部分进行匹配。除非我将&放在匹配的位置,否则这绝对可以。 apple&banana {pear}即使查找中明确存在apple&pear,匹配也会失败,因此我认为问题出在我的RegEx上。我试过仅用上面的\w+替换RegEx中分隔位置处的.*选择器,但是没有运气。

任何帮助将不胜感激

1 个答案:

答案 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&]+个字符(并希望与之匹配),也可以使用&