VBA正则expression式获取string只有数字和连字符

我有一个类似的string
Bl. 01 - 03

我希望这可以减less到只有
01-03

应该删除数字和连字符以外的其他东西。 任何想法如何使用正则expression式或任何其他方法?

你可以在replaceexpression式中使用这个模式:

 reg.Pattern = "[^\d-]+" Debug.Print reg.Replace(yourstring, "") 

除非更完整地描述“BI。01 – 03”之类的含义,否则:

 ^.*(\d{2}\s?-\s?\d{2}).*$ 

将捕获你感兴趣的部分作为组1.如果你想摆脱的空间,那么像这样的:

 ^.*(\d{2})\s?-\s?(\d{2}).*$ 

可能更适合,你将在组1和2中有两个数字,并且可以replace输出中的连字符。

这是一个非RegEx方法的函数,用于从给定的inputstring中除去数字和连字符:

 Function removeBadChars(sInput As String) As String Dim i As Integer Dim sResult As String Dim sChr As String For i = 1 To Len(sInput) sChr = Mid(sInput, i, 1) If IsNumeric(sChr) Or sChr = "-" Then sResult = sResult & sChr End If Next removeBadChars = sResult End Function