W
W
Weishaupt2022-04-08 18:49:10
Python
Weishaupt, 2022-04-08 18:49:10

What is the correct way to use regex with condition(if)?

Hello everyone, I can’t figure out how to use a regular expression in conjunction with a condition, tell me what I’m doing wrong?

Source:

# Подключим модуль для работы с буфером обмена
import pyperclip
# Подключим модуль для работы с системным временем
import time
# Задаем переменную old и присваиваем ей пустую строку
old = ''
# Начнем бесконечный цикл слежения за буфером обмена
while True:
    # Кладем в переменную s содержимое буфера обмена
    s = pyperclip.paste()
    # Если полученное содержимое не равно предыдущему, то:
    if(s != old):
        # печатаем его
        print(s)
        # в переменную old записываем текущее пойманное значение
        # чтобы в следующий виток цикла не повторяться и не печатать то, что уже поймано
        old = s
    # В конце витка цикла делаем паузу в одну секунду, чтобы содержимое буфера обмена успело прогрузиться
    time.sleep(1)


The task was to finish catching email addresses and possible passwords from the buffer and save it to the monitoring.txt file, the first option was this:
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-][email protected]([\w-]+\.)+[\w-]+', s)
        matchPass = re.findall(r'[A-Za-z\[email protected]$!%*?&]{6,}', s)
        if not (str(matchMail) in s or str(matchPass) in s):
            continue
        else:
            print(s)
            f.write(str(s) + '\n')


After reading the documentation on regex, the option became this:
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-][email protected]([\w-]+\.)+[\w-]+')
            regex_pass = re.compile(r'[A-Za-z\[email protected]$!%*?&]{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')


I think I have a logic problem
if (str(regex_mail.findall(s)) is not None) or (str(regex_pass.findall(s)) is not None):

but I don’t understand how to solve it, how to save only email addresses to the monitoring.txt file and everything that falls under the regular expression in regex.pass

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
soremix, 2022-04-08
@Weishaupt

Somehow a lot of action
if regex_mail.search(s) or regex_pass.search(s):

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question