REGEX - Zeilenende bei bestimmtem Wort ermitteln?
Hallo zusammen,
ich möchte via REGEX das Zeilenende markieren, wenn ein bestimmtes Wort vorkommt.
Beispiel:
Im nachfolgenden Text soll nur das Zeilenende (also $) markiert werden, wenn "Germany" im Text steht. Das ist nur ein Beispiel, in der Praxis habe ich hier tausende Zeilen.
Letztendlich möchte ich an die entsprechenden Zeilen noch etwas anhängen, also das Zeilenende ersetzen.
Ich möchte nicht die ganze Zeile auswählen, das kann ich schon. :-) Nur das letzte Zeichen.
Hier wurde die ganze Zeile markiert und würde beim Ersetzen komplett überschrieben werden.
Ich möchte stattdessen nur das Zeilenende markiert haben. So:
Das Beispiel hier ist mit Notepad++ dargestellt. Ich nutze aber eigentlich ein sehr spezielles Tool zum Bearbeiten von EDI-Mappings, was aber niemandem bekannt sein dürfte. Daher der Bezug zu Notepad++.
Nein, ich kann keine anderen Tools zum Suchen nutzen.
Würde mich über Hilfe freuen.
Liebe Grüße
2 Antworten
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Geht entweder mit einem lookbehind variabler Länge, welcher soweit ich weiss nur von .NET/C# Regex unterstützt wird bzw. in Java mit definierter max length. NP++ kann das nicht, unterstützt aber PCRE (verwendet imho Boost Regex).
Hier kann man K als lookbehind Alternative verwenden. Siehe Demo auf Regex101.
Germany.*\K$
Es matcht das gesamte Pattern und dort, wo \K steht resettet die Ausgabe.
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Wie wäre es mit
.*Germany.*($)
oder so ähnliche? Was meinst du mit "markieren"? Und welche Programmiersprachen bzw. welche RegEx nutzt du?
![](https://images.gutefrage.net/media/default/user/12_nmmslarge.png?v=1551279448000)
Superstark! Funktioniert hervorragend! Vielen Dank dafür!
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Ah, da kommt mir gerade: Du solltest die Frage ergänzt und nicht bearbeitet haben. Bei der ergänzung sollte das eigentlich nicht dauern wenn ich mich richtig erinnere.
![](https://images.gutefrage.net/media/default/user/5_nmmslarge.png?v=1438863662000)
Ah ok. Du kannst mittels Klammern Gruppen definieren und mittel $1, $2, $3, ... im Replace dann diese Gruppen einsetzen.
Beispielsweise:
(.*Germany.*)
und
$1
Markiert die Zeilen, die "Germany" enthalten und lässt sie beim ersetzen unverändert.
Der Index ergibt sich daraus, die wievielte Klammer die erste der Klammern ist.
Beispiel:
((.*)(Germany)(.*))
$1 ist der ganze Term. $2 der teil vor "Germany", $3 "Germany", $4 der Teil hinter "Germany"
Danke für deine schnelle Rückmeldung. Leider kann ich hier in der Antwort keine Bilder einfügen, daher habe ich die ursprüngliche Frage nochmal angepasst. Das wird gerade geprüft.