Ошибка с \ ^ в c # регулярное выражение - PullRequest
0 голосов
/ 19 августа 2010

У меня есть строка, содержащая цвета в форме "^ ##", где ## может быть 00-99.

Я написал регулярное выражение для обнаружения и замены этих цветов:

Input = Regex.Replace(Input, "\^[0-9][0-9]", "");

Однако компилятору, похоже, не нравится \ ^ как средство обнаружения символа «^» (выдает ошибку недопустимого кода перехода). Итак, как мне искать символ ^ в c # regex?

Ответы [ 4 ]

2 голосов
/ 19 августа 2010

Вы можете попробовать использовать дословную строку в Regex

Input = Regex.Replace(Input, @"\^[0-9][0-9]", "");

Если вы хотите узнать больше о строковых литералах, прочитайте эту статью в MSDN.

2 голосов
/ 19 августа 2010

Это происходит потому, что, ну, в общем, такой escape-последовательности нет (\^)

Вы можете использовать:

  • Строковые строки C #: @"\^[0-9][0-9]"
  • Два обратных слеша вместо одного: "\\^[0-9][0-9]"

Советы:

  • Класс символов [0-9] эквивалентен сокращению \d
  • Вместо [0-9][0-9] вы можете использовать [0-9]{2} (или \d{2}). Это помогает, когда у вас есть больше повторений.

Ссылки:

Классы символов , Повтор

0 голосов
/ 19 августа 2010

Поскольку сам компилятор C # придает особое значение \ в строке, если вы хотите, чтобы строка содержала \, вы должны сделать одно из двух:

  • избежать этого, удвоив его: \\

  • делает строку дословной строкой, предшествуя открытию " @: @"\" - но учтите, что этот последний параметр меняет способ экранирования кавычек (") в строке

0 голосов
/ 19 августа 2010

Попробуйте двойную косую черту "\\^"

Косая черта является управляющим символом при создании самого строкового объекта.

Но вы хотите, чтобы строка сама содержала косую черту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...