Take a look at perlre - Regular Expressions, Subsection Quantifiers, Second to last paragraph.
The most efficient way to capture a single or double quoted string is to use an independent subexpression to avoid backtracking. The below example will also avoid the case where the backslash is escaped itself.
use strict; my $single_quote_re = qr{ ' (?: (?> [^\\']+ ) | \\ . )* ' }sx; # Normal String my $line = qq{Test #1 'Show me Waynes world','Jennys Basketball shoes' +\n}; print $line; $line =~ s/$single_quote_re/SSS/g; print $line; # Escaped single quotes embedded $line = qq{Test #2 'Show me Wayne\\'s world','Jenny\\'s Basketball sho +es'\n}; print $line; $line =~ s/$single_quote_re/SSS/g; print $line; # Literal backslash before closing single quote $line = qq{Test #2 'Show me Waynes world\\\\','Jenny\\'s Basketball sh +oes'\n}; print $line; $line =~ s/$single_quote_re/SSS/g; print $line; __END__
- Miller
In reply to Re: skip over an escaped single quote
by wind
in thread skip over an escaped single quote
by bplegend
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |