喜欢.//div[@id='foo\d+]
用div捕获div标签的东西id='foo123'
.
我正在使用.NET,如果这很重要的话.
正如其他答案所述,XPath 1.0不支持正则表达式.
尽管如此,您有以下选择:
使用XPath 1.0表达式(注意starts-with()
和translate()
函数),如下所示:
.//div [starts-with(@id, 'foo') and 'foo' = translate(@id, '0123456789', '') and string-length(@id) > 3 ]
使用EXSLT.NET - 有一种方法可以直接在XPath表达式中使用其函数,而无需使用XSLT.允许使用RegEx-es的EXSLT扩展函数是:regexp:match()
,regexp:replace()
和regexp:test()
使用 XPath 2.0/XSLT 2.0及其对正则表达式的内置支持(函数matches(),replace()和tokenize())
的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+')]
.