Я пытался определить собственный псевдокласс CSS в Nokogiri и столкнулся с некоторыми проблемами с неожиданными символами.
Я взял пример в документации Node и попытался изменить егодля моих нужд.Я хотел сопоставить регулярное выражение со значением node.text следующим образом:
node.css('script:regex("[\"\']([^/s]+)[\"\']")', Class.new {
def regex node_set, regex
node_set.find_all { |node| node.text =~ /#{regex}/ }
end
}.new)
Проблема в том, что Node # css принимает только строковый аргумент.#regex - это в основном вызов метода, а его аргумент также является строкой.Когда я запускаю этот код, я получаю что-то вроде:
Nokogiri::CSS::SyntaxError (unexpected '\"' after ''(?i-mx:[\'')
Я пробовал экранировать одинарные / двойные кавычки, но все равно получаю это или неожиданное '['.Как я могу передать одинарные / двойные кавычки в пользовательский аргумент метода css?
В то же время я просто сопоставил «скрипт», а затем перебрал набор узлов с помощью регулярного выражения.Однако использование пользовательского псевдо-css-класса было бы более полезным, поскольку его было бы проще использовать повторно.