Всем привет, не могу разобраться с использованием регулярки в связке с условием, подскажите что я делаю не так?
Исходный код:
# Подключим модуль для работы с буфером обмена
import pyperclip
# Подключим модуль для работы с системным временем
import time
# Задаем переменную old и присваиваем ей пустую строку
old = ''
# Начнем бесконечный цикл слежения за буфером обмена
while True:
# Кладем в переменную s содержимое буфера обмена
s = pyperclip.paste()
# Если полученное содержимое не равно предыдущему, то:
if(s != old):
# печатаем его
print(s)
# в переменную old записываем текущее пойманное значение
# чтобы в следующий виток цикла не повторяться и не печатать то, что уже поймано
old = s
# В конце витка цикла делаем паузу в одну секунду, чтобы содержимое буфера обмена успело прогрузиться
time.sleep(1)
Задача была допилить ловлю email адресов и возможных паролей из буфера и сохранить в файл monitoring.txt, первый вариант был такой:
import pyperclip
import time
import re
old = ''
while True:
s = pyperclip.paste()
if(s != old):
print(s)
old = s
time.sleep(1)
with open(u'monitoring.txt', 'a', encoding='UTF-8') as f:
matchMail = re.findall(r'[\w-]+@([\w-]+\.)+[\w-]+', s)
matchPass = re.findall(r'[A-Za-z\d_@$!%*?&]{6,}', s)
if not (str(matchMail) in s or str(matchPass) in s):
continue
else:
print(s)
f.write(str(s) + '\n')
Почитав документацию по regex вариант стал такой:
import pyperclip
import time
import re
old = ''
while True:
s = pyperclip.paste()
time.sleep(1)
with open(u'monitoring.txt', 'a', encoding='UTF-8') as f:
if (s != old):
old = s
regex_mail = re.compile(r'[\w-]+@([\w-]+\.)+[\w-]+')
regex_pass = re.compile(r'[A-Za-z\d_@$!%*?&]{6,}')
if str(regex_mail.findall(s)) is not None or str(regex_pass.findall(s)) is not None:
print(s)
f.write(str(s) + '\n')
Я думаю что у меня проблема с логикой
if (str(regex_mail.findall(s)) is not None) or (str(regex_pass.findall(s)) is not None):
но как ее решить я не понимаю, как сохранять в файл monitoring.txt исключительно email адреса и все что попадает под регулярку в regex.pass