Ich verwende die folgende Regex: (PatientID).*?[\d]+
Regex geben verschiedene Spiele, basierend auf, was den Ausdruck ausführt
Wenn ich Notepad ++ 's ‚In Dateien suchen‘ verwenden Features diesen Ausdruck auf einem bestimmten Ordner ausgeführt wird, erhalte ich 1118 Spiele in 231 Dateien.
Wenn ich C# verwenden, die gleichen Ordner iterieren und alle Dateien bekommen, erhalte ich 1070 Treffer in 223 Dateien.
static string uat04Dir = @"C:\Users\me\Desktop\UAT04_Generated_Scripts\";
static void Main(string[] args)
{
Regex r = new Regex(@"(PatientID).*?[\d]+");
int matchCounter = 0;
int fileCounter = 0;
string[] files = Directory.GetFiles(uat04Dir, "*.sql", SearchOption.AllDirectories);
foreach (string file in files)
{
string lines = File.ReadAllText(file);
MatchCollection matches = r.Matches(lines, 0);
matchCounter += matches.Count;
if (matches.Count > 0)
fileCounter++;
}
Console.WriteLine(String.Format("{0} Matches in {1} files.", matchCounter, fileCounter));
}
Warum gibt das unterschiedliche Ergebnisse zurück?
In Notepad ++ verwenden Sie eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung. In C# wird bei der Suche die Groß- und Kleinschreibung berücksichtigt. Versuchen Sie, die Regex mit dem Flag "RegexOptions.IgnoreCase" zu kompilieren und sehen Sie, ob Sie die gleichen Ergebnisse erhalten. –
Wie es sein sollte: Beispiel http://imgur.com/a/gpVDA vs http://imgur.com/a/SBwvz – sln