RegEx, die 188ste...

  • Liebe Gemeinde,

    ich habe Webseiten, aus denen ich ein paar Daten holen soll. Irgendwo darin steht z.B. das:

    <tr>
    <th>Hausanschrift</th>
    <td>
    Hausplatz 1<br />
    12345 Stadt
    </td>

    Die Zeilen sind mit Leerzeichen eingerückt.

    Ich würde gerne Hausplatz 1 in einen String bekommen und 12345 Stadt in einen anderen. Den Rest brauche ich nicht.
    Bei http://www.regexr.com/ habe ich schon ein wenig eingekreist, aber ich bleibe hängen, weil nach Hausplatz 1 noch die PLZ und Teile von der Stadt gefunden werden.
    Der Suchstring schaut so aus:
    [^<th>Hausanschrift</th>\r\s*<td>\r\*]\w*\s\d*[^<br\s\/>\r\s*]
    Ich würde mir wünschen, daß alles rechts nach dem <br /> ignoriert wird. Kann mir da jemand bitte helfen?

    Danke!

  • Hausinterne. Unser Admin hat uns verlassen, der neue arbeitet sich ein und hat für so was ziemlich lange keine Zeit. Ich habe keine andere Möglichkeit, die Kundeninformationen, die im Lauf der Jahre auf einzelne Seiten ins Intranet gestellt wurden, in eine für uns im Vertrieb wesentlich besser nutzbare Tabelle zu bringen. Jede Firma mit einer eigenen Seite. Super. Da klick ich mir schon lange die Finger wund und es braucht ewig zum Laden einer Seite. Da sind auch noch weitere Informationen wie die Webseite oder Ansprechpartner, die ich auch noch brauche, aber das gelingt mir dann schon.

    Mir ist leider nicht klar, wie ich nach etwas suche, und wenn das einmal gefunden wurde, alles nachfolgende ignoriere.

    • Offizieller Beitrag

    Da Zeilenumbrüche in Websites häufig nicht CRLF, sondern LF sind, habe ich das CR im Pattern mal optional gemacht. Es geht also mit beiden Umbrüchen.

    [autoit]

    Local $s = _
    '<tr>' & @CRLF & _
    '<th>Hausanschrift</th>' & @CRLF & _
    '<td>' & @CRLF & _
    'Hausplatz 1<br />' & @CRLF & _
    '12345 Stadt' & @CRLF & _
    '</td>' & @CRLF

    [/autoit][autoit][/autoit][autoit]

    Local $aRet = StringRegExp($s, 'Hausanschrift</th>\r\n<td>\r?\n([^<]+)<br />\r?\n(.+)\r?\n</td>', 3)

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aRet)

    [/autoit]