views:

4674

answers:

4

Something like ".//div[@id='foo\d+]" to capture div tags with id='foo123'.

I'm using .NET, if that matters.

+13  A: 

XPath 2.0 has some functions which support regular expressions: matches(), replace(), tokenize()

In XPath 1.0 there is no regex support.

For .NET you can use the XPath engine in Saxon.Net to have XPath 2.0 support.

So if using the XPath 2.0 engine in Saxon.NET your example would turn to: ".//div[matches(@id,'foo\d+')]"

deathy
+1  A: 

In .NET you have the ability to access your custom classes (and therefore regex if you can code it appropriately for your needs) via Extension Objects.

Tutorial here.

annakata
+7  A: 

As other answers have noted, XPath 1.0 does not support regular expressions.

Nonetheless, you have the following options:

.//div
   [starts-with(@id, 'foo') 
  and 
   'foo' = translate(@id, '0123456789', '')
  and
   string-length(@id) > 3   
   ]
Dimitre Novatchev
A: 

I also wanted to do this so created my own basic xpath module.

Plumo