Spass mit Regex

Die Aufgabenstellung war, Zeilen zu finden, die eine geöffnete Klammer enthalten, aber danach keine schliessende.

Die Lösung:

(?m)^.*?\([^\)]*?$

Erklärung

  • (?m) bewirkt, dass über das Zeilenende hinaus gesucht wird
  • ^ Zeilenanfang
  • .*? eine beliebige Zeichengruppe, aber durch das Fragezeichen non greedy
  • \( die geöffnete Klammer (muss mit \ escaped werden)
  • ([^\)]*?$ bis zum Zeilenende $ darf jedes beliebige Zeichen beliebig oft vorkommen *? ausser die geschlossene Klammer [^\)]

Im folgenden Text erfüllt die Zeile „Was (ist ) mit so was(?“ als erstes die Bedingung.

Hallo
Das hier ist eine Zeile die (303) enthält
Was (ist ) mit so was(?
und hier) geht es (noch weiter
Der hier nicht)
der (

Der angegebene Regex-Ausdruck findet allerdings nur die erste Zeile, die diese Bedingung erfüllt.

Quellen:

Apostroph ersetzen mit Notepad++

Und gleich noch eine Knacknuss: Für einen Datenimport musste ich die Apostroph verdoppeln, aber natürlich nur jene, die nicht bereits doppelt daherkamen.

Die Daten sahen ungefähr so aus:

„9659“,“1718″,“Gewinde-Adapter 45′ Bogen“,“06MUX06MU45″,““,“1″,“Stk.“,“52″
„9660“,“1718″,“Gewinde-Adapter 37““,“06NUX06MT“,““,“1″,“Stk.“,“9.7″

Als Tool dafür habe ich Notepad++ in der Version 6 gewählt.

Die Aufgabe lässt sich mit folgenden Regex-Ausdrücken lösen

Suche: ([^‘])'([^‘])

Ersetzen: \1“\2

Gesucht werden alle Apostroph, die weder vorn noch hinten ein weiteres Apostroph haben. Mit den Klammern werden zwei Gruppen erzeugt, auf die dann beim Ersetzen wieder Bezug genommen wird.

Comments are closed.