String filtern

  • Hallo,

    Ich möchte bei einem String wie deisen
    abcdefghijk78lmn1234opqrstuvwxyz
    die 4-stelligen Zahlen einklammern. Also so:
    abcdefghijk78lmn(1234)opqrstuvwxyz

    Dabei kann der String variieren

    Wie kann ich das lösen?
    Danke und LG

    Einmal editiert, zuletzt von palmers7 (1. Februar 2013 um 14:00)

  • $aRes = StringRegExp("abcdefghijk78lmn1234opqrstuvwxyz",'/d{4}', 3)

    Gibt als return 1 zurück und @error ist auch 1
    => Array ist ungültig. Keine Übereinstimmungen.

    Was mache ich falsch?

  • Hi,
    das pattern '/d{4}' würde nur bei einem Teststring wie diesem z.B. :
    .../dddd...
    treffen. Du meintest (sehr) wahrscheinlich '\d' um numerische Literale zu filtern:

    [autoit]

    ;Mein Ansatz mit StringRegExpReplace
    $sBefore = "abcdefghijk78lmn1234opqrstuvwxyz"
    $sAfter = StringRegExpReplace($sBefore,"([^\d]+)(\d{4})([^\d]+)","$1($2)$3")
    MsgBox(0,"Result",$sBefore&@CRLF&"=>"&@CRLF&$sAfter)

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

    ; Dein Ansatz mit der Ersetzung von '/d{4}' durch '\d{4}'
    $aRes = StringRegExp($sBefore,"\d{4}", 3)
    If IsArray($aRes) And @error = 0 Then MsgBox(0,"StringRegExp - Ausgabe",$aRes[0])

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!