Первые 3 символа последнего слова с использованием регулярного выражения?

#regex

Вопрос:

Предполагая, что у вас есть строка, подобная этим 2 примерам:

  1. ABC DEF GHI JKL MNOPQR STUVWX
  2. ABC DEF GHI JKL MNOPQR STU VWX

В первом примере я хочу вернуть STU, а во втором-VWX

  • Я знаю, что могу использовать ^.{3}, чтобы получить первые 3 буквы всей строки, например ABC.
  • Я знаю, что могу использовать [A-Za-z] $, чтобы получить последнее слово, например, STUVWX и VWX.
  • Чего я не могу понять, так это как объединить это в одно регулярное выражение, которое возвращает STU и VWX.

Ответ №1:

Вы можете использовать группу захвата для сопоставления 3 символов A-Za-z и сопоставления необязательных символов до конца строки.

Чтобы предотвратить частичное совпадение, вы можете добавить границу слова b

 b([A-Za-z]{3})[A-Za-z]*$
 

Демонстрация регулярных выражений

Другим вариантом, использующим поисковые запросы для получения совпадения, может быть утверждение границы пробела слева и утверждение необязательных символов A-Za-z до конца строки справа.

 (?<!S)[A-Za-z]{3}(?=[A-Za-z]*$)
 

Демонстрация регулярных выражений