Ärger mit StringRegExpReplace - oder andere/bessere Idee?

  • Hallo zusammen.

    ich habe so meine Probleme mit RegEx's und hoffe, ihr könnt hier helfen.

    Ich möchte einen Text analysieren und ggf. Ersetztungen durchführen.
    Diesen Text bekomme ich als String. Darin ist möglicherweise irgendwo folgender Text enthalten:

    Code
    HYPERLINK "https://www.noch-eine-domain.com/xyz/bla.html"weitere Informationen.
    oder
    HYPERLINK "https://www.noch-eine-domain.com/xyz/"hier mehr

    Davon soll aber nur

    Code
    https://www.noch-eine-domain.com/xyz/bla.html weitere Informationen.
    bzw.
    https://www.noch-eine-domain.com/xyz/ hier mehr

    erhalten bleiben. Spricht, das HYPERLINK " am Anfang und das " nach der URL muss/soll raus.

    Ich würde das ganze nun mit StringRegExpReplace machen wollen aber ich bekomme das einfach nicht hin.
    Noch was... Es ist durchaus möglich, dass vor dem HYPERLINK " und nach der URL weiterer Text im selben String kommt.
    Dieser soll erhalten bleiben. Genau so wie weitere " in dem Text.
    Daher fällt StringTrimRight und StringTrimLeft sowie StringReplace ja irgendwie aus, oder?

    Könnt ihr helfen? Oder hat jemand eine bessere Idee? Ich verzweifel irgendwie... ?(

    Vielen Dank im Voraus. Gruß,
    Matthias

    "Ausdauer wird früher oder später belohnt – meistens aber später" (Wilhelm Busch)

    2 Mal editiert, zuletzt von matthias.s (11. April 2013 um 15:06)

  • Hallo matthias.s,

    vlt so:

    [autoit]

    $string = 'HYPERLINK "https://www.noch-eine-domain.com/xyz/bla.html"weitere Informationen.'

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

    $output = StringRegExpReplace(StringRegExpReplace($string, 'HYPERLINK "', ""), '"', "")

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

    MsgBox(0, "Ergebnis:", $output)

    [/autoit]


    lg Inferior

    3 Mal editiert, zuletzt von Inferior (11. April 2013 um 13:58)

  • Hallo Inferior

    Danke erstmal für die schnelle Antwort. Leider löst sie mein Problem nicht ganz.

    Das Problem ist, dass der Link nicht alleine im Text/String steht.
    Davor und danach habe ich u.U. weiteren Text der ebenfalls die Zeichen " oder ' oder was auch immer enthalten kann.

    Deine Lösung ist gut, hat aber zur Folge, dass die anderen " in meinem Text ebenfalls gelöscht werden. Die müssen aber bleiben. Daher auch mit StringRegExpReplace (als eine Art Mustervergleich). Sonst hätte ich das mit StringReplace gemacht. Siehe hier:

    [autoit]

    $string = 'rtzrtz trzrtz "sedrtae rtwertert" HYPERLINK "https://www.noch-eine-domain.com/xyz/bla.html"weitere Informationen. werwerwerganz'

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

    $output = StringRegExpReplace(StringRegExpReplace($string, 'HYPERLINK "', ""), '"', " ")

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

    MsgBox(0, "Ergebnis:", $output)

    [/autoit]

    Ich hasse Regular Expressions :wacko:

    Gruß,
    Matt

    "Ausdauer wird früher oder später belohnt – meistens aber später" (Wilhelm Busch)

  • Spoiler anzeigen

    oder noch einfacher :

    [autoit]

    $sText = 'HYPERLINK "https://www.noch-eine-domain.com/xyz/bla.html"weitere Informationen.'
    $sNewText = StringRegExpReplace($sText, 'HYPERLINK "(.+?)"(.+)', "$1 $2")
    MsgBox(0, "Ergebnis:", $sNewText)

    [/autoit]


    lg


    Edit : dein Text kam, wo ich schon geschrieben habe ;)

    Spoiler anzeigen
    [autoit]

    $sText = 'rtzrtz trzrtz "sedrtae rtwertert" HYPERLINK "https://www.noch-eine-domain.com/xyz/bla.html"weitere Informationen. werwerwerganz'
    $sNewText = StringRegExpReplace($sText, '(.+) HYPERLINK "(.+?)"(.+)', "$1 $2 $3")
    ConsoleWrite($sNewText & @CRLF)
    MsgBox(0, "Ergebnis:", $sNewText)

    [/autoit]


    lg

    Einmal editiert, zuletzt von Alcros (11. April 2013 um 14:56)