2017-02-04 2 views
-2

Я пытаюсь сопоставить несколько шаблонов, и я не могу заставить его работать.python regex с необязательными несколькими группами

Узоры я пытаюсь соответствовать следующие:

David C. Drummond 
Sundar Pichai 
Julie Spellman Sweet 

Мне нужно выражение регулярное выражение, которое соответствует всем 3 группы.

Что я пытался до сих пор: r"^(\w*)\W?(\w*|\w\.)\W?(\w*)" со многими вариациями для пространства между словами (\s, \b) и с жадным и алчным, не символом (?) после помещения.

+1

Ваш рисунок должен соответствовать всем этим. Фактически, ваш шаблон соответствует каждой строке, которая имеет начало (т. Е. Все строки), потому что все остальное в ней является необязательным. – melpomene

+0

Но это не соответствует всем этим. – bjj

+0

Опубликовать [mcve]. – melpomene

ответ

0

Для строк, которые вы указали, вы можете использовать ^(\w+)\s+(?:(\w\.|\w+)\s+)?(\w+)$ для их сопоставления и иметь первое, среднее и фамильное имя, содержащееся в 3 разных группах, причем второе необязательно.

См https://regex101.com/r/O8NniM/1

+0

Это работает, но, как сказал Мелпомен, мое регулярное выражение должно работать, но это не так. Не могли бы вы объяснить, почему вы работаете? – bjj

Смежные вопросы