web-dev-qa-db-fra.com

C # Regex pour faire correspondre le mot avec le point

Le renard brun rapide saute par-dessus le chien paresseux "est un pangram de langue anglaise, c'est-à-dire une expression qui contient toutes les lettres de l'alphabet. Il a été utilisé pour tester l'alphabet des machines à écrire. Et les claviers d'ordinateur, et dans d'autres applications impliquant toutes les lettres de l'alphabet anglais.

J'ai besoin d'obtenir "l'alphabet". Mot en regex. Dans le texte ci-dessus, il y a 3 instances. Il ne doit pas inclure "alphabet!". Je viens d'essayer regex avec

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

mais cela renvoie 4 instances dont "alphabet!". Comment omettre cela et obtenir uniquement "alphabet".

31
pili

. est un caractère spécial dans l'expression régulière, qui correspond à n'importe quoi. Essayez de lui échapper:

 MatchCollection match = Regex.Matches(entireText, @"alphabet\.");
42
Håvard

. est un caractère spécial dans les expressions régulières. Vous devez d'abord y échapper avec une barre oblique:

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

La barre oblique finit par être double parce que \ à l'intérieur d'une chaîne doit à son tour être échappé avec une autre barre oblique.

17
Jon

"." a une signification particulière dans les expressions régulières. Échappez-vous pour correspondre à la période

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

Éditer:

Code complet, donnant le résultat attendu:

        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);
            }
        }
10
manojlds