gpt4 book ai didi

regex - MarkLogic 的 xQuery 中的正则表达式

转载 作者:行者123 更新时间:2023-12-04 11:36:45 35 4
gpt4 key购买 nike

我正在尝试使用 fn:matches 的 XQuery使用正则表达式,但 XQuery 的 MarkLogic 实现似乎不允许十六进制字符表示。下面给了我一个“ 无效的正则表达式 ”错误。

(: Find text containing non-ISO-Latin characters :)
let $regex := '[^\x00-\xFF]'
let $results := fn:collection('mydocs')//myns:myelem[fn:matches(., $regex)]
let $count := fn:count($results)

return
<figures count="{$count}">
{ $results }
</figures>

但是,这个并没有给出错误。
let $regex := '[^a-zA-Z0-9]'
let $results := fn:collection('mydocs')//myns:myelem[fn:matches(., $regex)]
let $count := fn:count($results)

return
<figures count="{$count}">
{ $results }
</figures>

在 MarkLogic 的 XQuery 实现中,有没有一种方法可以使用十六进制字符表示,或者可以给我相同结果的替代方法?

最佳答案

XQuery 可以在字符串中使用数字字符引用,这与 XML 和 HTML 可以使用的方式非常相似:

十进制:"&#10;"十六进制:"&#0a;" (或只是 "&#a;")

但是,您不能表示某些字符:<= "&#x09;" , 例如。

XQuery 中没有正则表达式类型(您只需将字符串用作正则表达式),因此您可以在正则表达式中使用字符引用:

fn:matches("a", "[^&#x09;-&#xFF;]")

(: => xs:boolean("false") :)

更新 :这是关于字符引用的 XQuery 1.0 规范: http://www.w3.org/TR/xquery/#dt-character-reference .

基于一些简短的测试,我认为 MarkLogic 强制执行 XML 1.1 字符引用规则: http://www.w3.org/TR/xml11/#charsets

对于后代,这里是 XML 1.0 规则: http://www.w3.org/TR/REC-xml/#charsets

关于regex - MarkLogic 的 xQuery 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29993125/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com