Почему метод замены регулярных выражений не работает? - PullRequest
1 голос
/ 06 января 2009

В следующем коде я хочу заменить каждое вхождение "U.S.A" на "united states of America" и каждое вхождение "uk" на "united kingdom" в строке, но, похоже, это не работает. Как мне это исправить?

class Program
    {
        static void Main(string[] args)
        {
            string s = "the U.S.A love UK";
            Console.WriteLine(replace(s));
        }

        public static string replace(string s)
        {
            s = Regex.Replace(s, @"^U.S.A", " United state Of America");
            s = Regex.Replace(s, @"^Uk", "United kingdom");
            return s;
        }

    }

Ответы [ 5 ]

3 голосов
/ 06 января 2009

Хорошо, посмотрите на шаблон поиска в вашем регулярном выражении.

^ имеет особое значение. (как и ., но в этом случае они на самом деле не потерпят неудачу, но они не делают то, о чем вы думаете)

1 голос
/ 06 января 2009

Для простых замен вам не нужны регулярные выражения:

string s = "the U.S.A love UK";
s = s.Replace("U.S.A", "United States of America").Replace("UK", "United Kingdom");
1 голос
/ 06 января 2009

Чтобы расширить ответ Аннакаты:

В регулярных выражениях символ «^» означает «совпадение в начале строки», поэтому, если вы хотите «U.S.A.» для замены это должны быть первые шесть символов в строке, то же самое для Великобритании. Удалите «^» из вашего RE, и он должен работать.

А что касается комментария о '.' символ, в регулярных выражениях это означает совпадение любого символа. Если вы хотите соответствовать буквальному «.» вы должны избежать этого, как это "."

1 голос
/ 06 января 2009
  1. . в вашем выражении U.S.A будет соответствовать любому одному символу. Я сомневаюсь, что это то, что вы намерены.
  2. ^ прикрепляет ваше выражение к началу строки. Вы этого не хотите.
  3. По умолчанию регулярные выражения чувствительны к регистру. Если вы хотите, чтобы Uk соответствовал UK, вам нужно указать сравнение без учета регистра.
0 голосов
/ 06 января 2009

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

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