Regex, чтобы найти слово 1 или слово 2, но не слово 3

У меня есть следующее сообщение:

Apr 12 12:48:02 poe true: sudo: nagios : command not allowed ; TTY=unknown ; PWD=/var/log/nagios;

Как создать регулярное выражение, которое ищет слово «Судо» или «Команда», но не ищет слово «истина»? Причина в том, что у меня есть другие сообщения, в которых есть только слова sudo и command, и мне не интересно просматривать сообщения с комбинацией этих двух слов с этим третьим словом. До сих пор я пытался:

1. (? =. * Word1) (? =. * Word2) 2. word1. * Word2

Они оба не смогли отловить слово, которое я не хочу По сути, я хочу, чтобы результирующий набор не состоял из тех сообщений, которые имели бы слово 3 вместе с word1 и word2, но хотел бы, чтобы результирующий набор имел либо word1, либо word2.

Спасибо!

( Добавлено из комментария )

<30>Jun 11 12:42:02 true:/var/ossec/logs/alerts/alerts.log Apr 12 12:48:01 duffy sudo: nagios : command not allowed ; TTY=unknown ; PWD=/var/log/nagios; 
<85>Apr 11 12:00:46 verne sudo: ndakjs2 : TTY=pts/0 ; PWD=/Defactor/2/rules/claimsfactor ; USER=NONE; COMMAND 

Если вы возьмете оба вышеуказанных сообщения, я хочу, чтобы регулярное выражение совпадало со вторым сообщение, поскольку в нем есть слово sudo, но оно не совпадает с первым сообщением, поскольку в нем есть слово true. Меня интересует только результирующий набор без слова TRUE. Хотя это первое сообщение имеет Sudo, я не хочу это сообщение.

-1
задан 14 April 2017 в 08:58

1 ответ

Вы просите об этом

^(?!.*true).*$

Вещество (?!...) является оператором с отрицательным прогнозом, который проверяет, существует ли какое-либо слово. Проверьте это здесь http://rubular.com/r/aYzwcfekrI

Кредит идет на этот вопрос SO .

Вы также можете просто использовать обычную программу, чтобы проверить, содержит ли она слово true.

Предполагая, что lines является массивом сообщений журнала, это будет что-то вроде этого

lines.each do |line|
  puts line unless line.include?("true")
end

Надеюсь, это поможет.

0
ответ дан 14 April 2017 в 08:58

Другие вопросы по тегам:

Похожие вопросы: