61

.//div[@id='foo\d+]でdivタグをキャプチャするようなものid='foo123'

それが重要な場合、私は.NETを使用しています。

4

4 に答える 4

94

他の回答が指摘しているように、XPath1.0は正規表現をサポートしていません

それでも、次のオプションがあります

.//div
   [starts-with(@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エンジンを使用して、XPath2.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 に答える