Ответ 1
В качестве альтернативы, если вы хотите просто удалить строку правильно, вы можете просто зависеть от Regex.Escape()
, который сделает для вас необходимое экранирование.
Подсказка: есть также Regex.Unescape()
Есть ли где-нибудь полный список escape-последовательностей регулярных выражений? Я нашел этот, но для стартеров он отсутствовал \\
и \e
. До сих пор я придумал этот шаблон регулярного выражения, который, надеюсь, соответствует всем escape-последовательностям:
@"\\([bBdDfnreasStvwWnAZG\\]|x[A-Z0-9]{2}|u[A-Z0-9]{4}|\d{1,3}|k<\w+>)"
В качестве альтернативы, если вы хотите просто удалить строку правильно, вы можете просто зависеть от Regex.Escape()
, который сделает для вас необходимое экранирование.
Подсказка: есть также Regex.Unescape()
Эта страница MSDN (Элементы языка регулярного выражения) - это хорошее начальное место, эта подстраница о escape-последовательностях.
Не забывайте о размерах возможных категорий юникода: \p{Lu}
, \P{Sm}
и т.д.
Слишком много из них для вас в отдельности, но я полагаю, вы могли бы использовать что-то по строкам \\[pP]\{[A-Za-z0-9 \-_]+?\}
(untested).
И также есть более простые вещи, отсутствующие в вашем списке: \.
, \+
, \*
, \?
и т.д. и т.д.
Если вы просто пытаетесь освободить существующее регулярное выражение, вы можете попробовать Regex.Unescape
. Это не идеально, но, вероятно, лучше, чем все, что вы или я могли бы выбить за короткий промежуток времени.