Regex searchpattern übersetzung wildcard

10/12/2009 - 09:46 von Ulrich Bernhardt | Report spam
Hallo NG!

Ich erflehe Hilfe Exertenhilfe in Sachen Regex. Vorab: andere Lösungen sind
mir bekannt und funktionieren nàtürlich, sind im vorliegenden Fall aber nicht
verwendbar; RegularExpression muß eingesetzt werden! Folgendes:

IParallelEnumerable<string> q = (
from item in liste()
where Regex.IsMatch( item, searchPattern, RegexOptions.IgnoreCase )
select item).AsParallel().AsOrdered ();

gibt für z.B. searchPattern = "a*.dll" (--> "a.*\.dll) kein sinnvolles
Ergebnins, wohl aber für "*.log" oder "*log" oder "log*". Es geht also um die
Regexplizierung (! Klasse Wort, oder?) eines Wildcard-Zeichens innerhalb
eines Suchmusters. Ich kann kein Regex, das gebe ich zu! Für jede sinnvolle
Antwort ein Danke im Voraus.
 

Lesen sie die antworten

#1 FrankDzaebel
10/12/2009 - 10:22 | Warnen spam
Hallo Ulrich,

  from item in liste()
  where Regex.IsMatch( item, searchPattern, RegexOptions.IgnoreCase )
  select item [...]

gibt für z.B. searchPattern = "a*.dll" (--> "a.*\.dll) kein sinnvolles
Ergebnins, wohl aber für "*.log" oder "*log" oder "log*".



Also das, was Du mit "*.log" wohl meinst ist als Regex-Ausdruck
@".*\.log". Der "*" ist bei regulàren Ausdrücken einQuantifizierer.
Der Punkt hat als Zeichenklasse eine Sonderbedeutung (nàmlich
ein beliebiges Zeichen mit Ausnahme von -> s.Zeichenklasse)
und sollte escaped werden.
Ihm sollte eine (Gruppe oder) Zeichenklasse vorangestellt sein.
Also beispielsweise:

string[] liste = new string[]
{"test.log","Neumann.dat","Beispiel.log"};
string searchPattern = @".*\.log";
var result = from item in liste
where Regex.IsMatch(item, searchPattern, RegexOptions.IgnoreCase)
select item;
______

Ggf. natürlich auch über Regex.Matches.

[Quantifizierer]
http://msdn.microsoft.com/de-de/lib...6d374.aspx

[Zeichenklassen]
http://msdn.microsoft.com/de-de/lib...w873z.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen