尝试使用正则表达式模式
reg.Pattern = "(\D:)" ' non-digit followed by colon, as group $1
\D
指定非数字字符。 (\ D :)指定一个非数字字符后跟冒号。括号中,此匹配模式将在稍后的替换中被标识为$1
;因为它是第一个(也是唯一)被捕获的组。
然后这样替换:
newString = reg.Replace(oldString, "$1 ") 'replace captured group by itself then space
替换匹配的组($1
)由本身随后空间:"$1 "
在只有一组的情况下的另一种在图案(像这样的) ,您可以删除括号并将(仅)捕获的组标识为$+
。
reg.Pattern = "\D:" ' non-digit followed by colon, as the only group ($+)
newString = reg.Replace(oldString, "$+ ")
Sub Example()
Dim reg As New RegExp: reg.Global = True: reg.Pattern = "(\D:)"
Dim oldString As String: oldString = "abcd Date:01/01/17 10:18 Des:xyz"
Dim newString As String: newString = reg.Replace(oldString, "$1 ")
Debug.Print newString
End Sub
abcd Date: 01/01/17 10:18 Des: xyz
你的意思是你不想更换,如果有冒号前多少? – SJR
查看“在vba中使用正则表达式” - 这会让你想要你需要解决的问题。如果你找到一些例子(这里有数百个),你仍然遇到麻烦,请回来澄清问题或发布一个新问题。 – Dave
如何使用Regular Expresions? [如何在Microsoft Excel中使用正则表达式(正则表达式)in-cell和loops](http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-双胞胎和环) –