質問
何かのようなもの .//div[@id='foo\d+]
div タグをキャプチャするには id='foo123'
.
それが重要な場合は、.NET を使用しています。
解決
他の回答が指摘しているように、 XPath 1.0 は正規表現をサポートしていません。
それでも、次のオプションがあります:
- XPath 1.0式を使用( < strong>
starts-with()
およびtranslate()
関数)このように:
.//div [starts-with(@id, 'foo') and 'foo' = translate(@id, '0123456789', '') and string-length(@id) > 3 ]
-
EXSLT.NETを使用 - 使用する方法がありますXSLTを使用する必要なく、XPath式で直接機能します 。 RegEx-esの使用を許可するEXSLT拡張関数は次のとおりです。
regexp :match()
、 < code> regexp:replace() および < strong>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 +')]
になります。
.NETでは、拡張オブジェクトを介してカスタムクラス(およびニーズに応じて適切にコーディングできる場合は正規表現)にアクセスできます。
チュートリアルこちら。
私もこれがやりたかったので、独自の基本を作成しました xpathモジュール.