Я использую NET 2.0 с WinForms на C #.У меня большая проблема с регулярным выражением.Я пытаюсь добавить двоеточие к 4 или более буквенных слов в простой строке.Добавлять двоеточие нужно только один раз, после этого код больше не должен добавляться.
Regex lbls = new Regex(@"^\s*(?<lbl>[A-Za-z0-9_]{4,})", RegexOptions.Multiline); // Use a regex to obtain all 4 letter words in string
MatchCollection matches = lbls.Matches(text); // text is my string
foreach (Match m in matches)
{
string mm = m.Groups["lbl"].Value; // Matches are stored in this group.
if (!Regex.IsMatch(text, @"^\s*\b" + mm + @":\b", RegexOptions.Multiline))
{
text = Regex.Replace(text, @"\b" + mm + @"\b", mm + ":", RegexOptions.Multiline);
}
}
Предположим, строка "TEST"Это означает, что вывод должен быть "ТЕСТ:", который это.Однако, если код запускается еще раз, текст должен оставаться «TEST:», но это не так, и вместо этого это «TEST ::».Колоны продолжают добавляться.Почему это?Мое утверждение if выглядит полностью правильным.