【发布时间】:2018-05-17 19:22:17
【问题描述】:
我正在寻找给定的字符串,它必须是*(*) 格式,* 不应该有空格,( 之前没有两个单词。
我正在搜索 MarkLogic DB 以查看给定的列值是否为 [^\s]+\((?!\s)[^()]+(?<!\s)\) 格式,如果不是则用这种格式替换它。
我仍然停留在获取数据,无法编写查询来更新
我正在搜索数据库
let $query-opts := cts:search(doc(),
cts:and-query((
cts:directory-query(("/xyz/documentData/"),"1"),
cts:element-query(
xs:QName("cd:clause"), (: <clause> element inside extended for checking query id :)
cts:and-query((
cts:element-attribute-value-query( xs:QName("cd:clause"), xs:QName("tag"), "Title" ), (: only if the <clause> is of type "Title" :)
cts:element-attribute-value-query( xs:QName("cd:xmetadata"), xs:QName("tag"), "Author")
))
)
))
for $d in $query-opts
return (
for $x in $d//cd:document/cd:clause/cd:xmetadata[fn:matches(@tag,"Author")]/cd:metadata_string
where fn:matches($x/string(), "[^\s]+\((?!\s)[^()]+(?<!\s)\)")
return
( <documents> {
<documentId> {$d//cd:cdf/cd:documentId/string()}</documentId>
}</documents>
)
)
它抛出错误无效模式
【问题讨论】: