Pergunta

Algo como .//div[@id='foo\d+] a tags captura div com id='foo123'.

Eu estou usando .NET, se o que importa.

Foi útil?

Solução

Como outras respostas têm notado, XPath 1.0 não suporta expressões regulares .

No entanto, você tem as seguintes opções :

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

Outras dicas

XPath 2.0 tem algumas funções que suportam expressões regulares: matches(), replace(), tokenize()

.

Em XPath 1.0 não há suporte regex.

Para .NET, você pode utilizar o motor de XPath em Saxon.Net ter o apoio XPath 2.0.

Assim, se utilizar o motor de XPath 2.0 em Saxon.NET, o seu exemplo se transformaria em:. .//div[matches(@id,'foo\d+')]

Em .NET você tem a capacidade de acessar suas classes personalizadas (e, portanto, regex se você pode codificá-lo de forma adequada para as suas necessidades), através de objectos de extensão.

aqui .

Eu também queria fazer isso para criei minha própria básica xpath módulo .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top