У меня есть (тысячи) CSV-файлов, содержащих ассортимент (миллиарды) строк, таких как:
combos.csv
example0@domain.tld:passw0rd
ex.a.m-pl_e1@domain.tld;p@££w0r46&
0-0-0 ex.a.m-pl_e1@domain.tld p@££w0r46&
ex.a.m-pl_e1@domain.tld:00-00-00;p@££w0r46& <-- updated line
00-00-00:username:password
username:p@££w0r46&
username p@££w0r46&
and more...
Я пытаюсь извлечь электронную почту или имя пользователя ипароль для некоторого машинного обучения, которое я делаю.Но я не могу придумать правильное регулярное выражение для этого.
с использованием re.split
, re.findall
или re.search
, кажется, варианты здесь, и я пытаюсь скомпилировать регулярное выражение, которое позволитмне просто напечатать, например:
Email: "example0@domain.tld" Password: "passw0rd"
Email: "ex.a.m-pl_e1@domain.tld" Password: "p@££w0r46&"
Email: "ex.a.m-pl_e1@domain.tld" Password: "p@££w0r46&"
Email: "ex.a.m-pl_e1@domain.tld" Password: "p@££w0r46&"
Username: "username" Password: "password"
Username: "username" Password: "p@££w0r46&"
Username: "username" Password: "p@££w0r46&"
Из вышеперечисленного combos.csv
Мне удалось использовать следующую комбинацию для электронной почты и пароля:
re.compile(r'(?:.*[:|;])?(?P<email>[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)[:|;](?P<Password>.*)')
но извлечь имя пользователя / пароль мне пока не удалось.Я пытался с оглядкой на;и: но, похоже, что когда строка будет разделена дважды, мое текущее регулярное выражение вернет первый столбец в качестве имени пользователя и два следующих в качестве пароля:
re.compile(r'^(?:.*[:|;])?(?P<username>[A-z0-9\.\-\_\$\#\&]+)(?!@)[:|;](?P<password>.*)')
Как я могу сделать это правильно, и еще лучше,Есть ли решение, где один регулярное выражение может сделать все?
Любая помощь будет приветствоваться!