Подтвердить что ты не робот

Определите, содержит ли строка какой-либо набор строк

Я использую Mechanize для взаимодействия с несколькими веб-страницами, и я пытаюсь определить, привело ли сообщение к данной форме сообщение об ошибке.

Сейчас я делаю это:

agent.page.body.include?("I'm an error message!")

Но я только что обнаружил другое сообщение об ошибке. Поскольку я не хочу делать:

agent.page.body.include?("I'm an error message!") || agent.page.body.include?("Another error message")

Как определить, содержит ли тело страницы сообщение об ошибке?

4b9b3361

Ответ 1

error_messages.any? { |mes| agent.page.body.include? mes }

Ответ 2

В качестве альтернативы сделайте это в одном проходе Regex:

error_messages = /I'm an error message!|Another error message/
if agent.page.body =~ error_messages
  ...
end

Вам нужно убедиться, что вы избегаете сообщений об ошибках, содержащих специальные символы регулярных выражений. Чтобы сделать его пригодным для обслуживания:

if agent.page.body =~ Regexp.union("foo", "bar", "jim.bob", "jam|jam")
  ...
end

Вы должны использовать это только в том случае, если вы протестировали и обнаружили, что скорость ответа Nakilon недостаточна.:)