Stringbetween / RegEx

  • Hallo,
    brauch euch mal wieder!
    Ich muß ein String filtern.
    Ich probiere schon ne ganze Weile ohne Erfolg.

    Das ist mein String:

    Spoiler anzeigen


    Das sollte das Ergebnis sein:

    tiere
    tierisch
    Katzen123

    Mit Stringbetween .xxx. komme ich da nicht weiter
    Könnt ihr mir mit RegEx weiterhelfen?

    Hier mal mein Grundgerüst

    [autoit]


    ; das kommt in die Zwischenablage
    ;http://tiere.de
    ;http://www.tierisch.net
    ;http://com.katzen123.com

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

    $sSource= ClipGet()

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

    $aResult = StringRegExp($sSource,' ',3)
    MsgBox(0,"",$aResult )

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

    Wie kann ich genau das herausfiltern?

    ;http://tiere.de
    ;http://www.tierisch.net
    ;http://com.katzen123.com


    Liebe Grüße
    Ilse

    Einmal editiert, zuletzt von Ilse (15. Februar 2012 um 16:08)

  • Das ist bisschen schwierig zu beurteilen... Wenn du wirklich nur den letzten Teil vom Link haben willst, dann wäre das zum Beispiel eine einfache Möglichkeit:

    [autoit]

    $sString = StringFormat("http://tiere.de\nhttp://www.tierisch.net\nhttp://com.katzen123.com\n")
    $aResult = StringRegExp($sString,'(\w+)\.\w+\n', 3)

    [/autoit]


    Aber es gibt eben auch Addressen wie zum Beispiel http://seite.de.vu....
    Je nachdem was du eben willst.

    Zitat

    You just keep on trying 'till you run out of cake. ;)


    [STEAM] Source UDF

    Einmal editiert, zuletzt von K4z (14. Februar 2012 um 16:19)

  • Hier mal ein Vorschlag mit StringSplit:

    [autoit]


    #include<Array.au3>

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

    Dim $aArray[3]
    Dim $ret

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

    $aArray[0] = "http://tiere.de"
    $aArray[1] = "http://www.tierisch.net"
    $aArray[2] = "http://com.katzen123.com"

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

    For $i=0 to 2
    $ret = StringSplit($aArray[$i], '/.')
    ; _ArrayDisplay($ret)
    ConsoleWrite($aArray[$i] & "-->" & $ret[$ret[0]-1] & '.' & $ret[$ret[0]] & @CRLF)
    Next

    [/autoit]


    Funktioniert bei mir prima.

    Gruß - Bastelfritze

    4 Mal editiert, zuletzt von bastelfritze (14. Februar 2012 um 17:50)

    • Offizieller Beitrag

    Oder sowas

    Spoiler anzeigen
    [autoit]

    $HTML = "-Das ist der [erste]Text-" & @CRLF & _
    "-Das ist der 35. Text-" & @CRLF & _
    "-Das ist ein deutscher Text.de-" & @CRLF & _
    "-Das ist ein [erste] französicher Text.fr-"

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

    ;~ $HTML = ClipGet()

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

    $aResult = StringRegExpReplace($HTML,'-(.*?)(\[.*?\])(.*?)-', '$1$3'); ohne oder
    ConsoleWrite($aResult & @LF)

    [/autoit]
  • Hallo,

    sorry, konnte mich gestern nicht mehr melden.

    @ Bastelfritze
    merci für deinen Beitrag.
    Bei anderen Seiten stimmt das leider nicht mehr.
    Die Endungen z.B. .com, .de sollten weg sein. Quasi nur der erste Teil!

    Das war dein Code

    Spoiler anzeigen
    [autoit]


    Dim $aArray[3]
    Dim $ret
    Dim $c

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

    $aArray[0] = "http://tiere.de"
    $aArray[1] = "http://www.tierisch.net/Kategorie/Futter/33242.html"; es gibt auche diese Seiten
    $aArray[2] = "http://com.katzen123.com"
    For $i=0 to 2
    $ret = StringSplit($aArray[$i], '/.')
    $c = UBound($ret)
    ;ConsoleWrite($aArray[$i] & "-->" & $ret[$c-2] & '.' & $ret[$c-1] & @CRLF)
    Msgbox(0,"",$ret[$c-2] & '.' & $ret[$c-1] & @CRLF)
    Next

    [/autoit]

    K4z,
    konnte dein RegEx nicht benutzen. Keine Anzeige...

    Folgendes:

    Ich habe mal das Beispiel erweitert.
    Es ist besser zum probieren:

    [autoit]


    #include <Array.au3>
    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.katzen123.de.net" & @CRLF

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

    $aArray = StringRegExp($sString, 'http://(.*?)\.', 3); hier liegt das RegEx-Problem
    _ArrayDisplay($aArray, 'Übersicht')

    [/autoit]

    So sollte das Ergebnis aussehen!

    Spoiler anzeigen


    "http://tiere.de" = tiere
    "http://www.tierisch.net" = tierisch
    "http://www.hunde.at/Kategorie/Tiere.html" = hunde
    "http://com.katzen123.de.net" & @CRLF = Katzen123


    Ich hoffe Ihr habt da eine Idee?
    Liebe Grüße
    Ilse :(

    @ Xenobiologist
    dein Beitrag ist im falschen Thread gelandet.
    Aber trotzdem Danke...

    • Offizieller Beitrag

    Dafür wirst du nie einen gültigen Regex finden, der alle Kombinationen abdeckt.

    Siehe :

    Spoiler anzeigen
    [autoit]

    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.katzen123.de.net" & @CRLF & _
    "http://katzen123.de.net" & @CRLF

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

    ;~ "http://tiere.de" = tiere
    ;~ "http://www.tierisch.net" = tierisch
    ;~ "http://www.hunde.at/Kategorie/Tiere.html" = hunde
    ;~ "http://com.katzen123.de.net" & @CRLF = Katzen123
    ;~ "http://katzen123.de.net" & @CRLF = Katzen123

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

    $aArray = StringRegExp($sString, '\/\/(\w+)\.|http\:\/\/\w*\.(\w+)\.', 3); hier liegt das RegEx-Problem
    _ArrayDisplay($aArray, 'Übersicht')

    [/autoit]
  • Hallo Xenobiologist,

    bin noch am probieren.
    Mein Code ist etwas kürzer

    [autoit]


    #include <Array.au3>

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

    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.katzen123.de.net" & @CRLF & _
    "http://katzen123.de.net" & @CRLF

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

    $aArray = StringRegExp($sString, '\.(\w+)\.', 3)
    _ArrayDisplay($aArray, 'Übersicht')

    [/autoit]

    Das mit dem negitieren hab ich noch nicht kapiert.
    Mal ne Idee

    [autoit]


    #include <Array.au3>

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

    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.katzen123.de.net" & @CRLF & _
    "http://de.futter.de.net" & @CRLF & _
    "http://katzen123.de.net" & @CRLF

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

    $aArray = StringRegExp($sString, '//\w{1,3}\.(.*?)\.', 3); alle //www. oder //de. oder //com.
    _ArrayDisplay($aArray, 'Übersicht')

    [/autoit]

    so könnte man doch den ersten Teil filtern
    um im zweiten Teil irgendwie all die andern!

    Ich meine so könnte man zuerst alle //www. oder //de. auswerten
    und dann das Ergebnis umdrehen...wenn man wüßte wie's geht!

    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (15. Februar 2012 um 14:12)

  • Hallo,

    ich hab da was,
    halt mit meinem Problem zeige nicht //

    [autoit]


    #include <Array.au3>

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

    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.kaninchen123.de.net" & @CRLF & _
    "http://de.futter.de.net" & @CRLF & _
    "http://katzen123.de.net" & @CRLF

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

    $aArray = StringRegExp($sString, '//\w{1,3}\.(.*?)\.|//\w+', 3); wie kann ich diese // ausblenden?????
    _ArrayDisplay($aArray, 'Übersicht')

    [/autoit]


    ;) Ilse

  • Hallo,

    ne, die habe ich als Beispiel eingetragen.

    Aber es klappt doch.(Man sollte nicht so schnell aufgeben)
    Eine Array-Frage
    Wie kann ich im Array alles schön untereinander anzeigen

    [autoit]


    #include <Array.au3>

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

    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.kaninchen123.de.net" & @CRLF & _
    "http://de.futter.de.net" & @CRLF & _
    "http://katzen123.de.net" & @CRLF

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

    $aArray = StringRegExp($sString, '//\w{1,3}\.(.*?)\.|//(\w+)', 3)

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

    _ArrayDisplay($aArray, 'Übersicht')

    [/autoit]

    Arrays waren noch nie meine Freunde

    ;) Ilse

  • Kannst dir ja mal folgendes anschauen:

    Spoiler anzeigen

    #include

    $sString = _
    "http://tiere.de" & @CRLF & _
    "http://www.tierisch.net" & @CRLF & _
    "http://www.hunde.at/Kategorie/Tiere.html" & @CRLF & _
    "http://com.kaninchen123.de.net" & @CRLF & _
    "http://de.futter.de.net" & @CRLF & _
    "http://katzen123.de.net" & @CRLF


    $bString = $sString
    $bString = StringReplace($bString, "http://", "")
    $bString = StringReplace($bString, "www.", "")
    $bString = StringReplace($bString, "com.", "")
    $bString = StringRegExpReplace($bString, "/(.*)", "")
    $bString = StringRegExpReplace($bString, "\s(de\.)", "")
    $bString = StringRegExpReplace($bString, "\.\w{3}", "")
    $bString = StringRegExpReplace($bString, "\.\w{2}", "")


    $aArray = StringRegExp($bString, '\w.+?\s', 3)
    _ArrayDisplay($aArray, 'Übersicht')

    Ist zwar ziemlich primitiv aufgebaut, fängt aber alle deiner Beispiele ab.

    Einmal editiert, zuletzt von oispnr (15. Februar 2012 um 15:55)

  • @Alle

    im Prinzip genau so wie oispnr
    Nur mit Stringreplace müßte jedes Ergebnis
    erneut bearbeitet werden. Und das wollte ich nur mit RegEx lösen.
    Also im Prinzip kommen da mehrere Seiten hinzu (http...)
    RegEx sollte soviel wie möglich ohne Handarbeit lösen.

    Sage mal herzlichen Dank an alle Helfer

    Liebe Grüße
    Ilse

    (Schliesse mal den Thread)
    und probiere mit den Seiten

    Liebe Grüße
    Ilse ;)