xpath +正则表达式:匹配文本

时间:2018-07-16 19:20:04

标签: regex selenium xpath

我正在尝试编写xpath,以便仅返回带有数字文本的节点。 我想使用正则表达式,希望它能起作用

td[matches(text(),'[\d.]')]

任何人都可以帮助我了解我在这里做错了什么

<tr>
        <td>1</td>
        <td>10</td>
        <td>a</td>
</tr>

3 个答案:

答案 0 :(得分:2)

接缝中缺少量化字符,[\d.]仅匹配1个字符,因此应选择1个字符,另一个站点上的10个字符则需要+之类的东西,因此请尝试使用正则表达式: td[matches(text(),'\d+')]

此外,正则表达式中的.将使其捕获非数字字符,请勿添加该数字。

您可以在regex101上测试所有正则表达式查询。

答案 1 :(得分:2)

到目前为止,AFAIK Selenium仅支持XPath 1.0,因此不支持matches()

您可以尝试以下操作:

//td[number(.) >= 0 or number(.) < 0]

使用整数匹配表格单元格

答案 2 :(得分:1)

替换:

td[matches(text(),'[\d+]')]

具有:

td[matches(text(),'\d+')]

注意: 正则表达式仅在xPath 2.0

中有效