Регулярное выражение: заменить строку - PullRequest
1 голос
/ 21 июня 2011

В настоящее время я сталкиваюсь с (маленькой) проблемой блокировки.Я хотел бы заменить подстроку друг на друга с помощью регулярного выражения.Но здесь есть хитрость: я отстой в регулярных выражениях.

Regex.Replace(contenu, "Request.ServerVariables("*"))",
                       "ServerVariables('test')");

По сути, я хотел бы заменить все, что находится между "by" test ". Я пробовал". {*} "Как шаблон, но он не работает.Не могли бы вы дать мне несколько советов, я буду признателен за это!

Ответы [ 4 ]

3 голосов
/ 21 июня 2011

Есть несколько вопросов, которые нужно решить.

  1. Вы используете специальные символы в своем регулярном выражении (., парены, кавычки) - вам нужно экранировать их косой чертой. И вам нужно экранировать косую черту с помощью другой косой черты, потому что мы находимся в строковом литерале C #, если только вы не префиксируете строку с @, в этом случае правила экранирования отличаются.
  2. Выражение, которое соответствует «любому количеству любых символов», равно .*. В этом случае вы захотите сопоставить любое количество символов, не заключенных в кавычки, например [^"]*.
  3. В отличие от (1) выше, строка замены не является регулярным выражением, поэтому вам не нужны косые черты.
  4. Вам нужно где-то хранить возвращаемое значение замены.

Конечный результат

var result = Regex.Replace(contenu,
                           @"Request\.ServerVariables\(""[^""]*""\)",
                           "Request.ServerVariables('test')");
1 голос
/ 21 июня 2011

Основываясь исключительно на моих знаниях регулярных выражений (а не на том, как они выполняются в C #), вероятно, вам нужен шаблон:

"[^"]*"

т. Е. - сопоставить «затем сопоставить со всем, что не является« затем сопоставить с другим »

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

0 голосов
/ 21 июня 2011

Регулярное выражение Taryn Easts включает *. Вы должны удалить его, если это просто заполнитель для любого значения:

"[^"]"

Кстати: вы можете проверить это регулярное выражение с помощью этого классного редактора: http://rubular.com/r/1MMtJNF3kM

0 голосов
/ 21 июня 2011

Старайтесь избегать, где вы можете использовать '. *' В регулярных выражениях, обычно вы можете найти то, что хотите получить, избегая других символов, например [^ "] + без кавычек или ([^)] +) нев скобках. Так что вы можете просто захотеть "([^"] +) ", который должен дать вам все это в [0], тогда в [1] вы найдете 'test'.

Вы можететакже просто замените «» на «я думаю.

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