Я новичок в XQuery, поэтому не могли бы вы помочь мне понять, что такое §
и §.*$
в приведенном ниже MarkLogic XQuery:
if (matches($cite, '§'))
replace($cite,'§.*$','')
здесь $cite := "HI CONST Preamble"
В регулярном выражении $
в выражении регулярного выражения является точкой привязки до конца значения входной строки.
§
— это числовая ссылка на сущность символа §
, а .
— это подстановочный знак, а *
— это квантификатор, означающий от нуля до многих.
Выражение matches()
проверяет, содержит ли $cite
символ §
. Если это так, то он пытается replace()
§
и все символы, следующие за ним, до конца ввода без ничего.
Например:
let $cite := "HI CONST Preamble"
return
if (matches($cite, '§'))
then replace($cite,'§.*$','')
else "no match"
возвращает: «нет совпадения», потому что вообще не содержит §
.
Однако это:
let $cite := "HI CONST Preamble §foo bar baz."
return
if (matches($cite, '§'))
then replace($cite,'§.*$','')
else "no match"
Возвращает: «HI CONST Preamble», поскольку содержит §
, поэтому §foo bar baz.
заменяется на «».