I'm looking for a regex that matches unescaped quotes in an arbitrary string, but not quotes that are already escaped so I can escape the unescaped quotes. I tried to modify any similar solutions I found but nothing captured exactly what I need.
The regex should
abc"asd # match
abc\"asd # not match
abc\\"asd # match
abc\\\"asd # not match
abc\\\\"asd # match
so basically match any quotes preceded by an even number of backslashes (including zero) but not match any quotes preceded by an odd number of backslashes.
Can anyone help?
PS: I want to do this in ruby
You can use this:
(?<!\\)(?:\\{2})*\K"
(?<!\\)
checks there is no backslash before (negative lookbehind)
(?:\\{2})*
matches all even numbers of backslashes
\K
removes all on the left from the match result (the backslashes here)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With