3 votes

.NET Regex correspondance de chaîne entière

Si nous prenons les motifs suivants : 70000@.* et 970000@.* la chaîne 970000@ILoveFishSticksAndTarTarSauce.com:5060 renvoie une correspondance avec 70000@.*

Je comprends pourquoi c'est une correspondance, mais je dois modifier l'expression régulière pour qu'elle ne fasse qu'une correspondance avec toute la chaîne.

Des idées ?

Merci !

J'utilise la bibliothèque .Net 3.5

Voici le code :

[Microsoft.SqlServer.Server.SqlProcedure]
public static void RouteRegex(string numéroDeTéléphone, out string valeur)
{
    if (string.IsNullOrEmpty(numéroDeTéléphone))
    {
        valeur = string.Empty;
        return;
    }
    const string strCommande =
        "Select RouteID,sequence,Pattern From SIPProxyConfiguration.dbo.Routes order by routeid, sequence asc";
    using (var connection = new SqlConnection("context connection=true"))
    {
        try
        {
            connection.Open();
            using (var command =new SqlCommand(strCommande,connection))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var regEx = reader[2] as string;
                        if (string.IsNullOrEmpty(regEx)) continue;
                        var routeId = reader[0];
                        var sequence = reader[1];
                        var match = Regex.Match(numéroDeTéléphone, regEx);
                        Regex.IsMatch()
                        if (!match.Success) continue;
                        valeur = routeId.ToString();
                        return;
                    }
                }

            }
            valeur = "Pas de correspondance !";
        }
        catch (Exception ex)
        {
            valeur = ex.Message;
            return;
        }
    }

}

6voto

Matthew Shea Points 567

Essayez d'utiliser les

^$ 

opérateurs dans votre regex pour forcer le début et la fin de la correspondance.

4voto

Hand-E-Food Points 5510

Commencez le motif avec ^ et terminez avec $. Ces symboles correspondent respectivement au début de la ligne ou de la chaîne et à la fin de la ligne ou de la chaîne.

"^70000@.*$" correspond à "70000@fishsticksforlife.com" mais pas à "970000@tatatotartar.com"
"^970000@.*$" correspond à "970000@tatatotartar.com"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X