Regular expression Schwierigkeit
Marko
- sonstiges
Hallo,
Ich lerne gerade die regulären Ausdrücke, und stoße immer wieder auf folgendes Problem:
Mit Pattern ^<.+>$ bei String <test> <test2>
Ich möchte sowohl "<test>" als auch "<test2>" im Ergebnis, doch was kommt, ist "<test> <test2>", und sonst nichts mehr.
Gibt es einen Regex-Trick, den man da anwenden kann?
Ich arbeite gerade unter VB/C#.NET, falls das weiterhelfen könnte.
Grüße, Marko
Huhu Marko
Gibt es einen Regex-Trick, den man da anwenden kann?
es gibt sog. "modifier" mit denen man u.a. auf "greedy" / "ungreedy" umstellen kann.
Schüttel mal Deine Dokumentation bzw. Suchmaschine Deiner Wahl damit, da sollte eigentlich was passendes "rausfallen".
Viele Grüße
lulu
Das Problem bei Deinem regulären Ausdruck ist der ".": Das schließende ">" wird auch als "." angesehen.
Folgende Ausdruck könnte klappen: <[^>]+>
[^>]+ bedeutet: Gib' mir irgendein Zeichen außer ">".
tschau
Frank
Hi,
Das Problem bei Deinem regulären Ausdruck ist der ".": Das schließende ">" wird auch als "." angesehen.
Wieso wird das letzte > dann nicht auch als "." angesehen?
Folgende Ausdruck könnte klappen: <[^>]+>
[^>]+ bedeutet: Gib' mir irgendein Zeichen außer ">".
Okay, aber wie würde ich dann alle Tags aus einer HTML-Datei lesen?
Pattern für Tag könnte so aussehen:
<(?<tag>.+)( .+|)>.*</\k<tag>>
Hier geht deine Lösung nicht, weil sich Tags beliebig verschachteln können. Eine Idee?
Gruss, Marko
Ich kenne mich leider nur mit reguläre Ausdrücke in Javascript aus. In Javascript ist es so, daß immer der längste Ausdruck gefunden wird, daher wird das letzte ">" auch nicht als "." angesehen.
Okay, an verschachtelte Tags hab' ich nicht gedacht, da muß ich noch drüber nachdenken.
Was willst Du eigentlich tun, wenn ich fragen darf?
Tschau
Frank
Hi,
Ich kenne mich leider nur mit reguläre Ausdrücke in Javascript aus. In Javascript ist es so, daß immer der längste Ausdruck gefunden wird, daher wird das letzte ">" auch nicht als "." angesehen.
Wie kommst DU auf JavaScript? Ich arbeite in .NET ;)
Okay, an verschachtelte Tags hab' ich nicht gedacht, da muß ich noch drüber nachdenken.
Wenn Dir was einfällt, melde dich. Ich habs vorerst stur mit nem Riesenalgo gelöst, der Zeichen für Zeichen durckramt, mit Buffern und so :/
Was willst Du eigentlich tun, wenn ich fragen darf?
Einen HTML-Parser, ist schon fertig. Hast Du gewusst, dass die meisten Seiten (google.de, web.de, freemail.de, ...) die Tags nicht richtig Verschachtelt haben? Da stösst man auf sachen wie <tr></td height="20"> ...
Gruss, Marko