en.javascript.info/10-regular-expressions-javascript/9-regexp-alternation/2-match-quoted-string/task.md
2015-04-07 15:22:06 +03:00

26 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Найдите строки в кавычках
Найдите в тексте при помощи регэкспа строки в двойных кавычках <code class="subject">"..."</code>.
В строке поддерживается экранирование при помощи слеша -- примерно в таком же виде, как в обычных строках JavaScript. То есть, строка может содержать любые символы, экранированные слэшем, в частности: <code class="subject">\"</code>, <code class="subject">\n</code>, и даже сам слэш в экранированном виде: <code class="subject">\\</code>.
Здесь особо важно, что двойная кавычка после слэша не оканчивает строку, а считается её частью. В этом и состоит основная сложность задачи, которая без этого условия была бы элементарной.
Пример совпадающих строк:
```js
.. *!*"test me"*/!* .. (обычная строка)
.. *!*"Скажи \"Привет\"!"*/!* ... (строка с кавычками внутри)
.. *!*"\r\n\\"*/!* .. (строка со спец. символами и слэшем внутри)
```
Заметим, что в JavaScript такие строки удобнее всего задавать в одинарных кавычках, и слеши придётся удвоить (в одинарных кавычках они являются экранирующими символами):
Пример задания тестовой строки в JavaScript:
```js
//+ run
var str = ' .. "test me" .. "Скажи \\"Привет\\"!" .. "\\r\\n\\\\" .. ';
// эта строка будет такой:
alert(str); // .. "test me" .. "Скажи \"Привет\"!" .. "\r\n\\" ..
```