Microsoft Excel

Herbers Excel/VBA-Archiv

RegEdit (suchen und ersetzen) | Herbers Excel-Forum


Betrifft: RegEdit (suchen und ersetzen) von: ing.grohn
Geschrieben am: 04.01.2012 14:23:30

Hallo Forum,
frohes neues Jahr,
Ransi hat mal ne Funktion publiziert, die unerwünschte Zeichen in einem String sucht (siehe unten) und WAHR oder FALSCH ausgibt (funktioniert gut).
Ich möchte gerne diese Zeichen auch austauschen.
Wie muß ich die Funktion ändern??

Public Function erlaubt(strText As String) As Boolean
'CON , PRN, AUX, CLOCK$, NUL # VERBOTEN #
'COM0 , COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 # VERBOTEN #
'LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, und LPT9 # VERBOTEN #
'< > ? " : | \ / # VERBOTEN #
'Leerzeichen oder Punkt # VERBOTEN #
Dim RegEx
erlaubt = True
Set RegEx = CreateObject("Vbscript.regexp")
With RegEx
    .Pattern = "^(CON|PRN|AUX|CLOCK$|NUL|COM0|COM1|COM2|COM3|COM4|COM5|COM6|COM7|COM8|COM9|LPT0| _
LPT1|LPT2|LPT3|LPT4|LPT5|LPT6|LPT7|LPT8| LPT9)\..*$"
    If .test(strText) = True Then
        erlaubt = False
        Exit Function
    End If
    .Pattern = "(<|>|\?|""|:|\||\\|\/|\*)"
    .Global = True
    If .test(strText) = True Then
        erlaubt = False
        Exit Function
    End If
    .Pattern = "( |\.).*\..*$"
    If .test(strText) = True Then
        erlaubt = False
        Exit Function
    End If
End With
End Function

Vielen Dank für eine Antwort
Mit freundlichen Grüßen
Albrecht

  

Betrifft: AW: ich meinte nat. RegExp von: ing.grohn
Geschrieben am: 04.01.2012 16:07:17

Hallo Forum,
sorry, RegEdit war natürlich nicht gemeint!
MfG
ALbrecht


  

Betrifft: AW: ich meinte nat. RegExp von: ransi
Geschrieben am: 04.01.2012 18:28:36

HAllo Albrecht


Die Funktion sollte einen String prüfen ob er für einen gültigen Dateinamen taugt.
Welche verbotenen Zeichen oder Teilstrings möchtest du denn gegen welche Zeichen ersetzen ?

'CON , PRN, AUX, CLOCK$, NUL # VERBOTEN #
'COM0 , COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9 # VERBOTEN #
'LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, und LPT9 # VERBOTEN #
'< > ? " : | \ / # VERBOTEN #
'Leerzeichen oder Punkt # VERBOTEN #

ransi


  

Betrifft: AW: ich meinte nat. RegExp von: ing.grohn
Geschrieben am: 04.01.2012 20:07:05

Hallo Ransi,
im Prinzip teste ich einen String als möglichen Dateinamen.
Erlaubt sind eigentlich nur (für mich) 0-9,A-Z,-,_ .
Der Rest ist verboten (auch Umlaute)!
Mit freundlichen Grüßen

Albrecht


  

Betrifft: AW: ich meinte nat. RegExp von: ransi
Geschrieben am: 04.01.2012 21:33:06

HAllo Albrecht

Jetzt weiß ich aber immer noch nicht gegen welche Zeichen die verbotenen Zeichen ausgetauscht weren sollen...

Hier mal 2 Beispiele die fast das Gleiche machen:
Tabelle1

 ABC
112.3Ö+-Ä_ö:;Ab,=12.3##-#_###A### 
212.3Ö+-Ä_ö:;Ab,=12.3#-#_#A# 
3   

Formeln der Tabelle
ZelleFormel
B1=erlaubt(A1)
B2=erlaubt1(A2)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public Function erlaubt(strText As String)
    Dim RegEx
    Set RegEx = CreateObject("Vbscript.regexp")
    With RegEx
        .Pattern = "[^0-9A-Z-_\.]"
        .Global = True
        erlaubt = .Replace(strText, "#")
    End With
End Function




Public Function erlaubt1(strText As String)
    Dim RegEx
    Set RegEx = CreateObject("Vbscript.regexp")
    With RegEx
        .Pattern = "[^0-9A-Z-_\.]+"
        .Global = True
        erlaubt1 = .Replace(strText, "#")
    End With
End Function



ransi


  

Betrifft: AW: ich meinte nat. RegExp von: ing.grohn
Geschrieben am: 05.01.2012 08:43:22

Hallo Ransi,
auch wenn ich Dir nicht verraten habe, gegen was getauscht werden soll (lass ich mal so stehn, hast Du mir sehr!!! geholfen! Ich habs auch schon etwas erweitert.
Ist die Reihenfolge bei Pattern egal?
Vielen Dank
Mit freundlichen Grüßen

Albrecht


  

Betrifft: AW: nicht ALLE Zeichen werden ersetzt von: ing.grohn
Geschrieben am: 05.01.2012 09:24:07

Ransi,
z.B am Schluss bei dir ,= ergibt #
(passiert auch mittendrin)
Mit freundlichen Grüßen
Albrecht


  

Betrifft: AW: nicht ALLE Zeichen werden ersetzt von: ransi
Geschrieben am: 05.01.2012 11:44:42

HAllo Albrecht



Das Pattern ist eine "Positivliste".
Alles was nicht in dieser Liste auftaucht wird ersetzt.

"[^0-9A-Z-_\.]"

0-9 --> Zahlen
A-Z --> GROSSBUCHSTABEN
- --> minus
_ --> Unterstrich
\. --> Punkt


Das = und das b sind nicht im Pattern vorhanden, darum werden sie ersetzt.

ransi


  

Betrifft: AW: nicht ALLE Zeichen werden ersetzt von: ing.grohn
Geschrieben am: 05.01.2012 21:57:26

Hallo Ransi,
meine Frage war eigentlich:
Warum werden aufeinanderfolgende "negativ-Zeichen" nur durch EIN # (lattenjupp oder n anderes Zeichen) ersetzt?
Mit freundlichen Grüßen
ALbrecht


  

Betrifft: AW: nicht ALLE Zeichen werden ersetzt von: ransi
Geschrieben am: 06.01.2012 10:13:37

Hallo

Achso...

"[^0-9A-Z-_\.]+"

Dafür ist das "+" Zeichen zuständig.


Ich kratz bei RegEx auch noch an der Obefrläche.
Aus der Hilfe:
"+ Entspricht dem vorhergehenden Zeichen ein oder mehrere Male. "zo+" entspricht beispielsweise "zoo", nicht aber "z". "

Wenn du da etwas tiefer einsteigen willst:
Dies hier ist ganz gut:
http://www.gaddo.de/temp/ausgang/Regulaere_Ausdruecke.pdf

ransi


  

Betrifft: AW: nicht ALLE Zeichen werden ersetzt von: ing.grohn
Geschrieben am: 08.01.2012 15:03:16

Hallo ransi,
vielen Dank für deine Antwort und den Link!
Finde reguläre Ausdrücke ausgesprochen spannend!
salut
Albrecht


Beiträge aus den Excel-Beispielen zum Thema "RegEdit (suchen und ersetzen)"