Ich versuche eine XQuery mit fn:matches
mit einem regulären Ausdruck, aber die MarkLogic-Implementierung von XQuery scheint Hexadezimale Zeichen Darstellungen nicht zu ermöglichen. Das folgende gibt mir einen "Ungültiger regulärer Ausdruck" Fehler.Reguläre Ausdrücke in MarkLogic xQuery
(: 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>
Diese gibt jedoch den Fehler nicht.
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>
Gibt es eine Möglichkeit, die hexadezimale Zeichendarstellung oder eine Alternative zu verwenden, die mir das gleiche Ergebnis in Marklogic-Implementierung von XQuery geben würde?
Können Sie den folgenden Code versuchen und lassen Sie uns wissen, wenn es ohne Fehler läuft: 'let $ regex: = '[^ \ x00 \ xFF]'' Wenn es läuft, bedeutet dies, dass Sie ein Problem mit dem Bereich haben. Wenn es nicht ausgeführt wird, scheint MarkLogic regex hexadezimale Übereinstimmungen nicht zu akzeptieren. –
Danke. Es läuft tatsächlich: Lassen Sie $ Regex: = '[^ \ x00- \ xFF]' zurück $ Regex gibt keinen Fehler – kalinma
Das Problem ist die Hexadezimalzeichen in einem Bereich dann. Jede Regex-Engine hat verschiedene Ausweichregeln, wenn Sie einen Zeichensatz verwenden (dh manche Engines benötigen '\ [az \]' andere brauchen möglicherweise '[\ x {00}]'. Es wird schwierig sein, ohne einen tatsächlichen zu testen Die MarkLogic-Konsole vor mir. –