There are a lot of ways to skin this cat:
s/\..*+$//; s/\-[^\.]*$//;
Both of these use $ at the end to anchor the regex to the end of the string. The first uses .*+, the non-greedy version of .*, the second uses the character class of all chars except '.' to only get the last suffix
Another possibility is to use the perl module File::Basename and this is probably the best way, because you don't need to worry about getting it right, someone else did that already
UPDATE: kennethk is right, the first version doesn't work. Obviously the regex engine never matches from right to left even when anchored to the right
UPDATE2: Seems to be not my day. 3 errors in two lines is quite depressing
In reply to Re: Regex To Remove File Extension
by jethro
in thread Regex To Remove File Extension
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |