RegEx

  • Hallo,

    Ich komme da einfach nicht weiter.
    Hier mal ein Quelltext:

    [autoit]


    <a class="vip" href="http://cgi.tiere.de/120739691074?pt564db5924">

    [/autoit]

    Ich möchte die url filtern!

    $aLink = StringRegExp($sSource,'\shref="(.*?)">',3)
    Hier mal meine Fragen was ich nicht verstehe:
    Wieso funktionieren meine regEx Muster nicht?


    1. "vip"\shref="(.*?)">
    2. 'vip?\shref="(.*?)">'
    3. '[vip|"vip"]\shref="(.*?)">'
    4. '=\D+\shref="(.*?)">'
    5. '=\w+\shref="(.*?)">'

    Mache ich da ein Fehler mit den Anführungszeichen?

    Grüße
    Ilse ;)

  • [autoit]


    ;Test-Quellcode. durch deinen Ersetzen ;)
    $Source = '<a class="vip" href="http://cgi.tiere.de/120739691074?pt564db5924">' & @CRLF
    $Source &= '<a class="vip" href="http://www.AutoIt.de">' & @CRLF
    $Source &= '<a class="vip" href="http://www.AutoItScript.com">' & @CRLF
    $Source &= '<a class="vip" href="http://euve23150.vserver.de">' & @CRLF

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

    ;Alles was in href="hier" steht rausfiltern und als Array zurückgeben.
    $Result = StringRegExp($Source, 'href="(.*?)"', 3)

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

    ;Array durchgehen
    For $Counter = 0 to UBound($Result) - 1
    ConsoleWrite(StringFormat("%i -> %s", $Counter, $Result[$Counter]) & @CRLF)
    Next

    [/autoit]

    Hoffe das ist das was Du möchtest ;)
    lg Dominik

  • Hallo Dominik,

    merci für deine Hilfe,
    aber meine FRAGEN sind folgende:

    [autoit]


    $Result = StringRegExp($Source, 'href="(.*?)"', 3)

    [/autoit]


    das ist schon klar...
    $Source = '<a class="vip" href="http://cgi.tiere.de/120739691074?pt564db5924">' & @CRLF
    mal zum nachvollziehen, ich arbeite mich nach LINKS durch:

    Bis hierhin OK

    Spoiler anzeigen
    [autoit]


    $aLink = StringRegExp($sSource,'\shref="(.*?)">'

    [/autoit]


    [spoiler]

    ab hier stimmt die Anzeige nicht mehr
    es sollten 50 Ergebnisse sein
    [spoiler]

    [autoit]


    '"vip"\shref="(.*?)">'

    [/autoit]


    sobald ich nur das schreibe
    "\shref="(.*?)">'
    stimmt es nicht mehr
    D\shref="(.*?)">'
    hier werden noch mehrere Ergebnisse angezeigt!


    Muß ich da was escapen?

    Grüße
    Ilse

  • Hallo Dominik,

    hm...ich glaube irgendwie ist mir die Reihenfolge v. RegEx noch nicht so klar!

    Die Befehle habe ich gelernt:
    \s \w+ \W\d....
    man leitet es so ein

    [autoit]


    $aLink = StringRegExp($sSource,' ',3)

    [/autoit]

    normal macht man es doch mit den Klammern, oder?
    also suche nach

    ["\w\w\w"]\s

    da komm ich noch etwas durcheinander
    also wann eckige Klammern, runde Klammern, keine Klammern?

    ;) Ilse