• Hi Com,

    weil ich mich momentan mit regulären Ausdrücken beschäftige und ich im RegexBuddy 3 die Option "Split" gesehen habe, habe ich einfach mal die Funktion "StringRegExpSplit" erstellt. Viel Freude damit. Beispiel ist dabei.

    StringRexExpSplit
    [autoit]

    #include <Array.au3>
    $sText = 'Splitte nach einem Suchmuster.'
    $hTime = TimerInit()
    $aRegExpSplit = StringRegExpSplit($sText, '[aeiou]', 1)
    _ArrayDisplay($aRegExpSplit, TimerDiff($hTime))
    ; #FUNCTION# =================================================================
    ; Name...........: StringRegExpSplit
    ; Description ...: Splits a string with regular expressions.
    ; Syntax.........: StringRegExpSplit($s_string, $s_pattern[, $i_flag = 1])
    ; Parameters ....: $s_string - String to split
    ; $s_pattern - Delimiters in regular expression
    ; $i_flag - [optional]
    ; |0 - Includes delimiters into results
    ; |1 - Results without delimiters
    ; |2 - 0-based array
    ; Return values .: Success - Array with the splittet source
    ; Failure - -1, sets @error
    ; |1 - $s_string has no content
    ; |2 - $i_flag wrong flag
    ; |3 - no results StringSplit
    ; Author ........: black_skorpi (@autoit.de)
    ; Example .......: Yes
    ; ============================================================================
    Func StringRegExpSplit($s_string, $s_pattern, $i_flag = 1)
    If $s_string = '' Then Return SetError(1, 0, -1)
    If ($i_flag < 0 Or $i_flag > 2) Then Return SetError(2, 0, -1)
    StringRegExpReplace($s_string, $s_pattern, $s_pattern)
    If Not @extended Then Return SetError(3, 0, -1)
    If ($i_flag = 0) Then $s_pattern &= ')'
    If ($i_flag = 1 Or $i_flag = 2) Then $s_pattern = ')' & $s_pattern
    Global $i_splits = @extended, $a_results = StringRegExp($s_string, '([\w\s\.]*?' & $s_pattern & '([\w\s\.]*)', 3), _
    $a_return[$i_splits + 1] = [$a_results[0]]
    Do
    $a_results = StringRegExp($a_results[1], '([\w\s\.]*?'& $s_pattern & '([\w\s\.]*)', 3)
    $a_return[UBound($a_return) - $i_splits] = $a_results[0]
    $i_splits -= 1
    If $i_splits = 1 Then $a_return[UBound($a_return) - 1] = $a_results[1]
    Until $i_splits = 1
    If ($i_flag = 0 Or $i_flag = 1) Then
    Dim $a_results[UBound($a_return) + 1] = [UBound($a_return)] ; Recycling :rofl:
    For $i = 0 To $a_results[0] - 1
    $a_results[$i + 1] = $a_return[$i]
    Next
    Return $a_results
    EndIf
    Return $a_return
    EndFunc ;==>StringRegExpSplit

    [/autoit]

    MfG black_skorpi