Marklogic 中的正则表达式无效
Invalid regular expression in Marklogic
我试图在一些逗号分隔的字符串中匹配独立数字,在用逗号分隔这个字符串并将它保存到变量$i
之后,我使用这个正则表达式:
fn:matches(fn:normalize-space($i), "(?<!\S)\d+(?!\S)")
- 示例:(123) 应该 return
true
.
- 示例:(abc123) 应该 return
false
.
- 示例:(abc 123 abc) 应该 return
false
.
但是,它给了我:
[1.0-ml] XDMP-REGEX: (err:FORX0002) .
这个表达式有什么问题?
XQuery regex 表达式不支持先行和后行。
但是,如果您只是想验证该值是否为纯数值,则不需要它们。您可以将表达式锚定到值的开头和结尾,并确保所有 in-between 都是数字:
fn:matches(fn:normalize-space($i), "^\d+$")
我试图在一些逗号分隔的字符串中匹配独立数字,在用逗号分隔这个字符串并将它保存到变量$i
之后,我使用这个正则表达式:
fn:matches(fn:normalize-space($i), "(?<!\S)\d+(?!\S)")
- 示例:(123) 应该 return
true
. - 示例:(abc123) 应该 return
false
. - 示例:(abc 123 abc) 应该 return
false
.
但是,它给了我:
[1.0-ml] XDMP-REGEX: (err:FORX0002) .
这个表达式有什么问题?
XQuery regex 表达式不支持先行和后行。
但是,如果您只是想验证该值是否为纯数值,则不需要它们。您可以将表达式锚定到值的开头和结尾,并确保所有 in-between 都是数字:
fn:matches(fn:normalize-space($i), "^\d+$")