Поиск ip-адресов в файле с помощью регулярных выражений

Помогите сделать программу, которая будет выводить адреса несанкционированных пользователей из файла LOG.txt с помощью регулярных выражений

файл LOG.txt

f = open('LOG.txt').readlines()
import re
for lines in f:
    a = str(re.findall(r'Illegal \w+.\w+.\w+.\w+.\w+.\w+.\w+.\w+', lines)).split()

    print(re.search('\d+\.+\d+\.+\d+\.+\d', str(a)))

мой код, но он выводит

<re.Match object; span=(42, 53), match='67.19.240.1'>

а нужен только ip-адрес и без повторов адресов


Ответы (1 шт):

Автор решения: Алексей Р

Вариант 1 считываем файл построчно
Используется re.search() для поиска и set для исключения повторов

import re

pat = re.compile(r'Illegal.+?(\d{1,4}\.\d{1,4}\.\d{1,4}\.\d{1,4})')
f = open('LOG.txt').readlines()
out = set()
for lines in f:
    a = pat.search(lines)
    if a:
        out.add(a.group(1))
print(*out,sep='\n')

Вариант 2 считываем файл целиком

import re

with open('LOG.txt', "r") as f:
    lines = f.read()

out = set(re.findall(r'Illegal.+?(\d{1,4}\.\d{1,4}\.\d{1,4}\.\d{1,4})', lines))
print(*out, sep='\n')
211.156.128.23
67.19.240.114
147.46.76.225
218.237.4.57
83.64.18.219
211.174.181.158
211.34.197.3
→ Ссылка