Регулярное выражение для имен результатов с заголовком

#regex

#регулярное выражение

Вопрос:

Я создаю веб-паук для получения информации с определенного веб-сайта. Имена на веб-сайте представлены в формате «СМИТ, ДЖОН ЭНТОНИ» или «СМИТ-младший, ДЖОН ЭНТОНИ».

Регулярное выражение, которое я использую, это, [A-Z] , [A-Z] [A-Z] . Я бы хотел, чтобы регулярное выражение также отображало «JR», если имя отформатировано таким образом. Обязательное предложение, в котором говорится, что я новичок в регулярных выражениях и что это мой первый пост в Stack Overflow.

[A-Z] , [A-Z] [A-Z]

Ответ №1:

Вы можете использовать необязательную группу (?: [A-Z] )? для сопоставления пробела и 1 раз от А доЯ:

 [A-Z] (?: [A-Z] )?, [A-Z]  [A-Z] 
 

Демонстрация на regex101

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

 b[A-Z] (?: [A-Z] )?, [A-Z]  [A-Z] b