Как сопоставить эту строку с регулярными выражениями? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь сопоставить только имена с этим вводом:

5 OK 377035 F 17949 , RICHARDS/PATRICIA MARIE A 15/01/19 2878-578482-3
6 OK 377599 F 13282 , ZARATE/NICOLAS A 38586778 15/01/19 2878-578486-0
7 OK 378583 F 23296 /*/*/*/, ASTAIRE/LUCY JANE A 17/01/19 3165-841179-4

Это код на данный момент:

import re, pyperclip, pprint

nombres = pyperclip.paste()

nombresReg = re.compile(r'\b\w+\b\s*/*,*\s*\b\w+\b\s?\b\w+\b')
mo = nombresReg.findall(nombres)
pprint.pprint(mo)

И это результат, который я получаю:

['5 OK 377035',
 'RICHARDS/PATRICIA MARIE',
 '01/19 2878',
 '3\r\n    6 OK',
 '377599 F 13282',
 'ZARATE/NICOLAS A',
 '01/19 2878',
 '0\r\n    7 OK',
 '378583 F 23296',
 'ASTAIRE/ LUCY JANE',
 '01/19 3165']

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

Любой вклад будет оценен!

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Эта модель, кажется, то, что вы ищете:

>>> pat = re.compile("[A-Z]+/([A-Z ]+ )+")
>>> s = '''5 OK 377035 F 17949 , RICHARDS/PATRICIA MARIE A 15/01/19 2878-578482-3
... 6 OK 377599 F 13282 , ZARATE/NICOLAS A 38586778 15/01/19 2878-578486-0
... 7 OK 378583 F 23296 /*/*/*/, ASTAIRE/LUCY JANE A 17/01/19 3165-841179-4
... '''
>>> pat.findall(s)
['PATRICIA MARIE A ', 'NICOLAS A ', 'LUCY JANE A ']
>>> 

Объяснение: «[AZ] + / ([AZ] +) +» соответствует последовательности из одной или нескольких заглавных букв ([A-Z]+, за которыми следует буквенная косая черта (/), за которой следуют одна или несколько групп) заглавных букв, которые должны быть разделены одним пробелом (([A-Z ]+ )+).

0 голосов
/ 25 января 2019

Группа 1 из ,\s*(.*?)\s\w\s будет соответствовать всем после единственной запятой и одной буквы, например: RICHARDS / PATRICIA MARIE , ZARATE / NICOLAS и ASTAIRE / ЛЮСИ ДЖЕЙН .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...