在XML/xDB查询中如何使用正则、特殊符号及通配符检索?
你遇到的失效问题是因为xDB的contains text通配符检索默认会将/识别为分词分隔符,同时你写的.*是正则语法,contains text的原生通配符规则不支持该写法,两种解决方案如下:
- 方案1:调整
contains text通配符写法,转义特殊字符contains text使用通配符模式时,/属于需要转义的元字符,用\转义即可正常识别,通配任意多字符直接用*即可,无需写正则语法的.*,修改后查询语句如下:
for $elem in /APP/TABLE/ROW where $elem/DATA contains text 'DL\/B125*' using wildcards return $elem
- 方案2:使用XQuery标准正则匹配函数
matches()
如果需要使用完整正则语法做检索,直接用matches()函数即可,该函数支持所有标准正则规则,无需适配contains text的特殊分词逻辑,查询语句如下:
for $elem in /APP/TABLE/ROW where matches($elem/DATA, 'DL/B125.*') return $elem
注意事项
如果检索内容中包含.、*、?这类正则元字符,需要额外加\转义才能作为普通字符匹配;需要忽略大小写检索时,可给matches()函数传入第三个参数i,示例:matches($elem/DATA, 'DL/B125.*', 'i')
内容的提问来源于stack exchange,提问作者SeanLink11
相关产品推荐
相关产品推荐

