Поиск ip-адресов в файле с помощью регулярных выражений
Помогите сделать программу, которая будет выводить адреса несанкционированных пользователей из файла 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