Regex 如何使用查询筛选不应包含其他范围中任何单词的范围?
我有一个关于暖通空调维修的7000多个关键词的列表,我已经成功地分离出每个关键词中使用的所有唯一单词(3000多个唯一单词)。我将挑选出我们不需要的单词(如汽车ACs),然后使用该列表基本上制作一个“禁止”单词列表。然后,我如何使用查询“选择一个不包含[Banked word range]的区域” 我尝试了Regex 如何使用查询筛选不应包含其他范围中任何单词的范围?,regex,google-sheets,google-sheets-formula,google-sheets-query,textjoin,Regex,Google Sheets,Google Sheets Formula,Google Sheets Query,Textjoin,我有一个关于暖通空调维修的7000多个关键词的列表,我已经成功地分离出每个关键词中使用的所有唯一单词(3000多个唯一单词)。我将挑选出我们不需要的单词(如汽车ACs),然后使用该列表基本上制作一个“禁止”单词列表。然后,我如何使用查询“选择一个不包含[Banked word range]的区域” 我尝试了=query(A:A,“选择A,其中A不包含B”),但我认为这不是那么容易。(B是禁止使用的单词范围) 以下是我正在进行的项目: 您可以这样做: =QUERY(A2:A, "where not
=query(A:A,“选择A,其中A不包含B”)
,但我认为这不是那么容易。(B是禁止使用的单词范围)
以下是我正在进行的项目:
您可以这样做:
=QUERY(A2:A, "where not A matches '^"&TEXTJOIN("$|^", 1, B2:B)&"$'", 0)
对于“真实包含”,请使用:
这会稍微长一点,但可以解决您可能遇到的所有可能失败:
=ARRAYFORMULA(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(
IF(REGEXMATCH(IFERROR(SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, B2:C)&"$")=FALSE,
SPLIT(A2:A, " "), "♦"))),,999^99)), "where not Col1 contains '♦'", 0))
谢谢你的建议,我会尽力的。然而,A列有多个单词,它们之间用空格隔开,就像魔术一样:哦,我真是太感谢你了。我现在唯一的问题是,如果我一次给它提供3000 kws+的数据,Google sheets就会崩溃。不过我可以解决这个问题。@OnyxJasperSalape@OnyxJasperSalape又添加了一个解决方案
=ARRAYFORMULA(QUERY(TRANSPOSE(QUERY(TRANSPOSE(IFERROR(
IF(REGEXMATCH(IFERROR(SPLIT(A2:A, " ")), "^"&TEXTJOIN("$|^", 1, B2:C)&"$")=FALSE,
SPLIT(A2:A, " "), "♦"))),,999^99)), "where not Col1 contains '♦'", 0))