Hallo zusammen,
ich habe zum Ersetzen von Werten in *.csv-Dateien ein Regex, welches auch den richtigen Treffer findet, s. ArrayDisplay().
Wenn ich jetzt aber diesen Treffer ersetzen möchte, wird nicht nur der Treffer, sondern auch die "non capturing groups" ersetzt?!
Was muss ich ändern, damit RegexReplace() nur den gematchten Teil ersetzt?
Spoiler anzeigen
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$txt = @crlf
For $i = 1 To 5
For $r = 1 To 20
$txt &= $i & $r&"|"
Next
$txt &= @CRLF
Next
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $txt = ' & $txt & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
$pattern = '(?m)34(?:[^\|]*\|){12}((?:[^\|]*\|{1}){3})' ;12 spalten nach dem treffer die drei folgenden spalten
$res = StringRegExp($txt, $pattern,3)
_ArrayDisplay($res) ;sollen ersetzt werden durch
$res = StringRegExpReplace($txt, $pattern, "xxx|yyy|zzz|",1)
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $res = ' & $res & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
Es sollen die "316|317|318|" durch "xxx|yyy|zzz|" ersetzt werden.
//EDIT, mit $res = StringRegExp($txt, $pattern,2) sehe ich im ArrayDisplay() den "falschen" Treffer im ersten Index, der richtige ist im zweiten...
Wie bekomme ich es hin, dass der "richtige" String ersetzt wird?