Господа, шаблон рег. выражения состоит из трех частей - переменная, рег. выражение, переменная, например stringBefore + @"([\w]+)" + stringAfter
.
Всё бы хорошо, но в stringAfter
помимо букв есть открывающая скобка и Regex думает, что это часть регулярного выражения, и поэтому выкидывается ошибка "Нет парных закрывающих скобок".
Как сделать чтобы переменные распознавались как обычный текст?
Используйте Regex.Escape()
:
Преобразует минимальный набор символов (\
, *
, +
, ?
, |
, {
, [
, (
, )
, ^
, $
, .
, #
и пробел), заменяя их соответствующими escape-кодами. При этом обработчику регулярных выражений дается команда интерпретировать эти символы буквально, а не как метасимволы.
Пример объявления:
var reg = new Regex($@"{Regex.Escape(stringBefore)}(\w+){Regex.Escape(stringAfter)}");
В старших версиях C# можно использовать аналогичный
var reg = new Regex(string.Format(@"{0}(\w+){1}", Regex.Escape(stringBefore), Regex.Escape(stringAfter)));
В таком случае я вижу только 1 способ: пройтись посимвольно по stringBefore
и stringAfter
и все символы, которые используются в регулярном выражении как зарезервированные
, экранировать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
этот код на 64 битной винде выдает путь до "C:\Program Files (x86)", а как получить путь до папки ProgramFiles?
Добрый день, занялся реализацией кастомной командыРеализовал ICommand и все отлично работает, но возникла мысль, а хорошо бы получать данные...
Требуется по разному обрабатывать doubleClick по заголовку и по строкам в DataGridSelectedIndex не подходит, так как при doubleClick по заголовку в SelectedIndex находится...