我正在尝试编写xpath,以便仅返回带有数字文本的节点。 我想使用正则表达式,希望它能起作用
td[matches(text(),'[\d.]')]
任何人都可以帮助我了解我在这里做错了什么
<tr>
<td>1</td>
<td>10</td>
<td>a</td>
</tr>
答案 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