MarkLogic 中未正确分析字符串
string not analyzed correctly in MarkLogic
我的目标是分析邮政编码并使用正则表达式和分析字符串函数识别单独的部分。
我使用 MarkLogic 10。使用正则表达式匹配可以正确验证下面的示例。但是,当我用它来分析字符串时,它无法正确识别各个组:
(: analyze dutch postal code :)
let $regex := "^[1-9]\d{3}([A-Z]{2}(\d+(\S+)?)?)?$"
return fn:analyze-string("1234AA11bis", $regex)
它 return 如下:
<s:analyze-string-result xmlns:s="http://www.w3.org/2005/xpath-functions">
<s:match>1234<s:group nr="1">AA<s:group nr="2">1<s:group nr="3">1bis</s:group></s:group></s:group>
</s:match>
</s:analyze-string-result>
我希望它 return '11' 作为第 2 组的值,'bis' 作为第 3 组的结果。
我使用了一些在线正则表达式分析器,return 得到了正确的结果。我是否遗漏了一些标志或其他东西,或者这只是 MarkLogic 中的一个错误?
我不确定规范对嵌套贪婪模式有何规定,但有一个简单的解决方法:
let $regex := "^[1-9]\d{3}([A-Z]{2}(\d+([^\d\s]+)?)?)?$"
return fn:analyze-string("1234AA11bis", $regex)
HTH!
我的目标是分析邮政编码并使用正则表达式和分析字符串函数识别单独的部分。
我使用 MarkLogic 10。使用正则表达式匹配可以正确验证下面的示例。但是,当我用它来分析字符串时,它无法正确识别各个组:
(: analyze dutch postal code :)
let $regex := "^[1-9]\d{3}([A-Z]{2}(\d+(\S+)?)?)?$"
return fn:analyze-string("1234AA11bis", $regex)
它 return 如下:
<s:analyze-string-result xmlns:s="http://www.w3.org/2005/xpath-functions">
<s:match>1234<s:group nr="1">AA<s:group nr="2">1<s:group nr="3">1bis</s:group></s:group></s:group>
</s:match>
</s:analyze-string-result>
我希望它 return '11' 作为第 2 组的值,'bis' 作为第 3 组的结果。
我使用了一些在线正则表达式分析器,return 得到了正确的结果。我是否遗漏了一些标志或其他东西,或者这只是 MarkLogic 中的一个错误?
我不确定规范对嵌套贪婪模式有何规定,但有一个简单的解决方法:
let $regex := "^[1-9]\d{3}([A-Z]{2}(\d+([^\d\s]+)?)?)?$"
return fn:analyze-string("1234AA11bis", $regex)
HTH!