我可以在XPathexpression式中使用正则expression式吗?

类似.//div[@id='foo\d+]来捕获id='foo123' div标签。

如果有问题,我正在使用.NET。

正如其他答案所指出的那样, XPath 1.0不支持正则expression式

尽pipe如此,您有以下select

  • 使用XPath 1.0expression式 (注意starts-with()translate()函数)如下所示:
 .//div
    [开始(@id,'foo') 
  和 
    'foo'=翻译(@id,'0123456789','')
  和
   string长度(@id)> 3   
    ]
  • 使用EXSLT.NET可以直接在XPathexpression式中使用它的函数,而无需使用XSLT 。 允许RegEx-es使用的EXSLT扩展函数是: regexp:match()regexp:replace()regexp:test()

  • 使用 XPath 2.0 / XSLT 2.0及其对正则expression式的内置支持 (函数匹配()replace()tokenize()

XPath 2.0有一些支持正则expression式的函数: matches()replace()tokenize()

在XPath 1.0中没有正则expression式的支持。

对于.NET,您可以使用Saxon.Net中的XPath引擎来支持XPath 2.0。

因此,如果在Saxon.NET中使用XPath 2.0引擎,您的示例将转到: .//div[matches(@id,'foo\d+')]

在.NET中,您可以通过扩展对象访问您的自定义类(因此,如果您可以根据自己的需要对其进行正确编写,则为正则expression式)。

这里的教程。

我也想这样做,所以创build了我自己的基本xpath模块 。