Regex: Ersetzen durch Ausdrücke aus Liste
Hallo,
ist es mit Regex möglich eine Liste an Suchbegriffen, z. B.
durch eine Liste aus "Ersetzungsbegriffen" zu ersetzen, z. B.
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8541966295
Url: https://administrator.de/contentid/8541966295
Ausgedruckt am: 24.11.2024 um 05:11 Uhr
2 Kommentare
Neuester Kommentar
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
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
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
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