![]() |
|
|||||||
| Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp Forum microsoft.public.de.german.entwickler.dotnet.csharp |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#1
|
|||
|
|||
|
Salü alle zusammen
Ich habe ein String der schaut wie folgt aus: href=(["'](?<url>.*?)["']|(?<url2>\S*?)\s) Dann habe ich einen Quelltext: Das ist ein <a href="local.htm">Link</a> auf lokale Seite mit Gänsefüsschen. Das ist ein <a href=AuchLocal.htm>Link</a> auf lokale Seite ohne Gänsefüsschen. Ein <a href="http://www.daomain.ch">Link</a> auf Domain Das ist ein <a href="Mein Produkt.htm">Link mit Leerzeichen</a> Leerzeichen. Wenn ich im Tool Expresso (http://www.nettz.de/Service/regexp/index.cgi) diesen String eingebe, bekomme ich wie ich es erwarte folgendes Resultat: href="local.htm" href=AuchLocal.htm>Link</a> href="http://www.daomain.ch" href="local.htm" Wenn ich jedoch auf der Seite http://www.nettz.de/Service/regexp/index.cgi das prüfe, bekomme ich ein Fehler in der Auswertung meines RegExp: Sequence (?.*?)["']|(?\S*?)\s)/ Ebenso erhalte ich in C# eine falsche Antwort, nämlich immer bis und mit </a>. Eigentlich würde ich als Ziel folgende Ausgabe haben wollen: local.htm AuchLocal.htm http://www.daomain.ch local.htm Also immer nur der Domainname ohne was drum herum. Was mache ich falsch? Vielen Dank für Hinweise Gruss Tamara |
|
|
||||
|
||||
|
|
|
#2
|
|||
|
|||
|
Hallo Tamara,
Am Mon, 2 Nov 2009 21:59:38 +0100 schrieb Tamara Mikes: > Salü alle zusammen > > Ich habe ein String der schaut wie folgt aus: > > href=(["'](?<url>.*?)["']|(?<url2>\S*?)\s) > > Dann habe ich einen Quelltext: > > Das ist ein <a href="local.htm">Link</a> auf lokale Seite mit Gänsefüsschen. > Das ist ein <a href=AuchLocal.htm>Link</a> auf lokale Seite ohne > Gänsefüsschen. > Ein <a href="http://www.daomain.ch">Link</a> auf Domain > Das ist ein <a href="Mein Produkt.htm">Link mit Leerzeichen</a> Leerzeichen. > > > Wenn ich im Tool Expresso (http://www.nettz.de/Service/regexp/index.cgi) > diesen String eingebe, bekomme ich wie ich es erwarte folgendes Resultat: > Ohne auf Deinen Ausdruck näher einzugehen, ich bekomme mit meinem Tool (C#) auch diese Lösung. > href="local.htm" > href=AuchLocal.htm>Link</a> <--- > href="http://www.daomain.ch" > href="local.htm" > Vielleicht liegt's an den RegEx-Optionen? -> IgnoreWhitespace? .... > > local.htm > AuchLocal.htm > http://www.daomain.ch > local.htm > > Also immer nur der Domainname ohne was drum herum. > Was mache ich falsch? > > Vielen Dank für Hinweise > Gruss Tamara Werner -- Reguläre Ausdrücke testen? http://www.weepee.de/de/wps_regex/wps_regex.html www.weepee.eu |
|
#3
|
|||
|
|||
|
Am Tue, 3 Nov 2009 06:25:30 +0100 schrieb Werner Perplies:
> Vielleicht liegt's an den RegEx-Optionen? > -> IgnoreWhitespace? Sorry, nein, da hatte sich beim Copy ein CRLF eingeschlichen, es sollte _ohne_ (None) Optionen so funktionieren. > > Werner Werner -- Reguläre Ausdrücke testen? http://www.weepee.de/de/wps_regex/wps_regex.html www.weepee.eu |
|
#4
|
|||
|
|||
|
Hallo Tamara,
> Wenn ich im Tool Expresso [...] diesen String eingebe, bekomme ich wie ich > es erwarte folgendes Resultat: [...] > Wenn ich jedoch auf der Seite http://www.nettz.de/Service/regexp/index.cgi > das prüfe, bekomme ich ein Fehler [...] Das "Netzz" Tool kennt offensichtlich die Gruppen-Syntax nicht wie: (?<Gruppe>.*). Expresso und C# sollten da gemäss .NET Syntax arbeiten. Dass Du bei C# was "falsches" bekommst, liegt evtl. an einer falschen Umsetzung des Verbatim-Modus. Hier eine Möglichkeit: private void Form1_Load(object sender, EventArgs e) { string href = *"href=([""'](?<url>.*?)[""']|(?<url2>\S*?)\s)"; string quellText = *"Das ist ein <a href=""local.htm"">Link</a> auf lokale Seite mit Gänsefüsschen. Das ist ein <a href=AuchLocal.htm>Link</a> auf lokale Seite ohne Gänsefüsschen. Ein <a href=""http://www.daomain.ch"">Link</a> auf Domain Das ist ein <a href=""Mein Produkt.htm"">Link mit Leerzeichen</a> Leerzeichen."; Regex rx = new Regex(href); MatchCollection matches = rx.Matches(quellText); StringBuilder sb = new StringBuilder(); foreach (Match match in matches) sb.AppendLine(match.Value); MessageBox.Show(sb.ToString()); } _____ BTW: eine richtige href Regex ist das natürlich nicht. ciao Frank -- Dipl.Inf. Frank Dzaebel [MCP/MVP C#] http://Dzaebel.NET |
|
#5
|
|||
|
|||
|
Tamara,
Am Mon, 2 Nov 2009 21:59:38 +0100 schrieb Tamara Mikes: [...] Eine Lösung könnte sein: (href=\"(?<result>.*?)\")|((href=(?<result>.*?))>) Das gewünschte Ergebnis stände dann in "result": http://www.weepee.de/wps_regex/RegExhref.png > Vielen Dank für Hinweise > Gruss Tamara Werner -- Reguläre Ausdrücke testen? http://www.weepee.de/de/wps_regex/wps_regex.html www.weepee.eu |
|
|
|
|
![]() |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| Regex | Christian Mauerer | Newsgroup microsoft.public.de.german.entwickler.dotnet.csharp | 17 | 07-07-2009 02:17 PM |
| regex | Chris Leick | Newsgroup at.linux | 16 | 06-15-2009 10:39 PM |
| regex | Chris Leick | Newsgroup at.linux | 0 | 06-11-2009 03:27 PM |
| regex | Chris Leick | Newsgroup at.linux | 0 | 06-11-2009 03:27 PM |
| RegEx | A. Sicken | Newsgroup de.comp.lang.perl.misc | 2 | 04-29-2009 12:35 AM |