Я хотел бы отменить это регулярное выражение, которое соответствует, если IP-адрес 1.2.3.4, а затем «myhost», но я хочу, чтобы оно совпадало, если IP-адрес не 1.2.3.4, но за ним следует myhost
^(1\.2\.3\.4) (?=myhost)
Я пытался сделать это, но это не работает.
^(?!(1\.2\.3\.4)) (?=hostname)
Я также хотел бы отрицать это регулярное выражение, которое соответствует имени хоста, но я хотел бы соответствовать, если имя хоста не "myhost"
(?<=1\.2\.3\.4) (myhost)
регулярное выражение соответствует myhost, если ему предшествует 1.2.3.4
идея состоит в том, чтобы проверить некоторые файлы /etc /hosts и убедиться, что ip совпадает с именем хоста и наоборот. Я буду делать это в ansible .. так что, если регулярное выражение может быть объединено в одну строку ..
Короче говоря, я хочу проверить, что всегда правильно. Я использую ANSIBLE факт, чтобы найти IP и имя хоста .. У меня просто проблема с регулярными выражениями.
редактировать: как просили несколько примеров:
у меня есть следующие 4 строки:
1.2.3.4 hostname (1)
1.2.3.5 hostname (2)
1.2.3.4 otherhost (3)
1.2.3.5 otherhost (4)
строка (1) ничего не должно совпадать.
в строках (2) он должен соответствовать IP-адресу, но без пробела после него.
в строке (3) otherhost
должен совпадать.
В строке (4) оба должны совпадать.
Если какое-либо из регулярных выражений совпадает, оно будет заменено на ansible с помощью строки (1), чтобы убедиться в правильности /etc /host. не имеет опечаток или несоответствий.
благодарю вас.