Opengrok全局搜索锚点字符无法正确转义匹配问题咨询
问题根因与解决方案
1. 首次查询报错的原因
Opengrok官方给出的特殊字符列表仅为查询语法层面的保留字符,但底层依赖的Lucene正则引擎还会将<、>识别为正则词边界特殊标记,这类字符不属于查询语法保留字符但属于正则语法保留字符,直接使用就会触发正则解析错误。
2. 转义后返回0结果的原因
- 你在查询语句中错误使用了HTML实体转义写法
\<、\>,而非直接对<、>加反斜杠转义,正则引擎无法识别这种HTML实体格式的转义写法,自然匹配不到对应内容。 - 末尾的
*量词作用对象是前面的\>,代表匹配>零次或多次,而非你预期的<property>之后匹配任意内容,语法逻辑不符合你的实际查询需求。
正确查询写法
如果要匹配所有包含<property>字符串的内容,正确的正则查询语句为:/\<property\>.*/
如果需要匹配<property>标签包裹的完整内容,可以使用:/\<property\>.*\<\/property\>/
如果需要忽略大小写匹配,可额外添加正则忽略大小写标记:/(?i)\<property\>.*/
内容的提问来源于stack exchange,提问作者Oussama Ben Ghorbel
相关产品推荐
相关产品推荐

