snape90
Goto Top

Regex: Ersetzen durch Ausdrücke aus Liste

Hallo,

ist es mit Regex möglich eine Liste an Suchbegriffen, z. B.

(a|b|c)

durch eine Liste aus "Ersetzungsbegriffen" zu ersetzen, z. B.

(1|2|3)

so dass der erste Suchbegriff durch den ersten "Ersetzungsbegriff", nicht aber durch den 2. oder 3. ersetzt wird? In meinem Fall soll jedes gefundenen kleine a durch eine 1, ein b durch 2 und ein c durch 3 ersetzt werden. In dem Fall wäre es natürlich kein Problem einfach 3 Suchen zu starten, wenn es aber deutlich mehr werden wäre das interessant. Frage ist ob es dieses Feature überhaupt gibt.

Mahlzeit,
snape

Content-ID: 8541966295

Url: https://administrator.de/forum/regex-ersetzen-durch-ausdruecke-aus-liste-8541966295.html

Ausgedruckt am: 26.12.2024 um 23:12 Uhr

7907292512
Lösung 7907292512 31.08.2023 aktualisiert um 10:51:00 Uhr
Goto Top
Moin
von Regex selbst nativ nicht denn Regex ist ja erst mal nur eine Ausdruckssprache , aber es werden von den Programmier und Scriptsprachen entsprechende Möglichkeiten angeboten die das ermöglichen, hier etwa mit PowerShell
# Text
$text = "abbacaabbc"  
# Übersetzungs-Hashtable
$translation = @{
    'a' = '1'  
    'b' = '2'  
    'c' = '3'  
}
# Regex-Pattern aus Keys der Hashtable zusammenbauen
$pattern = ($translation.Keys | %{[regex]::escape($_)}) -join '|'  
# Ersetzungsvorgang mit einem Regex Replace-Iterator durchführen
$result = [regex]::replace($text,$pattern,{
    param($m)
    $translation[$m.Value]
})
# Ausgabe des Ergebnisses
$result
https://tio.run/##VY5BC4MwDIXv/RVFOrTghG03YbD77ruIjFjC5qha2soc6m/v2oljyy ...

Bei anderen Sprachen in ähnlicher Weise umsetzbar. Grundlage ist dann wie oben meist eine Hashtable oder ein assoziatives Array als Übersetzungstabelle für die Begriffe .

Gruß sid
Snape90
Snape90 31.08.2023 um 10:50:38 Uhr
Goto Top
OK, ich bräuchte das innerhalb der S&R-Funktion eines Editors. Danke für die Info.