Regex - первая буква каждого слова и последнее слово - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу взять первую букву каждого слова и объединить с последним словом.
Но хочу сохранить ди git, если есть
Для иллюстрации:

L YNDON B J OHNSON FWY -> LBJ FWY
N J OSE F S AN N ICHOLAS ST -> NJFSN ST
U NIT 100034 -> U 100034
L YNDON B J OHNSON 123 FWY -> LBJ 123 FWY

Я пробовал разными способами, но, похоже, не работает:

([a-zA-Z])([a-zA-Z]+)\s(\w+)$

Пожалуйста, обратитесь к ссылке для моего Regex

1 Ответ

0 голосов
/ 10 апреля 2020

Если прогнозирование поддерживается, вы можете использовать 2 группы захвата, а при замене использовать эти 2 группы.

\b(?!\w+$)([a-zA-Z])\w* ?(?!\d+\b|\w+$)( \d+)?\b

Пояснение

  • \b Граница слова
  • (?!\w+$) Отрицательный взгляд, утверждаем, что справа не 1+ символов слова в конце строки
  • ([a-zA-Z]) Группа захвата 1, соответствует a-zA -Z
  • \w* ? Совпадение с 0+ символами слов и необязательным пробелом
  • (?!\d+\b|\w+$) Отрицательный взгляд вперед, утверждают, что справа находятся не только цифры или 1+ слов символов в конце строка
  • ( \d+\b)?\b Дополнительная группа захвата 2, соответствует пробел и 1+ цифр

Regex demo

При замене $1$2

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