61

类似于.//div[@id='foo\d+]id='foo123'.

如果这很重要,我正在使用.NET。

4

4 回答 4

94

正如其他答案所指出的,XPath 1.0不支持正则表达式

尽管如此,您有以下选择

.//div
   [开始于(@id,'foo')
  和
   'foo' = translate(@id, '0123456789', '')
  和
   字符串长度(@id)> 3   
   ]
于 2009-01-01T21:32:24.527 回答
28

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+')].

于 2009-01-01T16:01:22.820 回答
2

在 .NET 中,您可以通过扩展对象访问您的自定义类(如果您可以根据需要对其进行适当编码,则可以访问正则表达式)。

教程在这里

于 2009-01-01T16:05:42.063 回答
0

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

于 2010-07-02T02:41:48.677 回答