in reply to How to substitute all the words before a certain word in the middle of a line?
The (?: allows grouping without backreferencing, thus making the regex a little more efficient. The [^.] after the word "nice" forces it to match up to, but excluding the period. This is much more efficient than the dot star ".*" because of the way Perl's regex engine works. Unfortunately, I could not figure out a clean way of getting rid of the first dot star.$test = "This is a nice weather. He is a nice guy. We have some nice f +ood in our dinner."; $test =~ s/(?:.*?)(\bnice\b[^.]*\.\s*)/A $1/g; print $test;
Cheers,
Ovid
|
|---|