Is making the first part non-greedy not enough ...
my $list = "This is my list"; $list =~ m/^(.+?) # The 'rest' (Everything before last word) (\w+) # Last 'word' (string of contiguous word character +s) \W*$ # Possible non-word characters at end of string /x;
... (would it fail on some other string)?
Much later. For English language, \w is not inclusive enough (lacks hyphen) and includes too much (includes underscore & digits). Short of a proper grammar based parser, I would rather use word regex which addresses that ...
$word_re = qr{ (?: & | -? [a-zA-Z]+ [a-zA-Z-]* ) }x;
... is still incomplete as it does not deal with accented characters; periods in a title; acronyms with spaces and/or periods, among other things.
In reply to Re^3: Match last word in a sentence
by parv
in thread Match last word in a sentence
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |