StringRegExp <- wie filtere ich meine zeichenkette

  • hiho leute .... ich habe folgendes:


    12.123.123.2(guter server)|131.2.32.2|https://autoit.de/www.test.de|blavla.de|ee.asdfasd.eu(hallo)|....

    gefiltert bekomme ich dank der trennzeichen bislang immer alles was zwischen den | steht.
    ich möchte allerdings immer nur den server oder die ip an einen string übergeben.
    also im prinzip muss das was in klammern steht inklusive der klammern raus, wenn was da steht,
    wenn nicht, dann sollte der inhalt trotzdem übergeben werden.

    wer kann helfen ?

    Einmal editiert, zuletzt von WhiteLion (3. Juni 2010 um 22:00)

  • Meinst Du so:

    [autoit]


    #include
    $string = '12.123.123.2(guter server)|131.2.32.2|http://www.test.de|blavla.de|ee.asdfasd.eu(hallo)'
    $string = StringRegExpReplace($string, '\(.+?\)', '')
    $array = StringSplit($string, '|')
    _ArrayDisplay($array)

    [/autoit]


    moin..... evtl. kannst du mir nochmal behilflich sein, wenn ich jetzt jeden dieser gefilterten server/IPs in eine ini datei schreiben will die dann nur schlicht und einfach so aussieht, dass jeder server/IP in einer extra zeile steht... (ohne steuerzeichen oder so) z.B.

    12.123.123.2
    https://autoit.de/www.test.de
    131.2.32.2
    ...usw

  • Spoiler anzeigen
    [autoit]

    $string = '12.123.123.2(guter server)|131.2.32.2|http://www.test.de|blavla.de|ee.asdfasd.eu(hallo)'
    $string = StringRegExpReplace($string, '\(.+?\)', '')
    $array = StringSplit($string, '|')

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

    Local $buffer = ''
    for $i = 1 to UBound($array)-1
    $buffer &= $array[$i] & @CRLF
    Next
    FileWrite(@ScriptDir & '\server.ini', $buffer)

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include <array.au3>
    $string = '12.123.123.2(guter server)|131.2.32.2|http://www.test.de|blavla.de|ee.asdfasd.eu(hallo)'
    $string = StringRegExpReplace($string, '\(.+?\)', '')
    $array = StringSplit($string, '|')
    _ArrayDisplay($array)

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

    $hfile = FileOpen(@ScriptDir & "\log.txt", 1)
    For $i = 1 To $array[0]
    FileWrite($hfile, $array[$i] & @CRLF)
    Next
    FileClose($hfile)

    [/autoit]

    edit: zu langsam, noch nicht ganz ausgeschlafen :)

  • Wieso nicht einfach so? Ode rhab ich was falsch verstanden:

    Verschiedene Keys ohne |
    [autoit]


    #include <Array.au3>
    $string = '12.123.123.2(guter server)|131.2.32.2|http://www.test.de|blavla.de|ee.asdfasd.eu(hallo)'
    $string = StringRegExpReplace($string, '\(.+?\)', '')
    $array = StringSplit($string, '|')
    IniWrite(@ScriptDir & "\test.ini","server","null",$array[0])
    IniWrite(@ScriptDir & "\test.ini","server","erste",$array[1])
    IniWrite(@ScriptDir & "\test.ini","server","zweite",$array[2])
    IniWrite(@ScriptDir & "\test.ini","server","dritte",$array[3])
    IniWrite(@ScriptDir & "\test.ini","server","vierte",$array[4])
    IniWrite(@ScriptDir & "\test.ini","server","fünfte",$array[5])
    _ArrayDisplay($array)
    MsgBox(0,"","alle arrays wurden in der test.ini in dem scriptdir gespeichert!")

    [/autoit]

    oder meinst du das ALLE arrays in einer zeile stehen? Dann: (mit |)

    Mit | in eine Zeile
    [autoit]

    #include <Array.au3>
    $string = '12.123.123.2(guter server)|131.2.32.2|http://www.test.de|blavla.de|ee.asdfasd.eu(hallo)'
    $string = StringRegExpReplace($string, '\(.+?\)', '')
    IniWrite(@ScriptDir & "\test.ini","server","alle",$string)
    MsgBox(0,"","alle arrays wurden in der test.ini in dem scriptdir gespeichert!")

    [/autoit]

    Ohne |:

    Ohne | in eine Zeile

    [autoit]#include <Array.au3>
    $string = '12.123.123.2(guter server)|131.2.32.2|https://autoit.de/www.test.de|blavla.de|ee.asdfasd.eu(hallo)'
    $string = StringRegExpReplace($string, '\(.+?\)', '')
    $string = StringReplace($string,"|","")
    IniWrite(@ScriptDir & "\test.ini","server","alle",$string)
    MsgBox(0,"","alle arrays wurden in der test.ini in dem scriptdir gespeichert!")
    [/auoit]

    hoffe habe es richtig verstanden..
    mfg
    buraksz

  • super... gleich so viele lösungswege ! :D danke dafür!
    kleines problem noch, wenn ich versuche das array zu bearbeiten; quasi leere einträge und welche mit dem string "brackett" rauszufiltern, klappt das nicht ganz ... der zweite filter schlägt fehl.... ich weiss nicht was ich falsch mache.

    [autoit]

    Func _listchange()
    Global $list123, $hfile, $array2[1], $searcharry, $y2, $z2, $i2, $buffer
    $list123 = Iniread("serverlist.ini" , "serverlist", "servers","")
    $list123 = StringRegExpReplace($list123, '\(.+?\)', '')
    $array2 = StringSplit($list123, '|')
    ; _ArrayDisplay($array2)
    Do
    for $y2=0 to $array2[1]
    $searcharry = _ArraySearch($array2,"")
    _ArrayDelete($array2,$searcharry)
    Next
    Until $searcharry=-1

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

    ;das hier geht nicht:
    ; Do
    ; for $z2=0 to $array2[1]
    ; $searcharry2 = _ArraySearch($array2,"bra")
    ; _ArrayDelete($array2,$searcharry2)
    ; Next
    ; Until $searcharry2=-1

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

    _ArrayDisplay($array2)
    Local $buffer = ''
    for $i2 = 0 to UBound($array2)-1
    $buffer &= $array2[$i2] & @CRLF
    Next
    FileWrite(@ScriptDir & 'temp.txt', $buffer)
    EndFunc

    [/autoit]

    3 Mal editiert, zuletzt von WhiteLion (3. Juni 2010 um 21:59)