Почему это регулярное выражение не работает в моем Python? - PullRequest
0 голосов
/ 01 февраля 2019

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

Проблема в том, что фамилия выбирает отчество, я думал, что использование заглавной буквы S в конце сделало бы это только таквыбирает слово с пробелом до, но не после него, чтобы найти фамилию, но lastNameRegex просто выбирает отчество.

Кроме того, код должен принимать имя типа «Джон Джозеф»Смита »и отделяйте каждое имя, отсюда« \ w + »для имени и« \ s \ w * \ s »для фамилии.

Спасибо за всю помощь, и я довольно новичок во всем этом, так что вся конструктивная критика приветствуется.Спасибо!:)

firstNameRegex = re.compile(r'\w+')
middleNameRegex = re.compile(r'\s\w*\s')
lastNameRegex = re.compile(r'\s\w+\S')

1 Ответ

0 голосов
/ 01 февраля 2019

Вы должны привязать регулярные выражения, если хотите, чтобы они совпадали только в определенных местах строки.^ соответствует началу строки, $ соответствует концу.

firstNameRegex = re.compile(r'^\w+')
middleNameRegex = re.compile(r'(?<=\s)\w*(?=\s)')
lastNameRegex = re.compile(r'\w+$')

Я также использовал lookbehind и lookahead в middleNameRegex, чтобы пробелы выиграли 'не может быть включено в результат, только само имя.

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