I am new to XQuery so could you please help me to understand what is §
and §.*$
in below MarkLogic XQuery:
if (matches($cite, '§'))
replace($cite,'§.*$','')
here $cite := "HI CONST Preamble"
CodePudding user response:
In regex, the $
in a regex expression is an anchor point to the end of the input string value.
§
is a numeric entity reference of the §
character, and .
is a wildcard and the *
is a quantifier meaning zero to many.
The matches()
expression is testing whether the $cite
contains the §
character. If it does, then it attempts to replace()
the §
and all of the characters following it until the end of the input with nothing.
For example:
let $cite := "HI CONST Preamble"
return
if (matches($cite, '§'))
then replace($cite,'§.*$','')
else "no match"
returns: "no match" because it doesn't contain the §
at all.
However, this:
let $cite := "HI CONST Preamble §foo bar baz."
return
if (matches($cite, '§'))
then replace($cite,'§.*$','')
else "no match"
Returns: "HI CONST Preamble" because it does contain §
, so §foo bar baz.
is replaced with "".