Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1372to1376
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Reguläre Ausdrücke

Reguläre Ausdrücke
04.08.2014 19:25:23
Golem
Hallo Excel-Fachleute,
ich habe ein Makro erstellt, um in ca. 1.000 Zeilen unterschiedliche Texte zu bereinigen ( mein erster
Versuch mit RegEx ).
Public Function Text_bereinigen(sText As String) As String
Dim RegEx As Object
' Für das Entfernen bestimmter Zeichen aus einem String, wird hier die Replace-Methode  _
verwendet ( RegEx ).....
Set RegEx = CreateObject("Vbscript.Regexp")
With RegEx
.Pattern = "(NICHT|BEZAHLT|EU|[0-9]?[0-9]{3}[,][0]{2}|ENT-|GELT|FREMD|[0-9]?[0-9][,][ _
0]{2}|EIGEN|[0-9]?[0-9][,][0]{2}|EU|KTO-NR.|FALSCH)|" & _
"[+ZV][0-9]{20}[ ]?[0-9]{2}|" & _
"(BAHNHOFSTR)[.]?[ ]?[1-9][ ]?[-]?[1-3]?[3]?|[0-3][ ]?[0-9][ ]?[.][ ] _
?[0-1][ ]?[0-9][ ]?[.][ ]?[0-1][ ]?[0-9]|" & _
"[2-8][ ]?[0][ ]?[0-9][ ]?[0-9]|" & _
"[H][A-U]{2}[S][ ]?[1-4]|" & _
"[ -.A-Z]"
.Global = True           ' Jedes Auftreten wird berücksichtigt.....
.IgnoreCase = True       ' ignoriere Gross- und Kleinschreibung.....
Text_bereinigen = .Replace(sText, "")
End With
Set RegEx = Nothing
End Function
Dieses Makro funktioniert auch bisher einwandfrei. Aber ich gehe davon aus, dass das Makro noch optimiert werden kann.
Meine Frage ist, ob ein RegEx-Profi den Aufwand betreiben würde, mein Makro zu optimieren. Durch diese Optimierung
erhoffe ich mir einen erheblichen Lerneffekt.
Für die evtl. Bemühung schon mal besten Dank!
Werner

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Reguläre Ausdrücke
04.08.2014 19:46:01
Daniel
HI
für eine Optimiertung ist es immer Hilfreich, wenn du zusätzlich zum Code auch noch beschreibst, was die Aufgabenstellung ist und was du erreichen willst.
Gruß Daniel

AW: Reguläre Ausdrücke
04.08.2014 20:54:38
Alice
Hallo RegMacher
RegEx immer wieder zu initialisieren ist bööööööööööse
wird bestimmt ganz viel ganz schneller wenn vorher gedingst.
Alice - die vom Wunderland

Und nu iss Daniel wieder Alice... :-)) owT
04.08.2014 21:42:20
Luc:-?
:-?

AW: Und nu iss Daniel wieder Alice... :-)) owT
04.08.2014 22:39:59
ransi
Hallo
Es wäre hilfreich wenn du mal ein par typische Beispielstrings reinstellen würdest, und dann erklärst was du daraus brauchst.
Da kann man dann mal dran testen.
ransi

Anzeige
AW: Reguläre Ausdrücke
04.08.2014 21:04:17
Golem
Hallo Daniel,
ist ja auch korrekt. Habe ich vergessen.
Ich habe von einem Gemeinschaftskonto sämtliche Einzahlungen ( ca. 1.000 Kontobewegungen ) eines Jahres als Excel-Datei vorliegen. Aus dem Text, aus der Spalte Verwendungszweck, möchte ich die Wohnungsnummer der Einzahler für die weitere Verwendung extrahieren. Die einzelnen Strings setzen sich teilweise aus Text und Zahlen zusammen und die Einzahler verwenden viele Textvariationen, die nicht benötigt werden.
Mit dem Makro konnte ich bisher die Hausnummern auslesen, aber das Pattern ist auf den vorliegenden Text des Jahres 20013
ausgelegt und die Textvariationen können sich sicherlich in den nächsten Jahren ändern. Deshalb ist auch mein Anliegen,
das Makro individueller auszulegen.
Mit
"(NICHT|BEZAHLT|EU|[0-9]?[0-9]{3}[,][0]{2}|ENT-|GELT|FREMD|[0-9]?[0-9][,][0]{2}|EIGEN|[0-9]?[0-9][,][0]{2}|EU|KTO-NR.|FALSCH)|" &
entferne ich folgenden Stringteil: "NICHT BEZAHLT EU 333,00ENT- GELT FREMD03,00EIGEN03,00EU KTO-NR. FALSCH" .
Mit
"[+ZV][0-9]{20}[ ]?[0-9]{2}|" & entferne ich folgenden Stringteil: "ZV01001524033655000000 02" .
Mit
"(BAHNHOFSTR)[.]?[ ]?[1-9][ ]?[-]?[1-3]?[3]?|[0-3][ ]?[0-9][ ]?[.][ ]?[0-1][ ]?[0-9][ ]?[.][ ]?[0-1][ ]?[0-9]|" &
entferne ich folgenden Stringteilkombinationen: "BAHNHOFSTR.7" ,"BAHNHOFSTR.9" , "BAHNHOFSTR.11" ,"BAHNHOFSTR.13" ,"BAHNHOFSTR.7 13" , "BAHNHOFSTR.7-13" oder "BAHNHOFSTR.713" ( evtl. auch noch weitere Möglichkeiten ).
Mit
"[2-8][ ]?[0][ ]?[0-9][ ]?[0-9]|" & entferne ich folgenden Stringteil: Jahreszahl 2013 bis 2099 mit alle Variationen ( z. B.
20 13 oder 2 013 usw. ).
Mit
"[H][A-U]{2}[S][ ]?[1-4]|" & entferne ich folgenden Stringteilkombinationen: "Haus 1", "Haus1", "Haus 2", "Haus2", "Haus 3", "Haus3"
"Haus 4", "Haus4", "Haus1-4", "Haus14", "Haus 1 4" usw. .
Mit dem letzten Teil
"[ -.A-Z]" entferne ich die Bindestriche, Punkte und die restlichen Buchstaben.
Ein bisschen viel Text, aber ich hoffe, dass ich mich verständlich ausgedrückt habe.
Schöne Grüße
Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige