Найти последнее слово между двумя нижними подчеркиваниями используя Regex

Например, дана строка some_text_text2_text3_asdasdasd. Нужно найти последнее слово между двумя нижними подчеркиваниями через regex. Для этой строки это подстрока text3. Спасибо за любую помощь :)


Ответы (1 шт):

Автор решения: vsemozhebuty

Попробуйте так (пример на JS):

console.log(
  'some_text_text2_text3_asdasdasd'
  .match(/(?<=_)[^_]+(?=_[^_]*$)/)[0]
);

Ищем любое количество символов, отличных от почёркивания:

[^_]+

перед которыми есть подчёркивание:

(?<=_)

и после котрых есть подчёркивание, последнее в строке:

(?=_[^_]*$)

Если не поддерживается lookbehind, можно так:

console.log(
  'some_text_text2_text3_asdasdasd'
    .match(/_([^_]+)(?=_[^_]*$)/)[1]
);

→ Ссылка