Entwickler-Ecke

Basistechnologien - Regex Pattern


Chryzler - Mo 04.06.07 18:37
Titel: Regex Pattern
Hi C-Sharp'ler,

ich fange jetzt auch .NET, genauergesagt C# an. :) Folgendes Problem:
Hab diesen [http://www.csharphelp.com/archives4/archive693.html] Code gefunden, um alle Links auf einer Webseite auszulesen. Nur wenn ich das ganze ausprobiere, zeigt er mir folgenden Fehler:
Zitat:
"(?:href\s*=)(?:[\s"']*)(?!#|mailto|location.|javascript|.*css|.*this\.)(?
.*?)(?:[\s>"'])" wird analysiert - Unbekanntes Gruppierungskonstrukt.

Der Fehler tritt an dieser Stelle auf:

C#-Quelltext
1:
2:
3:
4:
5:
    //regular expression 
    string pattern = @"(?:href\s*=)(?:[\s""']*)(?!#|mailto|location.|javascript|.*css|.*this\.)(?.*?)(?:[\s>""'])";
   
    //Set up regex object 
    Regex RegExpr = new Regex(pattern, RegexOptions.IgnoreCase);   // <- hier der Fehler, dass das Pattern fehlerhaft ist

Bis jetzt hab ich rausgefunden, dass der Fehler am (?.*?) im Pattern liegt. Und das ist genau die Stelle, an der im Original-Code auf der Webseite eine neue Zeile beginnt. Da muss sich irgendein Tippfehler o.ä eingeschlichen haben. Kann irgendjemand von euch den Pattern an der Stelle rekonstruieren, das Fehlende ergänzen, oder mir wenigstens einen Link geben, an dem erklärt wird, wie der Syntax von so einem Pattern aussieht. Hab das gesamte MSDN durchforstet.

Danke im Vorraus!
Chryzler


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Mo 04.06.2007 um 19:05


Christian S. - Mo 04.06.07 22:20

Der Regulator [http://sourceforge.net/projects/regulator/] ist da an einigen Stellen nicht ganz glücklich. ;-)

Hab schon länger keine komplizierten Regexen mehr benutzen müssen, aber das hier scheint ganz gut zu gehen:

Quelltext
1:
(?:href\s*=)(?:[\s""']*)(?:[^#|mailto|location.|javascript|.*css|.*this\.])(?:.*?)(?:[\s>""'])                    


Chryzler - Di 05.06.07 12:05

Super, danke! Scheint zu funktionieren.. :)