Как условное формирование работает с регулярным выражением? Т. Е. если присутствует черная черта, убедитесь, что за ней следует одно из следующих { bnrt» }

#regex

Вопрос:

Я новичок в регулярных выражениях, поэтому у меня нет всей терминологии, но я пытаюсь написать регулярное выражение для строковых литералов. Допускаются все символы, включая некоторые escape-символы. Кроме того, строка должна начинаться и заканчиваться кавычкой.

Я пытался

 (^")(?=.*\)(b|n|r|t).*($")
 

Я думаю, что я использую ? неправильно, мой мыслительный процесс заключается в том, что если есть обратная черта, за ней должен следовать один из этих символов, а затем любые другие оставшиеся символы в строковом литерале.

Есть ли способ создать условное форматирование, при котором, если присутствует один символ, за ним должен следовать один символ из списка? т. Е. если присутствует обратная черта, за ней должен следовать один из них, bnrt'»

Ответ №1:

Вы можете исключить обратную косую черту и " из сопоставления и сопоставлять обратную косую черту только в том случае, если она предшествует любому из [bnrt] классов символов.

 ^"[^"\]*(?:\[bnrt][^"\]*)*"$
 

Шаблон совпадает

  • ^ Начало строки
  • " Матч " на старте
  • [^"\]* Сопоставьте 0 раз любой символ, кроме " и \
  • (?: Группа без захвата
    • \[bnrt] Совпадение \ и либо b n r t
    • [^"\]* Сопоставьте 0 раз любой символ, кроме " и \
  • )* Закрыть группу без захвата
  • " Матч " в конце
  • $ Конец строки

Демонстрация регулярных выражений