Какие символы необходимо экранировать в .NET Regex?

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

Ответы на вопрос(4)

Я думаю, что вы можете получить список символов как

List<char> chars = Enumerable.Range(0,65535)
                .Where(i=>((char)i).ToString()!=Regex.Escape(((char)i).ToString()))
                .Select(i=>(char)i)
                .ToList();

-

\t\n\f\r#$()*+.?[\^{|
Решение Вопроса

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

// Don't actually do this to check containment... it's just a little example.
public bool RegexContains(string haystack, string needle)
{
    Regex regex = new Regex("^.*" + Regex.Escape(needle) + ".*$");
    return regex.IsMatch(haystack);
}
 Jon Skeet18 дек. 2014 г., 13:51
@Kiquenet:Regex.Escape уже делает это.
 rodrigocl18 авг. 2016 г., 21:21
@JonSkeet: я знаю, что уже поздно, но почему бы не сделать это для сдерживания? Я должен использовать .net 1.1, поэтому я не могу использовать String.Contains и эквиваленты
 mcdon08 апр. 2015 г., 16:05
@JonSkeet: спасибо за указание на Regex.Escape, я собирался заново изобрести квадратное колесо, пока не увидел твой ответ.
 Jacob Krall30 сент. 2016 г., 20:06
@rodrigocl: использоватьhaystack.IndexOf(needle) >= 0
 Kiquenet18 дек. 2014 г., 13:50
Escape $ характер тоже ?:var needle = @"any text here$%# more text";

которые необходимо экранировать, чтобы использовать их как обычные литералы:

Открывающая квадратная скобка[бэкслэш\знак вставки^Знак доллара$Точка или точка.Символ вертикальной черты или трубы|Вопросительный знак?Звездочка или звезда*Знак плюс+Открывающая круглая скобка( и закрывающая круглая скобка)Открывающаяся фигурная скобка{Знак фунта / хеша#

Эти специальные символы часто называют «метасимволами».

Но я согласен с Джоном использоватьRegex.Escape вместо жесткого кодирования этих символов в коде.

 H2ONaCl08 дек. 2015 г., 05:54
Я думаю, что вам нужно включить{ в вашем списке.
 Arman Spr28 июн. 2017 г., 17:01
и включать"

http://msdn.microsoft.com/en-us/library/az24scfc.aspx#character_escapes

Проблема с полным списком состоит в том, что это зависит от контекста. Например. должен быть экранирован, если он не заключен в квадратные скобки, как в[.]. ] технически не нужно избегать, если ему не предшествует[. - не имеет особого значения, если только он не заключен в квадратные скобки, как в[A-Z]. = не имеет особого значения, если ему не предшествует? как в(?=).

Ваш ответ на вопрос