C # Regex Issue "unerkannte Escape-Sequenz"
Ich habe ein Problem mit den regulären Ausdrücken, die ich verwende, aber nicht wissen, wie es weiter geht mit Ihnen. Ich bekomme die Fehlermeldung "unbekannte escape-Sequenz".
Ich versuche, Liste aller Dateien, mit dem man eine Telefonnummer in die Formate aufgeführt, in der Sie den code unten
static void Main(string[] args)
{
//string pattern1 = "xxx-xxx-xxxx";
//string pattern2 = "xxx.xxx.xxxx";
//string pattern3 = "(xxx) xxx-xxxx";
string[] fileEntries = Directory.GetFiles(@"C:\BTISTestDir");
foreach (string filename in fileEntries)
{
StreamReader reader = new StreamReader(filename);
string content = reader.ReadToEnd();
reader.Close();
string regexPattern1 = "^(\d{3}\.){2}\d{4}$";
string 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();
}
Jede Hilfe wird sehr geschätzt.
InformationsquelleAutor der Frage Blake Rogers | 2011-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
@
um die Saiten nicht mehr mit dem escape-Zeichen\
:Als seitliche Anmerkung, ich denke, Sie wollen die zwei
if
s am Ende zu einem einzigenif
mit einem oder (||
) zwischen den beiden Bedingungen.InformationsquelleAutor der Antwort Blindy
Fügen Sie ein zusätzliches '\' , unescape die Flucht. Wenn es verarbeitet wird es dann interpretiert werden, in der Art und Weise Sie bestimmt.
InformationsquelleAutor der Antwort
Das problem ist nicht der regex, aber der string. Vor dem kompilieren es zu einer regex mit dem Aufruf IsMatch(), den text, den Sie eingeben, ist noch ein normaler string und es muss gehorchen, der Sprache Regeln.
\d in Ihrer Sprache ist keine escape-Sequenz erkannt, daher der Fehler. Sie können entweder Doppel-backslashes (\ ist das escape-Sequenz zu bekommen ) oder, wie Blindy darauf hingewiesen, können Sie Präfix Ihre Konstante strings, die mit einem @, sagen dem compiler, dass es nicht zu interpretieren versuchen, alles sah aus wie eine escape-Sequenz.
InformationsquelleAutor der Antwort King_DuckZ