我注意到这个可选的Lucene正则表达式语法,并且不确定它的用途是什么。在Lucene中执行正则表达式查询时,您可以将@
作为带有ANYSTRING标志的特殊字符启用,如下所示:
new RegexpQuery(new Term("text", "abc@"), RegExp.ANYSTRING);
尝试了一些事情,似乎的行为与:
相同new RegexpQuery(new Term("text", "abc.*"));
ElasticSearch docs请注意,它可以与其他可选语法一起使用,以提供“除”之外的任何查询,例如:
new RegexpQuery(new Term("text", "ab(@&~(cd))"), RegExp.ALL);
但即使这似乎与.*
相反也可以正常工作:
new RegexpQuery(new Term("text", "ab(.*&~(cd))"), RegExp.ALL);
那么为什么存在这种可选的@
语法?它只是.*
的别名,还是我错过了两者之间的细微差别?