Найти и вставить - PullRequest
       3

Найти и вставить

1 голос
/ 27 августа 2009

У меня есть строка, которая выглядит как (* буквально):

clp*(seven digits)1*

Я хочу изменить его так, чтобы он выглядел так:

clp*(seven digits)(space)(space)1*

Я работаю в C # и построил свой шаблон поиска следующим образом:

Regex regAddSpaces = new Regex(@"CLP\*.......1\*");

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

Любая помощь приветствуется.

Ответы [ 4 ]

6 голосов
/ 27 августа 2009

Нет необходимости использовать регулярные выражения здесь. Простые манипуляции со строками отлично сработают.

var input = "clp*01234561*";
var output = input.Substring(0, 11) + "  " + input.Substring(11, 2);
3 голосов
/ 27 августа 2009

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

var result = Regex.Replace("clp*12345671*", @"(clp\*\d{7})(1\*)", @"$1  $2");
1 голос
/ 27 августа 2009

Если вы просто хотите заменить это где-нибудь в тексте, вы можете использовать исключенные префиксные и суффиксные операторы ...

pattern = "(? <= Clp * [0-9] {7}) (? = 1 *)" </p>

Передавая это в регулярное выражение, замените его значением замены "", чтобы вставить пробелы.

Таким образом, следующий однострочник делает трюк:

string result = Regex.Replace(inputString, @"(?<=clp\*[0-9]{7})(?=1\*)", " ", RegexOptions.IgnoreCase);

0 голосов
/ 27 августа 2009

Вот регулярное выражение, но если ваше решение будет таким же простым, как вы заявили выше, ответ Нолдорина будет более ясным и более приемлемым решением. Но так как вы хотели регулярное выражение ... здесь вы идете:

// Not a fan of the 'out' usage but I am not sure if you care about the result success
public static bool AddSpacesToMyRegexMatch(string input, out string output)
{
    Regex reg = new Regex(@"(^clp\*[0-9]{7})(1\*$)");
    Match match = reg.Match(input);
    output = match.Success ?
        string.Format("{0}  {1}", match.Groups[0], match.Groups[1]) :
        input;
    return match.Success;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...