2012-04-05 10 views
0

! Ich arbeite mit der Replace-Methode von VBA Regex und frage mich, wie viele Parameter es dauern kann? Ich habe die msdn-Seite gesehen, die viele verschiedene Optionen bietet, aber ich bin nicht sicher, was ich verwenden soll. Hier ist der Link zu dieser Seite: MSDN Page: Regex.Replace MethodWie viele Parameter in der VBA-Regex-Methode? Replace?

Ich würde gerne in der Lage sein, Rückverweise und andere VBA-Regex im 'ersetzen mit' Parameter, wenn möglich zu verwenden.

Ich bin zur Zeit nur in der Lage, dies zu tun, zum Beispiel (eine wörtliche Textersetzung)

RE6a = RE.Replace(strData, " ") 

ich dies tun möchte, zum Beispiel:

RE6a = RE.Replace(strData, \s) 

oder

RE6a = RE.Replace(strData, \1 \3 \4) 

Wie kann ich dies in VBA Regex tun?

Danke für jede Hilfe!

+2

Ihr Link ist für .NET Regex, nicht das, was würden Sie verwenden in VBA. – Jay

+1

Sie können keine anderen Regex-Ausdrücke in 'Replace' ersetzen. – brettdj

+0

Haben Sie ein bestimmtes Beispiel, in dem Ihr String-Literal oder Submatch-Ersatz nicht das erreicht, was Sie brauchen? – brettdj

Antwort

3

VBA hat keine regulären Ausdrücke. Um sie zu verwenden, müssen Sie zuerst auf eine Regex-Bibliothek verweisen.

Wenn es so passiert ist, dass Sie die Microsort VBScript Regular Expressions-Bibliothek verwiesen, dann werden Sie die Antwort in der documentation finden:

' Swap first pair of words. 
MsgBox(ReplaceTest("(\S+)(\s+)(\S+)", "$3$2$1")) 
+1

Ich hatte kommentiert, dass dieses bestimmte Beispiel Submatches statt Rückreferenzen ausgetauscht hat. Aber der Prozess, der oben mit submatches (dh der "$ 1" -Syntax) verwendet wird, ist derselbe wie [reference backreferences] (http://msdn.microsoft.com/en-us/library/fzhdcs5c (v = vs.85) .aspx)) – brettdj