2010-11-25 3 views
11

Есть complete Список последовательностей escape-последовательностей где-нибудь? Я нашел this, но для начала не было \\ и \e. До сих пор я пришел с этим регулярным выражением шаблона, который мы надеюсь, соответствует всем управляющим последовательностями:C# Regex Escape Последовательности

@"\\([bBdDfnreasStvwWnAZG\\]|x[A-Z0-9]{2}|u[A-Z0-9]{4}|\d{1,3}|k<\w+>)" 

ответ

24

В качестве альтернативы, если вы хотите просто избежать строки правильно, вы можете просто зависеть от Regex.Escape(), который сделает необходимое ускорение для вас.

Подсказка: Существует также Regex.Unescape()

6

Этого MSDN page (Regular Expression Language Elements) является хорошей отправной точкой, с this subpage конкретно о экранирующих последовательностях.

+1

Ах .... наконец, полный справочник. Тем не менее, в нем говорится: «Когда за ним следует символ, который не распознается как экранированный символ в этой и других таблицах этого раздела, соответствует этому символу»., Но когда я пытаюсь помещать `\ y` в регулярное выражение, он говорит это непризнанная escape-последовательность. Почему это? – mpen 2010-11-25 10:32:29

+1

Обратная косая черта - символ последовательности escape-последовательности строки C#. Пример: «\ n» - это строка с символом новой строки. Однако в обратном слэге regex также появляются escape-последовательности. Неопознанная escape-последовательность от «\ y» не является escape-последовательностью C#. Использование «\\ y» гарантирует, что никакие escape-последовательности не будут предприняты при инициализации строки. – Gusdor 2011-01-07 11:00:08

5

Не забывайте несметные возможные категории Юникода: \p{Lu}, \P{Sm} и т.д.

Есть слишком много из них для вас, чтобы соответствовать индивидуально, но я полагаю, вы могли бы использовать что-то вдоль линий \\[pP]\{[A-Za-z0-9 \-_]+?\} (непроверенного).

И есть еще более простой материал, который отсутствует в списке: \., \+, \*, \? и т.д. и т.п.

Если вы просто пытаетесь существующее экранирование в регулярном выражении, то вы можете попробовать Regex.Unescape. Это не идеально, но, вероятно, это лучше, чем все, что вы или я могли бы выбить за короткий промежуток времени.

+0

Yuck ... не с нетерпением жду этого случая. (Спасибо) – mpen 2010-11-25 10:29:15

Смежные вопросы