HTML Code korrekt parsen

  • Hallo zusammen

    Ich hoffe, es kann mir jemand helfen, den korrekten RegExp zusammen zu stellen, um einen HTML Quellcode korrekt zu parsen!
    Der Quellcode könnte z.B. so aussehen:

    PHP
    xyzxyzxyz (Beliebige Zeichen hier. Auch Zeilenumbrüche)
    
    
    title="xyz" src="http://www.url.ch/uploads/xyz1.jpg" alt="" width="450" height="519" /></a></p>
    xyz xyz xyz
    title="xyz" src="http://www.url.ch/uploads/xyz2.jpg" alt="" width="450" height="519" /></a></p>
    xyz xyz xyz
    title="xyz" src="http://www.url.ch/uploads/xyz3.jpg" alt="" width="450" height="519" /></a></p>

    Ich möchte nun alle Stellen finden, die mit src="http://www.url.ch/uploads/ beginnen und mit .jpg" aufhören.

    Den RegExp habe ich versucht mit (.*)src=\"http\:\/\/www.url.ch\/uploads\/(.*)\.jpg\"
    Aber das funktioniert offensichtlich nicht.

    Wenn jemand nicht mit diesen Ausdrücken auf Kriegsfuss steht, könnte er mir bestimmt kurz helfen!
    Vielen Dank!
    Veronesi

    Einmal editiert, zuletzt von veronesi (4. April 2012 um 09:12)

  • Moin, geht es auch ohne RegExp? hier mal eine Lösung mit _Stringbetween

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    #include <File.au3>
    #include <String.au3>
    Dim $File = 'test.txt', $StringResult = ''
    Dim $aArray, $aResult[1]
    $fRead = _FileReadToArray($File,$aArray)
    For $i = 1 To UBound($aArray)-1
    $StringResult = _StringBetween($aArray[$i],'src=',' alt')
    If @error Then ContinueLoop
    _ArrayAdd($aResult,$StringResult[0])
    Next
    _ArrayDisplay($aResult)

    [/autoit]

    Gruß Marvin

  • Hi Marvin

    Leider geht das nicht, da zwischendurch auch ähnliche, aber leider für mich ungültige Zeichen vorkommen.
    Den RegExp habe ich nun etwas erweitert. Nun findet er schon bessere Ergebnisse, aber vorallem nach dem Match noch zu viel:

    [autoit]

    ((?i)(?<=.src\=\")http\:\/\/www\.url\.ch\/uploads\/(.*)\.jpg(?=\".*))

    [/autoit]

    Edit:
    Mit dem nun oben korrigierten RegExp hat es funktioniert!

    3 Mal editiert, zuletzt von veronesi (4. April 2012 um 09:12)

  • Moin veronesi,

    geht auch einfacher. Für einen Slash brauchst Du kein Escape-Zeichen voransetzen, bei einem Backslash schon. ;)

    [autoit]


    $sPattern = '(src="http://www.url.ch/uploads/.+\.jpg)'

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

    $aResult = StringRegExp ($sSearchString, $sPattern, 3)

    [/autoit]

    Gruß
    Greenhorn