regex - Как сопоставить электронную почту: комбинацию регулярных выражений пароля только в первых 10 строках, игнорируя остальную часть длинного текста - PullRequest
0 голосов
/ 30 мая 2020

Я новичок в использовании регулярных выражений, и я пытаюсь сопоставить комбинации электронных писем: паролей в длинном тексте с использованием регулярного выражения, а ниже - рабочее регулярное выражение, которое я использую для своих требований, и в настоящее время у меня есть набор длинных текстовых файлов для ищите возможное совпадение.

[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+[*:]+(\b\w{5,}\b)

Однако я хотел знать, как сопоставить только первые 10 строк моего текста. Я хочу, чтобы мое регулярное выражение возвращало совпадение, только если в первых 10 строках есть комбинации электронная почта: пароль, и игнорировало остальной текст. Любая помощь будет принята с благодарностью.

 Email : test@hotmail.com
 Password : password94
 Combo : test@hotmail.com:password94
 Plan : Premium
 Screens : 4
 HD : true
 UHD : true
 Expires in : 11-06-2019
 Country : en-PH
 NetFlix Checker | by xRisky
 Combo : test2@hotmail.com:password96
 Combo : test1@hotmail.com:password95

Например, я хочу сопоставить только первое электронное письмо: передайте комбо в третьей строке, а не в строках 11 и 12

Ответы [ 2 ]

0 голосов
/ 31 мая 2020

Предполагая, что рассматриваемый текст хранится как одна строка, вы можете уменьшить это количество до первых 10 строк с помощью комбинации разделения, склейки и соединения:

my_text_reduced = "\n".join(my_text.split("\n")[:10])

Тем не менее, вы можете хотите немного поправить свой шаблон регулярного выражения; например, я не могу не заметить, что вы не избежали в нем точек. Точка на самом деле является специальным символом регулярного выражения, который соответствует всем возможным символам, поэтому ваш шаблон будет соответствовать адресам электронной почты с недопустимыми символами в его текущем состоянии. Вы также можете заменить a-zA-Z0-9_ на \ w, чтобы немного очистить его.

0 голосов
/ 30 мая 2020

Когда я запускал ваш код, он возвращал только пустые списки, возможно, причина в этой части:

(\b\w{5,}\b)

На самом деле, после двоеточия пароль может быть любым, поэтому я изменил пароль кому:

.+

Вот мой путь:

import re
a = '''Email : test@hotmail.com
Password : password94
Combo : test@hotmail.com:password94
Plan : Premium
Screens : 4
HD : true
UHD : true
Expires in : 11-06-2019
Country : en-PH
NetFlix Checker | by xRisky
Combo : test2@hotmail.com:password96
Combo : test1@hotmail.com:password95'''
i = 0
for line in a.split('\n'):

    found = re.findall('[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+[*:]+.+',line)

    if found and i<=10:
        print(found)
    i+=1

Вывод:

['test@hotmail.com:password94']
['test2@hotmail.com:password96']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...