User Tools

Site Tools


vba:tutorials:regexpreplacewithfunction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
vba:tutorials:regexpreplacewithfunction [26.11.2014 15:57:47]
yaslaw
vba:tutorials:regexpreplacewithfunction [19.10.2015 15:59:17] (current)
yaslaw
Line 1: Line 1:
 ====== [VBA][Code Pattern] RegExp Replace mit Funktion ====== ====== [VBA][Code Pattern] RegExp Replace mit Funktion ======
-Naja, der Titel ist ev. irreführend. Mir kahm aber kein besserer in den Sinn. +//Ein Tutorial zum Thema, wie man eine %%RegExp Replace%% in einer Schleife anwenden kann.// 
-\\ Es geht um folgendes: Mittels eines %%RegExp%% ermittle ich Teilstrings. Diese sollen über eine Funktion verändert werden und dann im String den Originalteilstring ersetzen.+ 
 +Naja, der Titel ist ev. irreführend. Mir kahm aber kein besserer in den Sinn. Es geht um folgendes: Mittels eines %%RegExp%% ermittle ich Teilstrings. Diese sollen über eine Funktion verändert werden und dann im String den Originalteilstring ersetzen.
  
 ===== Beispielsaufgabe ===== ===== Beispielsaufgabe =====
Line 16: Line 17:
 > Für die Ausgabe der Resultate verwendete ich die Funktion [[vba:​functions:​print_r:​index]] > Für die Ausgabe der Resultate verwendete ich die Funktion [[vba:​functions:​print_r:​index]]
 ==== Konzept ==== ==== Konzept ====
-Ich erstelle ein RegExp-Objekt,​ das genau nur ein Treffer zurückgibt (global=off). Mit einer Schleife teste ich auf den String, ob RegExp noch einen Treffer hat. +Ich erstelle ein %%RegExp%%-Objekt, das genau nur ein Treffer zurückgibt (global=off). Mit einer Schleife teste ich auf den String, ob %%RegExp%% noch einen Treffer hat. 
  
 Jeder Treffer wird ausgelesen. Mittels einer UDF (User Defined Function) kann man mit dem gefundenen String oder Submatches etwas machen Jeder Treffer wird ausgelesen. Mittels einer UDF (User Defined Function) kann man mit dem gefundenen String oder Submatches etwas machen
  
-Anschliessend nutze ich der RegExp.replace() um den Teilstring im Original durch den Neuen zu ersetzen+Anschliessend nutze ich der %%RegExp%%.replace() um den Teilstring im Original durch den Neuen zu ersetzen
  
 Das ganez wiederholen bis keine Treffer mehr da sind Das ganez wiederholen bis keine Treffer mehr da sind
  
 ==== Einschränkung ==== ==== Einschränkung ====
-Es funktioniert natürlich nicht, wenn der neue String wieder dem Pattern entspricht. Wenn ich also bei IgnoreCase ''​A''​ durch ''​a''​ ersetzen will, landet das ganze in einer Endlosschleife.+Es funktioniert natürlich nicht, wenn der neue String wieder dem Pattern entspricht. Wenn ich also bei %%IgnoreCase%% ''​A''​ durch ''​a''​ ersetzen will, landet das ganze in einer Endlosschleife.
  
 ==== Version 1) Funktion mit detailiertem Aufbau ==== ==== Version 1) Funktion mit detailiertem Aufbau ====
Line 69: Line 70:
  
 ==== Version 2) Kompakte Version ==== ==== Version 2) Kompakte Version ====
-In dieser Version verzichte ich darauf, alle Schritte einzeln durchzugehen. Auch das ertellen des %%RegExp%% überlasse ich der Funktion [[vba:​cast:​cregexp#​Abgespeckte Version|[VBA] cRegExp() Abgespeckte Version]]. Dann sieht der Code noch so aus.+In dieser Version verzichte ich darauf, alle Schritte einzeln durchzugehen. Auch das ertellen des %%RegExp%% überlasse ich der Funktion [[vba:​cast:​cregexp#​abgespeckte_version_crx|[VBA] cRegExp() Abgespeckte Version]]. Dann sieht der Code noch so aus.
 Ja, der erste ist besser lesbar. Wenn an aber ein Pattern immer wieder verwendet, erkennt man es beim lesen vom Code sofort. Ja, der erste ist besser lesbar. Wenn an aber ein Pattern immer wieder verwendet, erkennt man es beim lesen vom Code sofort.
  
vba/tutorials/regexpreplacewithfunction.1417013867.txt.gz · Last modified: 26.11.2014 15:57:47 by yaslaw