Quelque chose comme .//div[@id='foo\d+]
pour capturer les balises div avec id='foo123'
.
J'utilise .NET, si cela compte.
Quelque chose comme .//div[@id='foo\d+]
pour capturer les balises div avec id='foo123'
.
J'utilise .NET, si cela compte.
Comme d'autres réponses l'ont noté, XPath 1.0 ne prend pas en charge les expressions régulières .
Néanmoins, vous avez les possibilités suivantes :
Utiliser une expression XPath 1.0 (notez le starts-with()
et translate()
fonctions) comme ceci :
.//div
[starts-with(@id, 'foo')
and
'foo' = translate(@id, '0123456789', '')
and
string-length(@id) > 3
]
Utilisez EXSLT.NET -- il y a un moyen de utiliser ses fonctions directement dans les expressions XPath sans avoir à utiliser XSLT . Les fonctions d'extension EXSLT qui permettent d'utiliser les RegEx-es sont les suivantes : regexp:match()
, regexp:replace()
et regexp:test()
Utilisez XPath 2.0 / XSLT 2.0 et son support intégré pour les expressions régulières (les fonctions matches() , remplacer() et tokenize() )
XPath 2.0 dispose de certaines fonctions qui prennent en charge les expressions régulières : matches()
, replace()
, tokenize()
.
XPath 1.0 ne prend pas en charge les expressions rationnelles.
Pour .NET, vous pouvez utiliser le moteur XPath de Saxon.Net pour bénéficier de la prise en charge de XPath 2.0.
Ainsi, si vous utilisez le moteur XPath 2.0 dans Saxon.NET, votre exemple se transformerait en : .//div[matches(@id,'foo\d+')]
.
J'ai également voulu faire cela et j'ai donc créé ma propre base. module xpath .
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.