MarkLogic 将函数与正则表达式匹配

MarkLogic matches function with regular expression

我是 XQuery 的新手,请您帮我理解下面 MarkLogic XQuery 中的 §§.*$ 是什么:

if (matches($cite, '§'))
  replace($cite,'§.*$','')

此处$cite := "HI CONST Preamble"

在正则表达式中,正则表达式中的 $ is an anchor point 到输入字符串值的末尾。

§numeric entity reference of the § character, and . is a wildcard and the * is a quantifier 表示零到多。

matches() 表达式正在测试 $cite 是否包含 § 字符。如果是,那么它会尝试 replace() § 和它后面的所有字符,直到输入结束,什么都不做。

例如:

let $cite := "HI CONST Preamble"
return
  if (matches($cite, '§')) 
  then replace($cite,'§.*$','') 
  else "no match"

returns:“不匹配”,因为它根本不包含 §

然而,这:

let $cite := "HI CONST Preamble §foo bar baz."
return
  if (matches($cite, '§')) 
  then replace($cite,'§.*$','') 
  else "no match"

Returns:“HI CONST Preamble”因为确实包含§,所以§foo bar baz.被替换为“.