Регулярное выражение для замены строки - PullRequest
0 голосов
/ 15 сентября 2009

Я пытался заменить   элементы в строке с помощью регулярных выражений .NET - безуспешно:)

Допустим, следующая строка:

 AA A  C D   A Some Text   here

Правила

  1. Не заменять в начале строки
  2. Заменить только отдельные случаи
  3. Не заменять, если пробел находится до или после него (необязательно)

Желаемый результат сверху (# в качестве символа замены):

 AA#A  C#D   A#Some Text   here

Ответы [ 5 ]

2 голосов
/ 15 сентября 2009

Это должно охватывать все 3 ваших требования. Извините за форматирование; Мне пришлось пометить галочкой первые несколько строк, чтобы   отображался правильно.

string pattern = @"(?<!^|&nbsp;)((?<!\s)&nbsp;(?!\s))(?!\1)";

string[] inputs = { "&nbsp;AA&nbsp;A&nbsp;&nbsp;C&nbsp;D&nbsp;&nbsp; A&nbsp;Some Text &nbsp; here", // original

"&nbsp;AA&nbsp;A&nbsp;&nbsp;C&nbsp;D&nbsp;&nbsp; A &nbsp;Some Text &nbsp; here" // space before/after

};

foreach (string input in inputs)
{
    string result = Regex.Replace(input, pattern, "#");
    Console.WriteLine("Original: {0}\nResult: {1}", input, result);
}

Выход:

Original: &nbsp;AA&nbsp;A&nbsp;&nbsp;C&nbsp;D&nbsp;&nbsp; A&nbsp;Some Text &nbsp; here

Result: &nbsp;AA#A&nbsp;&nbsp;C#D&nbsp;&nbsp; A#Some Text &nbsp; here

Original: &nbsp;AA&nbsp;A&nbsp;&nbsp;C&nbsp;D&nbsp;&nbsp; A &nbsp;Some Text &nbsp; here

Result: &nbsp;AA#A&nbsp;&nbsp;C#D&nbsp;&nbsp; A &nbsp;Some Text &nbsp; here

1 голос
/ 15 сентября 2009

Вы должны попробовать следующий пример:

string s = Regex.Replace(original, "(?<!(&nbsp;| |^))&nbsp;(?!(&nbsp;| ))", "#");

1 голос
/ 15 сентября 2009

Я не знаком с особенностью регулярных выражений в C #, но в стиле PERL / PHP это работает для меня:

s/(?<!\A| |&nbsp;)&nbsp;(?!&nbsp;| )/#/g

Это основано на отрицательном взгляде сзади, отрицательном взгляде вперед и \ A = начале входной escape-последовательности.

0 голосов
/ 15 сентября 2009

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

[^^\s(nbsp;)](nbsp;)[^$\s(nbsp;)]
0 голосов
/ 15 сентября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...