Замена текста на RegEx и C # не работает так, как мне нужно - PullRequest
1 голос
/ 01 февраля 2012

Я ищу способ пройти строку и заменить все случаи, когда второй и третий символы всегда будут разными, а остальные будут одинаковыми.Например, если бы у меня было:

"ú07ú" to be replaced with "ú07 ú" 
"ú1Eú" to be replaced with "ú1E ú"
"ú12ú" to be replaced with "ú12 ú"

Я знаю, что должен использовать регулярные выражения, но они сбивают меня с толку.Я почти уверен, что синтаксис будет выглядеть примерно так:

Content = Regex.Replace(Content, @"ú...", “ú.. ú");

Но, очевидно, это не работает.Может ли любой гуру RegEx протянуть руку помощи, пожалуйста?

Спасибо

Ответы [ 3 ]

4 голосов
/ 01 февраля 2012

Похоже, что вы хотите:

Content = Regex.Replace(Content, @"ú([^ú]+)ú", @"ú$1 ú");

Это регулярное выражение:

ú([^ú]+)ú 

Означает: соответствует ú, затем хотя бы один символ, который не ú (и захватить эту часть)затем еще один.Если вы хотите, чтобы оно совпадало только с точно двумя символами посередине, то измените [^ú]+ на [^ú]{2}

Затем мы заменим все это на:

ú$1 ú

Что означает: ú, затем захваченную часть строки, затем пробел и снова ú.

0 голосов
/ 01 февраля 2012
[TestMethod]
public void regex_test()
{
  string expr = @"(?<firstThree>.{3})(?<lastOne>.{1})";
  string replace = "${firstThree} ${lastOne}";

  string first = "u84u";
  string firstResult = "u84 u";

  Assert.AreEqual<string>(firstResult, Regex.Replace(first, expr, replace));
}
0 голосов
/ 01 февраля 2012

Я совершенно незнаком с C #, но с точки зрения регулярных выражений вам нужны группы захвата.

"ú ..." должно быть "(ú ...) (.)", А "ú .. ú" должно быть "$ 1 $ 2", предполагая, что C # использует стандартную запись регулярного выражения для захвата групп.

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