string pattern = ".+\\";
foreach (string file in files){
richTextBox2.Text += Regex.Replace(file, @pattern, String.Empty) +"\n";
}
Я пытаюсь сделать то, что должно быть простым сопоставлением и заменой шаблона, файл состоит из полного пути, например: d:\test\t.txt
. Но каждый раз он давит и говорит Illegal \ at the end of the pattern.
Нет радости, где я ошибаюсь?
2 ответа
Необходимо экранировать обратную косую черту дважды :
string pattern = ".+\\\\";
Во-первых, вам нужно экранировать его на уровне обработки строк, чтобы "\\"
превратился в \
для механизма регулярных выражений.
Во-вторых, механизм регулярных выражений также использует обратную косую черту для специальных escape-последовательностей, поэтому, если вы хотите сопоставить буквальную обратную косую черту с регулярным выражением, вам нужно использовать \\
.
Поскольку обратная косая черта довольно распространена в регулярных выражениях, обычно рекомендуется использовать для них дословные строки (см. Решение Рахула).
Еще одно решение. Вы можете использовать @
перед строками, чтобы избежать необходимости экранировать специальные символы, такие как
string pattern = @".+\\";
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.