Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
606 views
in Technique[技术] by (71.8m points)

ruby - 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

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...