REGEX: выделить весь текст между последним подчеркиванием и точкой - PullRequest
2 голосов
/ 20 июня 2019

У меня проблемы с получением конкретной информации о строке.

Строка выглядит следующим образом:

20190502_PO_TEST.pdf

Включает часть .pdf. Мне нужно получить часть между последним подчеркиванием (_) и точкой (.), Оставляя меня с TEST

Я пробовал это:

[^_]+$

Это, однако, возвращает: Test.pdf

Я тоже пробовал это:

_(.+)\.

Это возвращает: PO_TEST

1 Ответ

2 голосов
/ 20 июня 2019

Этот шаблон [^_]+$ не будет совпадать с подчеркиванием до конца строки, а также будет соответствовать .

В этом шаблоне _(.+). вы должны экранировать точку, чтобы буквально соответствовать ей_(.+)\. см. демо и тогда ваш матч будет в первой группе захвата.

Что вы также можете использовать:

^.*_\K[^.]+
  • ^.*_Совпадение с последним подчеркиванием
  • \K Забудьте, что было сопоставлено
  • [^.]+ Совпадение 0+ раз не точка

Regex demo

...