我有一个类似的字符串
Bl. 01 - 03
我希望这减少到只有
01-03
应删除除数字和连字符以外的所有内容。任何想法如何使用正则表达式或任何其他方法来做到这一点?
您可以在替换表达式中使用此模式:
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 组中拥有两个数字,并且可以替换输出中的连字符。
这是一个使用非 RegEx 方法的函数,用于从给定的输入字符串中删除除数字和连字符之外的任何内容:
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