Komplexere Reguläre Ausdrucke

thpe

Grünschnabel
Hallo zusammen,

ich erhalte bei einem Problem etwas komplexere Ausdrücke in einer Variable, z. B.

"<table cellspacing="0" class="breadcrumb"><tr><td>
<!-- begin header -->
<a href="/portal/site/TMobile/menuitem.xy/?vgnextoid=xy">Home</a> >
<a href="/portal/site/TMobile/menuitem.xy0/?vgnextoid=xy">Tarife & Preise</a> >
Weitere Tarifinformationen
<!-- end header --></td></tr></table>"


oder z.B.

"<table cellspacing="0" class="breadcrumb"><tr><td>
<a href="/portal/site/TMobile/menuitem.xy/?vgnextoid=xy">Home</a> >
<a href="/portal/site/TMobile/menuitem.xy0/?vgnextoid=xy">Tarife & Preise</a> >
<a href="/portal/site/TMobile/menuitem.xy/?vgnextoid=xy">No mehr Preise</a> >
<a href="/portal/site/TMobile/menuitem.xy0/?vgnextoid=xy">Mehr mehr Preise</a> >
Weitere Tarifinformationen
<!-- end header --></td></tr></table>"

Es könne also zwischen 0 und n Links drin stehen und genau diese möchte ich haben und den letzten Namen, welcher kein Link ist auch.

Ich habe schon mit einigen regulären Ausdrucken und for-Schleifen probiert und komme einfach nicht dran. Erst habe ich versucht mir mit search die Start und Endeposition raus zu suchen und diese dann per slice zu filtern. Leider lande ich immer beim ersten. Dann hatt ich eine exec Anweisung, das klappte aber irgendwie garnicht, ich habe immer nur die < ausgegeben bekommen.

Ich möchte gerne nur die roten Ausdrücke in einer Liste haben. Hat ihr jemand eine Idee bzw. kann mir helfen?

Danke & Gruß
Thomas
 
gehen wir mal davon aus, dass du alle \n und \r strips, dann kriegst du alle links schonmal mit:

/">([^<]+)</a>/i

Danach noch mal nach diesem Suchen:
/>([^<]+)<!--/i

schon solltest du alles haben, was rot markiert ist (ungetestet, sollte aber funktionieren (wenigstens in php) =) )
 
Hallo zusammen,

super danke für die Hilfe. Ich habe jetzt zwar mir folgendes Statement
"Extrakt=String(Extrakt.replace(/<a[^>]+>|<\/a>/gim,'')).split(/\s*&gt;\s*/);" aus einem anderen Thema gearbeitet, scheitere aber direkt bei dem nächsten regulären Ausruck, die sind mir bei Java irgendwie unheimlich, da sind die mit dem awk oder sed unter Unix/Linux besser :)

Aus folgendem Bereich:
"[...]
<option value="18de821c15934010VgnVCM100000cb17d20aRCRD">AX Y</option>
<option value="f4ce821c15934010VgnVCM100000cb17d20aRCRD">AX Z</option>
<option value="d2ce821c15934010VgnVCM100000cb17d20aRCRD" selected >AX Y</option>
<option value="f5de821c15934010VgnVCM100000cb17d20aRCRD">AX H</option>
<option value="d4ee821c15934010VgnVCM100000cb17d20aRCRD">AX J</option>
[...]"
würde ich geren den roten Ausdruck filtern, immer das wo selected steht.

Der Ausdruck kann aus einem Wort (zB. Huhu), 2 Wörtern (zB. Huhu Huhu) oder 3 Wörtern (zB huhu huhu huhu) bestehen, diese sind jeweils durch ein Leerzeichen getrennt. Die Zeichenfolge hat maximal mit Leerstellen eine Länge von 35 Zeichen.

Mein Ansatz war "/selected\s>(.+)<\/option>/" funktioniert aber irgendwie überhaupt nicht.

Hat jemand nocheinmal ein so geniales Statement wie oben.

Danke & Gruß
Thomas
 

Neue Beiträge

Zurück