Excel VBA 正则表达式替换会丢失一个字符



下面的代码匹配并替换,但使用捕获组旁边的数字。我哪里出错了?

Sub test()
Dim regex As Object 'Regexp object.
Set regex = CreateObject("VBScript.RegExp") 'Regexp object.
Dim strPattern As String: strPattern = "d(AM|PM)" 'Declare regex pattern.
Dim strReplace As String 'Placeholder string for replace operation.
Dim target As String
target = "1:05PM"
strReplace = " $1"
With regex
.Global = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regex.test(target) Then
Debug.Print regex.Replace(target, strReplace)
End If
End Sub

输出:

1:0 PM

这是因为您的正则表达式中有一个未捕获的\d。尝试在d周围放置 ((,即(d)(AM|PM).

您还需要将 strReplace 更改为"$1 $2"

最新更新