Я хочу написать регулярное выражение, которое может соответствовать следующей спецификации для строковых литералов. За последние 10 часов я сошел с ума из-за формулирования различных регулярных выражений, которые, похоже, не работают. Наконец я сводились к этому:Regex соответствует строке с экранированными символами
([^"]|(\\[.\n]))*\"
В принципе, требования следующие:
- строковый литерал должен быть согласован, так что я все согласования до величин последний ", между ними может быть \", который не должен заканчивать строку.
- Мы также могли бы быть в состоянии избежать ничего, включая \ п с «\»
- Только неэкранированный «"»символ может закончить матч, больше ничего.
Некоторые строки образца, которые Мне нужно, чтобы правильно соответствовать следующие:
- \ а \ Ь \ "\ п" => Я должен соответствовать следующий символ '\', 'а', '\', 'B', '\', '' ',' \ ',' n ',' "'
- \" это все еще внутри строки "=> s hould match весь текст, включая последний '' '
- ' m о том, чтобы сбежать к новой строке \ '\ n' "=> В этой строке есть символ \ n, но все же строка должна соответствовать всем: от начала 'm' до заканчивается '' '.
Пожалуйста, помогите мне сформулировать такое регулярное выражение. На мой взгляд, что Regex, который я предоставил, должен выполнять эту работу, но это, скорее, неудача без причины.
Я не понимаю, почему нет определенного рецепта для этой проблемы. Это стандартная проблема. На каждом языке программирования нам нужно сопоставить строковые литералы каким-то образом, и обычно мы допускаем большую свободу с \ escape-последовательностями. Для достижения этого эффекта должен быть общий рецепт (стандартное регулярное выражение). Однако я не смог найти. – VaidAbhishek