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
#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
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
MfG black_skorpi