.//div[@id='foo\d+]
でdivタグをキャプチャするようなものid='foo123'
。
それが重要な場合、私は.NETを使用しています。
他の回答が指摘しているように、XPath1.0は正規表現をサポートしていません。
それでも、次のオプションがあります。
starts-with()
およびtranslate()
関数に注意)を使用します。.//div [starts-with(@id、'foo') と 'foo' = translate(@id、 '0123456789'、'') と 文字列の長さ(@id)> 3 ]
EXSLT.NETを使用する-XSLTを使用せずに、XPath式でその関数を直接使用する方法があります。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エンジンを使用して、XPath2.0をサポートできます。
したがって、Saxon.NETでXPath 2.0エンジンを使用する場合、例は次のようになります.//div[matches(@id,'foo\d+')]
。
.NETでは、拡張オブジェクトを介してカスタムクラスにアクセスできます(したがって、必要に応じて適切にコーディングできる場合は正規表現)。
ここのチュートリアル。
また、これを実行したかったので、独自の基本的なxpathモジュールを作成しました。