Regex fn:replace中的Markloigc:Escape正则表达式
有人能帮助我如何在fn:replace()中转义正则表达式吗 我的实际代码看起来像 请求Regex fn:replace中的Markloigc:Escape正则表达式,regex,xquery,marklogic,Regex,Xquery,Marklogic,有人能帮助我如何在fn:replace()中转义正则表达式吗 我的实际代码看起来像 请求 let $x := "/SLR/[2009] 3 SLR(R) 0327.xml" return ( fn:replace( $x, $x, "Expected Value") ) let $x := "/SLR/[2009] 3 SLR(R) 0327.xml" return ( fn:replace( $x, "/SLR/\[2009\] 3 SLR\(R\) 0327.xml", "Expe
let $x := "/SLR/[2009] 3 SLR(R) 0327.xml"
return
(
fn:replace( $x, $x, "Expected Value")
)
let $x := "/SLR/[2009] 3 SLR(R) 0327.xml"
return
(
fn:replace( $x, "/SLR/\[2009\] 3 SLR\(R\) 0327.xml", "Expected Value")
)
响应:意外响应,因为其中包含正则表达式项
/SLR/[2009] 3 SLR(R) 0327.xml
如果手动转义正则表达式,则得到了预期的结果
像
请求
let $x := "/SLR/[2009] 3 SLR(R) 0327.xml"
return
(
fn:replace( $x, $x, "Expected Value")
)
let $x := "/SLR/[2009] 3 SLR(R) 0327.xml"
return
(
fn:replace( $x, "/SLR/\[2009\] 3 SLR\(R\) 0327.xml", "Expected Value")
)
响应:
Expected Value
我的问题是我无法手动处理1000个文件
有谁能帮我简化一下吗?functx库提供了一种方法:
functx:escape-for-regex('[abc]') \[abc\]
您确定需要正则表达式吗?您可以在这里检查子字符串。@karthik manchala谢谢您的建议,我实际上想替换xml名称。我认为fn:replace()对我来说是更好的选择。我用下面的解决方案得到了预期的输出。