Schrift
[thread]11261[/thread]

Schließendes Element (Klammer/Tag) finden



<< >> 3 Einträge, 1 Seite
Hagen
 2008-02-07 11:45
#105676 #105676
User since
2007-09-06
233 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich bin auf der Suche nach einer RegExp, die auf ein öffendes Element in einem Text das dazu passende schließende findet. Solange die Elemente nicht verschachtelt sind, ist das ja relativ einfach:

Code (perl): (dl )
$text =~ m|<(\S+?)>(.+?)<\/\1>|;


Wie aber würde ich bei einer Verschachtlung lösen, z.B.:

Code: (dl )
ein text <b> noch ein text <b> und noch ein text </b> und noch ein weitere text </b> ende <b> aber hier steht noch etwas </b>


Ziel ist es, alles innnerhalb dem ersten '<b>' und dem dazu (!) schließendem '<b>' zu finden, also in diesem Fall bis vor dem 'ende'. Es handelt sich auch nicht immer um Tags, es können auch Klammern sein.

Hat vielleicht irgendwer ein Stichwort, wonach ich suchen könnte? Google. war leider bisher (noch) nicht sehr hilfreich.

Gruß

Hagen
Gruß
Hagen
moritz
 2008-02-07 11:51
#105677 #105677
User since
2007-05-11
923 Artikel
HausmeisterIn
[Homepage]
user image
Mit Regulären Ausdrücken geht das nicht, aber mit üblen Perl 5-Regex-Hacks geht sowas schon.

Vorher eine Rückfrage: kannst du perl 5.10 (oder 5.9.*) einsetzen? da gibts nämlich entsprechend mächtige Regex-Konstruktionen.

Aber um HTML oder XML zu parsen solltest du ein entsprechendes Modul nehmen, das spart sehr viel Nerven ;)
Strat
 2008-02-07 12:51
#105680 #105680
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
schau dir mal CPAN:Text::Balanced an, damit suche ich z.B. die BBCode-Tags hier im Forum.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 3 Einträge, 1 Seite



View all threads created 2008-02-07 11:45.