Luke
Luke

Reputation: 467

Perl: extract string between last slash and last dot (optional)

My strings are

my $str1 = "/user/admin/music/dangerous-women.1"; (with number as extension)

my $str2 = "/user/admin/music/dangerous-women"; (without number as extension)

my $str3 = "/user/admin/music/dangerous.women.2"; (with number as extension)

How can I use regular expression to extract dangerous-women and dangerous.women

i.e. Anything between the last slash and last dot (optional). So the extension is only number.

Upvotes: 0

Views: 294

Answers (1)

ikegami
ikegami

Reputation: 385897

It's tricky do in a single match, so I wouldn't do it that way.

my $base = $str =~ s{.*/}{}sr =~ s{\.\d+\z}{}r;   # 5.14+

If you want to support earlier versions of Perl, you can use

my $base = $str;
$base =~ s{.*/}{}s;
$base =~ s{\.\d+\z}{};

Upvotes: 2

Related Questions