Regex XQuery MarkLogic中的模式或格式匹配
我正在寻找给定的字符串,它必须是Regex XQuery MarkLogic中的模式或格式匹配,regex,xquery,marklogic,Regex,Xquery,Marklogic,我正在寻找给定的字符串,它必须是*(*)格式,*不应该有空格,在(之前没有两个单词 我正在搜索MarkLogic DB,以查看给定列值是否为[^\s]+\((?!\s)[^()]+(?格式,如果不是,请将其替换为此格式 我仍然无法获取数据,无法编写要更新的查询 我正在搜索数据库作为 let $query-opts := cts:search(doc(), cts:and-query(( cts:directory-query(("/xyz/documentDa
*(*)
格式,*
不应该有空格,在(
之前没有两个单词
我正在搜索MarkLogic DB,以查看给定列值是否为[^\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>
)
)
let$query opts:=cts:search(doc(),
cts:和查询((
目录查询((“/xyz/documentData/”,“1”),
元素查询(
xs:QName(“cd:clause”),(:内部元素扩展用于检查查询id:)
cts:和查询((
cts:element属性值查询(xs:QName(“cd:clause”)、xs:QName(“tag”)、“Title”),(:仅当类型为“Title”:
元素属性值查询(xs:QName(“cd:xmetadata”)、xs:QName(“标记”)、“作者”)
))
)
))
对于$d,在$query选项中
返回(
对于$d//cd:document/cd:clause/cd:xmetadata[fn:matches(@tag,“Author”)]/cd:metadata\u string中的$x
其中fn:matches($x/string(),“[^\s]+\(?!\s)[^()]+(?函数不支持组修饰符,如(?!
和(?)。简化您的模式,并在匹配后捕获误报(如有必要)
在对你想做的事情进行有根据的猜测时,我认为你在寻找类似的东西:
where fn:matches($x, '^.+\([^)]+\).*$') (: it uses parentheses :)
and fn:not(fn:matches($x, '^[^\s]+\([^\s)]+\)$')) (: but does not comply to strict rules :)
HTH!很抱歉响应太晚。非常感谢您的快速响应。这很有效。但无法匹配xyz 123(123_xyz)等值。括号周围不应该有空格,但可以在单词之间。我尝试了类似[^-\s][\w\s*]+[^-\s]([^\s][\w\s*]+[^\s]的方法,这也不起作用。非常感谢任何帮助。它不应该以空格开头,也不应该以空格结尾。我建议收集两组值:一组有效,另一组无效。对那些尝试了几次正则表达式的值运行单独的测试。我确实注意到上面注释中的正则表达式在
(,您提到的匹配值示例中有一个
\u,如果我没有弄错的话,
\w`不会捕获该值。