C # Regex, чтобы сопоставить слово с точкой - PullRequest
30 голосов
/ 18 апреля 2011

Быстрая коричневая лиса перепрыгивает через ленивую собаку "- это англоязычная панграмма, алфавит! То есть фраза, которая содержит все буквы алфавита. Она использовалась для проверки алфавита пишущих машинок.компьютерные клавиатуры и другие приложения, включающие все буквы английского алфавита.

Мне нужно получить слово «алфавит» в регулярном выражении. В приведенном выше тексте есть 3 экземпляра.не включает «алфавит!». Я только что попробовал регулярное выражение с

 MatchCollection match = Regex.Matches(entireText, "alphabet."); 

, но это возвращает 4 экземпляра, включая «алфавит!». Как опустить это и получить только «алфавит».

Ответы [ 3 ]

41 голосов
/ 18 апреля 2011

. - это специальный символ в регулярном выражении, который соответствует чему угодно.Попробуйте убежать от него:

 MatchCollection match = Regex.Matches(entireText, @"alphabet\.");
16 голосов
/ 18 апреля 2011

. - это специальный символ в регулярных выражениях.Вы должны сначала экранировать его косой чертой:

Regex.Matches(entireText, "alphabet\\.")

Косая черта в конечном итоге становится двойной, потому что \ внутри строки, в свою очередь, следует экранировать другой косой чертой.

9 голосов
/ 18 апреля 2011

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

MatchCollection match = Regex.Matches(entireText, @"alphabet\.");

Edit:

Полный код, дающий ожидаемый результат:

        string entireText = @"The quick brown fox jumps over the lazy dog is an English-language pangram, alphabet! that is, a phrase that contains all of the letters of the alphabet. It has been used to test typewriters alphabet. and computer keyboards, and in other applications involving all of the letters in the English alphabet.";
        MatchCollection matches = Regex.Matches(entireText, @"alphabet\.");
        foreach (Match match in matches)
        {
            foreach (Group group in match.Groups)
            {
                Console.WriteLine(group);
            }
        }
...