Мне нужно извлечь последнее вхождение подстроки, заключенной в _()_, например,
_()_
'a_long_(abc)_000' => abc 'a_long(string)_(def)_000' => def 'a_long_(string)_(abc)_blabla' => abc
Совпадение с использованием /_\((.*?)\)_/ и получение последнего совпадения:
/_\((.*?)\)_/
>> 'a_long_(string)_foo_(abc)_blabla'.scan(/_\((.*?)\)_/)[-1] => ["abc"]
что-то вроде этого:
str[/.*_\((.*?)\)_/,1]
Вы также можете использовать регулярное выражение:
.*_\((.*?)\)_
Посмотреть
Вот это:
\(([^\)]+)\)_[a-zA-Z0-9]*$
$1 должна быть вашей строкой
$1