Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1244to1248
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

RegEdit (suchen und ersetzen)

RegEdit (suchen und ersetzen)
ing.grohn
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

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ich meinte nat. RegExp
04.01.2012 16:07:17
ing.grohn
Hallo Forum,
sorry, RegEdit war natürlich nicht gemeint!
MfG
ALbrecht
AW: ich meinte nat. RegExp
04.01.2012 18:28:36
ransi
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
Anzeige
AW: ich meinte nat. RegExp
04.01.2012 20:07:05
ing.grohn
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
AW: ich meinte nat. RegExp
04.01.2012 21:33:06
ransi
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
Anzeige
AW: ich meinte nat. RegExp
05.01.2012 08:43:22
ing.grohn
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
AW: nicht ALLE Zeichen werden ersetzt
05.01.2012 09:24:07
ing.grohn
Ransi,
z.B am Schluss bei dir ,= ergibt #
(passiert auch mittendrin)
Mit freundlichen Grüßen
Albrecht
AW: nicht ALLE Zeichen werden ersetzt
05.01.2012 11:44:42
ransi
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
Anzeige
AW: nicht ALLE Zeichen werden ersetzt
05.01.2012 21:57:26
ing.grohn
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
AW: nicht ALLE Zeichen werden ersetzt
06.01.2012 10:13:37
ransi
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
Anzeige
AW: nicht ALLE Zeichen werden ersetzt
08.01.2012 15:03:16
ing.grohn
Hallo ransi,
vielen Dank für deine Antwort und den Link!
Finde reguläre Ausdrücke ausgesprochen spannend!
salut
Albrecht

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige