32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
# Find quoted strings
|
|
|
|
Create a regexp to find strings in double quotes `subject:"..."`.
|
|
|
|
The important part is that strings should support escaping, in the same way as JavaScript strings do. For instance, quotes can be inserted as `subject:\"` a newline as `subject:\n`, and the slash itself as `subject:\\`.
|
|
|
|
```js
|
|
let str = "Just like \"here\".";
|
|
```
|
|
|
|
For us it's important that an escaped quote `subject:\"` does not end a string.
|
|
|
|
So we should look 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:
|
|
```js
|
|
.. *!*"test me"*/!* ..
|
|
.. *!*"Say \"Hello\"!"*/!* ... (escaped quotes inside)
|
|
.. *!*"\\"*/!* .. (double slash inside)
|
|
.. *!*"\\ \""*/!* .. (double slash and an escaped quote inside)
|
|
```
|
|
|
|
In JavaScript we need to double the slashes to pass them right into the string, like this:
|
|
|
|
```js run
|
|
let str = ' .. "test me" .. "Say \\"Hello\\"!" .. "\\\\ \\"" .. ';
|
|
|
|
// the in-memory string
|
|
alert(str); // .. "test me" .. "Say \"Hello\"!" .. "\\ \"" ..
|
|
```
|