鉴于以下内容,
<Line>
<Supplier>Fuel Surcharge - 36</Supplier>
<Supplier>Fuel Surcharge - 35</Supplier>
<Supplier>46081 46150 46250 46280 46286</Supplier>
<Supplier>Fuel Surcharge - 35451</Supplier>
<Supplier>46081</Supplier>
</Line>
这里的想法是当节点带有迭代的5位数字时返回“true”。
这是我到目前为止所做的,
matches(./Supplier, "[^(\d{5}\s*)+]");
这里的正则表达式是提取具有或不带空格的5位数的值,无论迭代如何。
我得到的结果都是真的。意味着它在某个地方不对。你能帮助我吗?
感谢。
答案 0 :(得分:1)
你的表达有两个问题:
fn:matches(xs:string?, xs:string)
需要两个字符串作为参数,您需要为第一个字符串传递一系列字符串。要为轴步骤中的每个节点调用函数,请将其添加为另一个(仅限XPath 2.0及更高版本)。您可以在参数中使用点.
(上下文)。
尝试类似
的内容./Supplier/matches(., "^(\d{5}\s*)+$")
对于第三和第五行将产生true。如果它必须包含(并且不完全构造)fife-digit-numbers和spaces的重复模式,请从正则表达式中删除^
和$
。< / p>
答案 1 :(得分:0)
试试这个:matches(./Supplier, '(.*)((\d{5}(\s*))+)(.*)')