简体   繁体   中英

Regex match unescaped quotes

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)

看来你可能正在寻找这样的东西:

(\\\\)*"

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM