Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1264to1268
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

Frage zu RegExp

Frage zu RegExp
hary
Hallo Allemann
Bin wieder mal am ueben. Also komplett am Anfang. Nu ist RegExp dran.
Habe in der Aktiven Zelle stehen: Dies ist ein Test.
mit...

oRegEx.Pattern = "[ie]{2}" 'i und e stehen zusammen
oRegEx.Global = True
strB = "/"
' Pattern gegen strB austauschen
ActiveCell = oRegEx.Replace(ActiveCell, strB)

.... werden die zusammenhaengenden Buchstaben ersetzt.
Wie mache ich es, wenn ich nur die einzel stehende Buchstaben( i und e) ersetzen moechte?
Vor lauter nachlesen, traenen mir schon die Augen und ich komm nicht drauf.
Kann mir mal jemand einen Schubs geben? Oder geht das nicht?
Danke im vorraus.
gruss hary

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Frage zu RegExp
24.05.2012 17:36:41
bst
Hi,
wie meinst Du das denn:
Du willst i und auch e löschen, nicht aber ie und ei?
Du willst i und auch e löschen, nicht aber ie und ei und ii und ee?
cu, Bernd
AW: Frage zu RegExp
24.05.2012 17:48:06
hary
hallo Bernd

Du willst i und auch e löschen, nicht aber ie und ei?
Du willst i und auch e löschen, nicht aber ie und ei und ii und ee?

Genau nur i und e als einzelne Buchstaben.
gruss hary
AW: Frage zu RegExp
24.05.2012 17:59:54
bst
Hi hary,
dazu musst Du nach [ie] suchen und zusätzlich sowohl [ie] vorher (lookbehind) als auch [ie] nachher (lookahead) ausschließen. Leider unterstützt vbscript.regexp nur lookaheads, keine lookbehinds :-(
Deshalb musst Du vorher nach [^ie] suchen und dieses im Ersatzstring wieder einfügen. Um auch noch den Zeilenanfang zu berücksichtigen brauchst Du dann eben (^|[^ie])
cu, Bernd
--
Option Explicit

Sub x()
    Const s As String = "x e und i und ee und ei und ie und ii y"
    Const t As String = "e am anfang und am ende e"
    Dim objRe As Object
    
    Set objRe = CreateObject("vbscript.regexp")
    objRe.Pattern = "(^|[^ie])[ie](?![ie])"
    objRe.Global = True
    MsgBox objRe.Replace(s, "$1-")
    MsgBox objRe.Replace(t, "$1-")
    Set objRe = Nothing
End Sub


Anzeige
AW: Frage zu RegExp
24.05.2012 18:12:24
hary
Hallo Bernd
Erstmal Danke.

"(^|[^ie])[ie](?![ie])"

das kann ich noch nachlesen.
Aber was macht aus:

Replace(s, "$1-")

dieser Teil: "$1-"
gruss hary
AW: ich hab's
24.05.2012 21:07:10
bst
Abend hary,
im Ersatzstring ist $1 der erste gefundene Submatch. Das sind die Teile die im Suchmuster mit () markiert wurden, ab 1 an nummeriert. Hier ist das also das (^|[^ie]), d.h. der Zeilenanfang (also ein symbolischer Match der Länge 0) oder aber das Zeichen direkt vor dem im Suchmuster nachfolgenden [ie].
cu, Bernd
Anzeige
AW: ich hab's
25.05.2012 06:15:51
hary
Moin Bernd
Danke nochmal fuer die Erklaerung.
Werde mich durch ausprobieren langsam vortasten.
gruss hary

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige