As a matter of technique, you should print the value of $line before you change it to make sure it is what you think it is. In your second test, you need to escape the \ after Wayne. The following code should get you started:
How to match quoted strings is discussed in many places, notably in Friedl's Mastering Regular Expressions O'Reilly book (the regex I used is derived from one in Friedl's book).$line = sprintf qq{Test #1 'Show me Waynes world','Jennys Basketball s +hoes'\n}; print $line; # <- added this line $line =~ s/(')[^'\\]*(?:\\.[^'\\]*)*(')/$1SSS$2/g; print $line; $line = sprintf qq{Test #2 'Show me Wayne\\'s world','Jenny\\'s Basket +ball shoes'\n}; # <- changed this line (two extra \ added) print $line; # <- added this line $line =~ s/(')[^'\\]*(?:\\.[^'\\]*)*(')/$1SSS$2/g; print $line;
Update: Matching quoted strings is also discussed in perlre (in the "Quantifiers" section), where they suggest /"(?:[^"\\]++|\\.)*+"/ (perl 5.10 and above); see the discussion in perlre for more details. See also this stack overflow question and $RE{quoted} in Regexp::Common.
In reply to Re: skip over an escaped single quote
by eyepopslikeamosquito
in thread skip over an escaped single quote
by bplegend
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |