Regex find HTML part between two html elements

02/05/2016 23:33 FreewayC#1
Hallo,


folgendes Problem:
Ich möchte gerne über Regular Expressions einen bestimmten HTML Part von einer Website extrahieren.

Der HTML Part sieht wie folgt aus
HTML Code:
<strong>Info <!-- Dazwischen befinden sich andere HTML Elemente, wie zum Beispiel 'breaks' aber natürlich auch ganz normale Strings und Zahlen (Datum) -->  </strong>
Ich möchte den kompletten Content zwischen den zwei Tags. Natürlich gibt es auch mehrere "<strong>" im Dokument aber es gibt nur ein <strong> wo das Wort "Info" danach erfolgt, deshalb sollte "<strong>Info" der Einstiegspunkt sein :)


besten Dank und freundliche Grüße,
freewayc
02/06/2016 00:58 alpines#2
Das hier parst den kürzesten Teil raus (bricht ab dem 1. </strong> ab)
Code:
(?s)(<strong>Info.+?<\/strong>)
Das hier parst das Längste raus
Code:
(?s)(<strong>Info.+<\/strong>)
Wenn du uns mehr Infos gibst können wir das Pattern besser spezifizieren.
02/06/2016 02:37 Krabat2#3
Ich habe oft gelesen, dass man Regex bei HTML Code nicht nutzen sollte, sondern lieber einen Html Parser!

Wenn ich es mal gebraucht habe, habe ich aber auch Regex genutzt.
02/06/2016 04:31 warfley#4
Quote:
Originally Posted by Krabat2 View Post
Ich habe oft gelesen, dass man Regex bei HTML Code nicht nutzen sollte, sondern lieber einen Html Parser!

Wenn ich es mal gebraucht habe, habe ich aber auch Regex genutzt.
Es kommt immer drauf an wie oft man den Seitenquelltext ausliest, wenn man nur eine Information benötigt ist regex schön und gut, wenn man mehrere Sachen aus dem Quelltext lesen will sollte man einen HTML Parser verwenden der den HTML Text einmal einließt und in eine geeignete Datenstruktur zum schnellen und ressourcenschonenden Zugriff schreibt.

Sonst erzeugt man einfach nur einen gigantischen unnötigen Overhead.
02/06/2016 16:31 FreewayC#5
Danke @alpines, genau das was ich gesucht habe :)