Если вы имеете в виду сделать что-то вроде:
doc.search("//div[@id=/regex/]")
тогда я не думаю, что это можно сделать. Альтернатива состоит в том, чтобы найти все элементы и затем выполнить итерацию результатов, удаляя те, которые не соответствуют регулярному выражению.
result = doc.search("//div")
result.delete_if (|x| x.to_s !~ /regex/)
Есть много альтернативных подходов. В этой теме есть два других предложения: Hpricot и Regular Expression .
Обратите внимание: в зависимости от того, что именно вы пытаетесь сопоставить, вы можете использовать «Поддерживаемые, но разные» синтаксисы, доступные в Hpricot Wiki , например:
E[@foo$=“bar”]
Соответствует элементу E, чье «foo»
Значение атрибута заканчивается точно
строка «bar»