Regex. Как получить слова после точки с запятой

0

Я пытаюсь получить все слова (фамилии) только после каждого появления точки с запятой.

Я пробовал это регулярное выражение, но он не работает правильно:

(?:.*?;)([a-zA-ZñÑ]+)

Вот пример строки, которую я хочу отфильтровать с помощью регулярного выражения:

Уолтер Шелтер, Мэри; Джонсон Смит, Роберт; Дикинсон Куин, Пэтти

Вот результат, который я хочу получить:

Уолтер Джонсон Дикинсон

Заранее спасибо большое за помощь!

Теги:
semicolon

1 ответ

2
Лучший ответ

Вы можете использовать это регулярное выражение:

(?:(?<=^)|(?<=; ))\w+

Или это более короткое:

(?<=; |^)\w+

Демо-версия RegEx

Код:

$s = 'Walter Shelter, Mary; Johnson Smith, Robert; Dickinson Queen Patty';
preg_match_all('/(?<=; |^)\w+/', $s, $m);
print_r($m);

Вывод:

Array
(
    [0] => Walter
    [1] => Johnson
    [2] => Dickinson
)
  • 1
    большое спасибо! Ты мужчина! Это работает должным образом, теперь я пытаюсь разделить это с другим выражением регулярного выражения (и большим). :)
  • 0
    Как хорошо осознавать, что есть такая платформа, как regex101! Но я не могу соединить эти два выражения, я действительно ценю, если вы можете мне помочь. Вот моя оригинальная строка и регулярное выражение: regex101.com/r/oQ1fJ1/1 Как вы видите, я нахожу только способ получить первую фамилию. Спасибо!
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню