Except you want to strip punctuation from the beginning or end. The above regex only works if there is punctuation at both beginning and end.
If removing any trailing/leading punctuation is in fact your goal, what about something like:
use strict; use warnings; my $word = 'Wilmer",'; $word =~ s/^ \W*? # ignore any leading punc ( \w .*? ) # swallow everything lazily (?: \W+ )? $ # ignore any trailing punc /$1/x; print $word;
Update: Mind you, at that point, a much simpler regex will likely serve you better in terms of speed and readability:
$word =~ s/(?:^\W+)|(?:\W+$)//g;
Final update - benchmark:
Rate capture non_capture capture 16561/s -- -28% non_capture 22861/s 38% --
The second suggestion is about 30% faster, on average.
Additionally, \w doesn't mean what you think it means.
In reply to Re^3: stripped punctuation
by fishbot_v2
in thread stripped punctuation
by thealienz1
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |