Find quoted strings
Create a regexp to find strings in double quotes
\" a newline as
\n, and the slash itself as
let str = "Just like \"here\".";
Please note, in particular, that an escaped quote
\" does not end a string.
So we should search from one quote to the other ignoring escaped quotes on the way.
That’s the essential part of the task, otherwise it would be trivial.
Examples of strings to match:
.. "test me" .. .. "Say \"Hello\"!" ... (escaped quotes inside) .. "\\" .. (double slash inside) .. "\\ \"" .. (double slash and an escaped quote inside)
Step by step:
- First we look for an opening quote
- Then if we have a backslash
\\(we technically have to double it in the pattern, because it is a special character, so that’s a single backslash in fact), then any character is fine after it (a dot).
- Otherwise we take any character except a quote (that would mean the end of the string) and a backslash (to prevent lonely backslashes, the backslash is only used with some other symbol after it):
- …And so on till the closing quote.