Tôi đang thử một XQuery sử dụng fn:matches
với biểu thức chính quy, nhưng việc thực hiện MarkLogic của XQuery dường như không cho phép biểu diễn ký tự thập lục phân. Phần sau đây cho tôi một lỗi "biểu thức chính quy không hợp lệ".Các biểu thức chính quy trong xlog của 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>
Tuy nhiên, điều này không đưa ra lỗi.
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>
Có cách nào để sử dụng biểu diễn ký tự thập lục phân hay giải pháp thay thế cho tôi kết quả tương tự, trong việc triển khai XQuery của MarkLogic không?
Bạn có thể thử mã sau và cho chúng tôi biết nếu nó chạy không có lỗi: 'let $ regex: = '[^ \ x00 \ xFF]'' Nếu nó chạy, điều đó có nghĩa là bạn gặp sự cố với phạm vi. Nếu nó không chạy, thì regex MarkLogic sẽ xuất hiện để không chấp nhận các kết quả thập lục phân. –
Cảm ơn. Nó thực sự chạy: để $ regex: = '[^ \ x00- \ xFF]' trả lại $ regex không trả lại lỗi – kalinma
Vấn đề là các ký tự hex trong một phạm vi sau đó. Mỗi công cụ regex có các quy tắc thoát khác nhau khi bạn đang sử dụng một bộ ký tự (tức là động cơ đôi khi yêu cầu '\ [az \]' người khác có thể cần '[\ x {00}]'. Bảng điều khiển MarkLogic trước mặt tôi –