我如何在xpath 1.0中使用正则表达式

时间:2018-05-15 14:45:32

标签: regex xpath

这是我的xpath

//dns:tbody//dns:td[1][@rowspan="1"]/text()

我想找到一个解决方案,如何使属性rowspan @rowspan=" only number "只接受数字

我在XPath 1.0中寻找解决方案正则表达式

Regexp = ^[0-9]*$ 我的问题我不知道如何将正则表达式与XPath1.0或任何其他解决方案集成

3 个答案:

答案 0 :(得分:1)

您可以使用测试的变通方法:

  • 如果文本是数字(使用number()功能)
  • 如果文字不以-开头(starts-with()
  • 如果文字不包含点(带contains()
像那样:

//dns:tbody//dns:td[1][string(number(@rowspan))!='NaN'][not(starts-with(@rowspan, '-'))][not(contains(@rowspan, '.'))]/text()

//dns:tbody//dns:td[1][not(string(number(@rowspan))='NaN' or starts-with(@rowspan, '-') or contains(@rowspan, '.'))]/text()

答案 1 :(得分:0)

某些XPath实现允许您提供自己的功能。您需要查看有关XPath实现的文档。

Java:http://xml.apache.org/xalan-j/xpath_apis.html#functionresolver

答案 2 :(得分:0)

尝试使用以下解决方案而不是正则表达式:

//dns:tbody//dns:td[1][number(@rowspan)<=0 or number(@rowspan)>0]/text()

这应该使@rowspan与int值匹配