Могу ли я использовать Regex в выражении XPath?

Что-то вроде .//div[@id='foo\d+] для захвата тегов div с помощью id='foo123'.

Я использую .NET, если это имеет значение.

Ответ 1

Как отмечали другие ответы, XPath 1.0 не поддерживает регулярные выражения.

Тем не менее, у вас есть следующие параметры:

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

Ответ 2

В XPath 2.0 есть некоторые функции, которые поддерживают регулярные выражения: matches(), replace(), tokenize().

В XPath 1.0 нет поддержки регулярных выражений.

Для .NET вы можете использовать движок XPath в Saxon.Net для поддержки XPath 2.0.

Итак, если вы используете движок XPath 2.0 в Saxon.NET, ваш пример будет выглядеть так: .//div[matches(@id,'foo\d+')].

Ответ 3

В .NET у вас есть возможность доступа к вашим пользовательским классам (и, следовательно, регулярному выражению, если вы можете правильно его кодировать для своих нужд) через Extension Objects.

Учебник здесь.

Ответ 4

Я также хотел сделать это, создав собственный базовый xpath module.