Sto provando un XQuery utilizzando fn:matches
con un'espressione regolare, ma l'implementazione MarkLogic di XQuery non sembra consentire la rappresentazione di caratteri esadecimali. Quanto segue mi dà un errore "Espressione regolare non valida".Espressioni regolari in xQuery di 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>
Tuttavia, questo non dà l'errore.
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'è un modo per utilizzare la rappresentazione esadecimale dei caratteri, o in alternativa che mi avrebbe dato lo stesso risultato, in attuazione di Mark Logic di XQuery?
Puoi provare il seguente codice e farci sapere se funziona senza errori: 'let $ regex: = '[^ \ x00 \ xFF]'' Se viene eseguito, significa che hai un problema con l'intervallo. Se non viene eseguito, la regex di MarkLogic sembrerà non accettare corrispondenze esadecimali. –
Grazie. Effettua effettivamente: let $ regex: = '[^ \ x00- \ xFF]' restituisce $ regex non restituisce un errore – kalinma
Il problema sono i caratteri esadecimali in un intervallo quindi. Ogni motore regex ha regole di escape diverse quando si utilizza un set di caratteri (ad esempio, a volte i motori richiedono '\ [az \]' altri potrebbero aver bisogno di '[\ x {00}]'. Sarà difficile testare senza un vero e proprio La console MarkLogic davanti a me –