【发布时间】:2010-09-29 03:16:54
【问题描述】:
.//div[@id='foo\d+] 之类的东西用id='foo123' 捕获 div 标签。
我正在使用 .NET,如果这很重要的话。
【问题讨论】:
.//div[@id='foo\d+] 之类的东西用id='foo123' 捕获 div 标签。
我正在使用 .NET,如果这很重要的话。
【问题讨论】:
正如其他答案所指出的,XPath 1.0 不支持正则表达式。
不过,您有以下选择:
starts-with() 和 translate() 函数),如下所示:使用EXSLT.NET——有一种方法可以使用use its functions directly in XPath expressions without having to use XSLT。允许使用 RegEx-es 的 EXSLT 扩展函数有:regexp:match()、regexp:replace() 和 regexp:test()
使用XPath 2.0/XSLT 2.0及其inbuilt support for regular expressions(函数matches()、replace()和tokenize())
【讨论】:
我也想这样做,所以创建了我自己的基本xpath module。
【讨论】:
XPath 2.0 有一些函数支持正则表达式:matches()、replace()、tokenize()。
在 XPath 1.0 中不支持正则表达式。
对于 .NET,您可以使用 Saxon.Net 中的 XPath 引擎来支持 XPath 2.0。
因此,如果在 Saxon.NET 中使用 XPath 2.0 引擎,您的示例将转向:.//div[matches(@id,'foo\d+')]。
【讨论】:
在 .NET 中,您可以通过扩展对象访问您的自定义类(如果您可以根据需要对其进行适当编码,则可以访问正则表达式)。
教程here.
【讨论】: