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