C Regex Issue “séquence d’échappement non reconnue”

J’ai un problème avec les expressions régulières que j’utilise mais je ne sais pas comment continuer avec elles. J’obtiens l’erreur “séquence d’échappement non reconnue”.

J’essaie de lister tous les fichiers qui pourraient avoir un numéro de téléphone dans les formats indiqués dans le code ci-dessous

static void Main(ssortingng[] args) { //ssortingng pattern1 = "xxx-xxx-xxxx"; //ssortingng pattern2 = "xxx.xxx.xxxx"; //ssortingng pattern3 = "(xxx) xxx-xxxx"; ssortingng[] fileEnsortinges = Directory.GetFiles(@"C:\BTISTestDir"); foreach (ssortingng filename in fileEnsortinges) { StreamReader reader = new StreamReader(filename); ssortingng content = reader.ReadToEnd(); reader.Close(); ssortingng regexPattern1 = "^(\d{3}\.){2}\d{4}$"; ssortingng regexPattern2 = "^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$"; if(Regex.IsMatch(content, regexPattern1)) Console.WriteLine("File found: " + filename); if(Regex.IsMatch(content, regexPattern2)) Console.WriteLine("File found: " + filename); } Console.WriteLine(Environment.NewLine + "Finished"); Console.ReadLine(); } 

Toute aide est très appréciée.

Utilisez @ pour que les chaînes n’utilisent plus le caractère d’échappement \ :

  ssortingng regexPattern1 = @"^(\d{3}\.){2}\d{4}$"; ssortingng regexPattern2 = @"^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$"; 

En remarque, je pense que vous voulez que les deux if s à la fin soient un seul if avec un ou ( || ) entre les deux conditions.

Ajoutez un ‘\’ supplémentaire pour libérer l’évasion. Une fois traité, il sera interprété comme vous le souhaitez.

Le problème n’est pas la regex, mais la chaîne. Avant de le comstackr dans une expression rationnelle avec l’appel de IsMatch (), le texte que vous entrez est toujours une chaîne normale et il doit obéir aux règles de la langue.

\ d dans votre langue n’est pas une séquence d’échappement reconnue, d’où l’erreur. Vous pouvez doubler les barres obliques inverses (\ est la séquence d’échappement à obtenir a) ou, comme Blindy l’a souligné, vous pouvez préfixer vos chaînes constantes d’un @, en indiquant au compilateur qu’il ne doit pas essayer d’interpréter quoi que ce soit qui ressemble à une séquence d’échappement .