所以我不知道如何很好地解释我的问题,所以我将举一个例子,我认为这是理解它的最好方法,但基本上我试图返回与 a 中的单词匹配的订单列表,这些单词可以包含特殊字符,示例如下:
我有一个参考文献列表,例如:
A |
---|
草 |
污垢 |
水 |
草+ |
现在我有一个订单列表,例如:
B | C |
---|---|
1 | 草 |
2 | 草+ |
3 | 土豆 |
4 | 草+ |
5 | 水 |
现在我想做的是查询订单列表,并获取与参考列表匹配的所有订单,所以我所做的是:
=QUERY(
B1:C,
"SELECT Col1, Col2
WHERE Col1 IS NOT NULL AND Col2 MATCHES '"&TEXTJOIN("|";TRUE;A1:A)&"' ORDER BY Col1 ASC",0
)
这返回给我:
D | E |
---|---|
1 | 草 |
5 | 水 |
而不是这个:
D | E |
---|---|
1 | 草 |
2 | 草+ |
4 | 草+ |
5 | 水 |
为什么最后带+的“草”被忽略了?有办法解决这个问题吗?我做错了什么吗?
感谢大家的帮助!
某些字符(*、+、?、^、$)需要转义,因为它们在正则表达式匹配中具有含义。尝试改变这个
TEXTJOIN("|";TRUE;A1:A)
到
substitute(TEXTJOIN("|";TRUE;A1:A);"+";"\+")
=sort(filter(B:C;xmatch(C:C;A:A)))