Java Lucene'的目的是什么;s@(anystring)可选regexp语法

Java Lucene'的目的是什么;s@(anystring)可选regexp语法,java,regex,lucene,Java,Regex,Lucene,我注意到这个可选的Lucene正则表达式语法,不确定它的用途。在Lucene中执行正则表达式查询时,可以将@作为带有标志的特殊字符启用,如下所示: new RegexpQuery(new Term("text", "abc@"), RegExp.ANYSTRING); 尝试了几件事,但其表现似乎与: new RegexpQuery(new Term("text", "abc.*")); 请注意,它可以与其他可选语法一起使用,以提供“除此之外的任何内容”查询,例如: new RegexpQue

我注意到这个可选的Lucene正则表达式语法,不确定它的用途。在Lucene中执行正则表达式查询时,可以将
@
作为带有标志的特殊字符启用,如下所示:

new RegexpQuery(new Term("text", "abc@"), RegExp.ANYSTRING);
尝试了几件事,但其表现似乎与:

new RegexpQuery(new Term("text", "abc.*"));
请注意,它可以与其他可选语法一起使用,以提供“除此之外的任何内容”查询,例如:

new RegexpQuery(new Term("text", "ab(@&~(cd))"), RegExp.ALL);
但是,即使这样,似乎也可以用
*
代替:

new RegexpQuery(new Term("text", "ab(.*&~(cd))"), RegExp.ALL);

那么,为什么存在这种可选的
@
语法呢?它只是
*
的别名,还是我所缺少的两者之间有细微的区别?

它看起来像@匹配整个字符串,但不知道它是否像零宽度断言一样使用。因此
@&~(cd)
看起来像字符串
cd
@sln之外的任何东西-好主意,但似乎不是零宽度断言(
a@c
匹配“abc”)
*&~(cd)
似乎也匹配除“cd”之外的任何东西(匹配“cda”和“acd”,但不匹配“cd”)<代码>&是一个交叉点,所以
(a.*)和(.*c)
与“abc”匹配。Doc看起来很奇怪。