Alles was in Klammern ist löschen...

  • Hallo, ich bastel mir gerade ein Kleines Programm, was aus der Internetseite https://autoit.de/www.kino.de die Wichtigsten Infos rausließ.

    Nun es Stimmt Soweit eigentlich, nur ist es blöd wenn in der Beschreibung die Links zu den Schauspielern auftauchen

    diese Links sind immer in Klammern also zb

    Code
    Ein von Menschenhand entwickeltes Virus löscht die Erdbevölkerung aus. Fieberhaft sucht der exzellente Wissenschaftler Robert Neville (<a href="/mitwirk.php4?nr=78854&amp;channel=kino">Will Smith</a>) nach einem Gegenmittel, kann aber das Massensterben nicht verhindern. Er selbst ist gegen die Epidemie immun und hat als einziger in den Ruinen New York Citys überlebt, ist aber allein: Lichtscheue Mutanten lauern ihm auf und warten nur auf einen unachtsamen Moment, während Neville verzweifelt weiter nach einer Heilung forscht.

    wie bekomme ich alles was in Klammern ist raus?

    Ein Extremeres Beispiel ist hier zu finden
    http://www.kino.de/kinofilm/ich-w…hat/107315.html

    Wie mache ich es dort mit der Beschreibung, da diese dort übere mehre Zeilen geht?

    Auslesen mach ich so

    [autoit]

    while 1
    $INFO=FileReadLine($OSource)
    if @error =-1 Then
    ExitLoop
    endif
    Global $str = $INFO

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

    ;Hier den Titel
    if StringInStr($INFO,'Infos zum Film | KINO.DE</title>') Then
    $INFO=StringTrimLeft($INFO,7)
    $INFO=StringTrimRight($INFO,35)
    $TITEL=$INFO
    MsgBox(0,"",$TITEL)
    EndIf

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

    ;Hier holt es den Inhalt <meta name="Description" content="
    $aINHALT = _StringBetween($str, 'target="_blank">Website</a></td></tr></table><span style="line-height: 15px;">', '<br />')
    ;_ArrayDisplay($aGenre, 'Users')

    [/autoit]

    Ich hoffe mir kann jemand helfen :)
    ich komme jetzt perdu nicht auf die Lösung

    • Offizieller Beitrag

    Das geht ganz einfach mit StringRegExpReplace()

    [autoit]

    $str = 'Ein von Menschenhand entwickeltes Virus löscht die Erdbevölkerung aus. Fieberhaft sucht der exzellente Wissenschaftler Robert Neville (<a href="/mitwirk.php4?nr=78854&amp;channel=kino">Will Smith</a>) nach einem Gegenmittel, '
    $str = StringRegExpReplace($str, '\(.*\)', '')

    [/autoit]
  • leider war ich so voreilig, wie mache ich es wenn mehere Klammern drinnen sind?

    Code
    Als ein Aufklärungsschiff der Predatoren in einem entlegenen Kaff im Gebirgsstaat Colorado abstürzt, steht es schlecht um die Bewohner der kleinen Gemeinde. Sheriff Morales (<a href="/mitwirk.php4?nr=81477&amp;channel=kino&amp;PHPSESSID=213a7e60c3cf89359b5a2a1d059c51b2">John Ortiz</a>) muss mit ansehen, wie die an Bord gefangenen Aliens entkommen und alle Predatoren bis auf einen töten. Der schreitet unverdrossen zur Tat, die Brut auszulöschen, bekommt es aber auch mit einem Pred-Alien-Hybriden zu tun. Im Duell der mythischen Kreaturen bangt Dallas (<a href="/mitwirk.php4?nr=211317&amp;channel=kino&amp;PHPSESSID=213a7e60c3cf89359b5a2a1d059c51b2">Steven Pasquale</a>) um sein Leben

    das was ich rausbekomme ist leider zu kurz

    Code
    Als ein Aufklärungsschiff der Predatoren in einem entlegenen Kaff im Gebirgsstaat Colorado abstürzt, steht es schlecht um die Bewohner der kleinen Gemeinde. Sheriff Morales  um sein Leben.

    danke

    Einmal editiert, zuletzt von Pinguin (5. Januar 2008 um 01:58)

    • Offizieller Beitrag

    Auch das ist kein Problem mit der Einbindung von StringRegExp in die Funktion _StringBetween():

    [autoit]

    #include <String.au3>
    $str = 'Als ein Aufklärungsschiff der Predatoren in einem entlegenen Kaff im Gebirgsstaat Colorado abstürzt, ' & _
    'steht es schlecht um die Bewohner der kleinen Gemeinde. Sheriff Morales (<a href="/mitwirk.php4?nr=81477&amp' & _
    ';channel=kino&amp;PHPSESSID=213a7e60c3cf89359b5a2a1d059c51b2">John Ortiz</a>) muss mit ansehen, wie die an ' & _
    'Bord gefangenen Aliens entkommen und alle Predatoren bis auf einen töten. Der schreitet unverdrossen zur Tat, ' & _
    'die Brut auszulöschen, bekommt es aber auch mit einem Pred-Alien-Hybriden zu tun. Im Duell der mythischen ' & _
    'Kreaturen bangt Dallas (<a href="/mitwirk.php4?nr=211317&amp;channel=kino&amp;PHPSESSID=213a7e60c3cf89359b5a2a1d059c51b2"' & _
    '>Steven Pasquale</a>) um sein Leben'
    $Array = _StringBetween($str, '\(', '\)', -1, 1)
    For $i = 0 To UBound($Array) -1
    $str = StringReplace($str, ' (' & $Array[$i] & ')', '')
    Next
    MsgBox(0, '', $str)

    [/autoit]
  • Danke dir das läuft rund, nur leider blicke ich jetzt nimmer durch ;(

    _Stringbetween ist klar der sucht Praktisch die klammern mit den Links.

    Die nächste Zeile ist dafür da das er weitersucht auch nachdem er was gefunden hat? und die 3te Entfernt die klammern.

    Wenn es dir nichts ausmacht, könntest mir mal bitte die 2Zeile und die Verwendung dieser in der 3ten Erläutern ^^

    Danke die in jeden Falle

    • Offizieller Beitrag

    Die Ergebnisse der Suche (alles was zwischen öffnender und schließender Klammer ist, aber nicht die Klammern selber, werden in einem Array gespeichert.

    [autoit]

    $Array = _StringBetween($str, '\(', '\)', -1, 1)

    [/autoit]


    Dieses Array wird jetzt Eintrag für Eintrag durchlaufen

    [autoit]

    For $i = 0 To UBound($Array) -1

    [/autoit]


    Jedes Element des Arrays ist ein gefundener Ausdruck zwischen Klammern. Dieser Ausdruck wird jetzt durch einen Leerstring ersetzt.
    Dazu werden zum gefundenen Ausdruck jetzt wieder die Klammern angefügt, damit diese mit ersetzt werden.
    Vor der öffnenden Klammer wird außerdem ein Lerzeichen mit angefügt (und somit ersetzt), weil sonst 2 Leerzeichen nebeneinander stehen würden, eines das vor und eines das nach dem Klammerausdruck im Text steht.

    [autoit]

    $str = StringReplace($str, ' (' & $Array[$i] & ')', '')
    Next

    [/autoit]
  • Mehrere Klammern kann man auch über RegExpReplace "vernichten".
    Dazu muss das Pattern nur lediglich so angepasst werden:

    [autoit]


    StringRegExpReplace($str, '\(.*?\)', '')

    [/autoit]

    Das Fragezeichen hinter dem Multiplikator * bedeutet das statt wie normal nach der größten Übereinstimmung die kleinsten gesucht werden.