【发布时间】:2014-05-31 18:21:15
【问题描述】:
我有一列代码列表,如下所示。
2.A.B, 1.C.D, A.21.C.D, 1.C.D.11.C.D
6.A.A.5.F.A, 2.B.C.H.1
8.ABC.B, A.B.C.D
12.E.A, 3.NO.T
A.3.B.C.x, 1.N.N.9.J.K
我想查找由句点分隔的两个单个大写字母的所有实例,但只查找小于 6 的数字。我想删除字母之间的句点并将第二个字母转换为小写。期望的输出:
2.Ab, 1.Cd, A.21.C.D, 1.Cd.11.C.D
6.A.A.5.Fa, 2.Bc.H.1
8.ABC.B, A.B.C.D
12.E.A, 3.NO.T
A.3.Bc.x, 1.Nn.9.J.K
我在 VBA 中有以下代码。
Sub fixBlah()
Dim re As VBScript_RegExp_55.RegExp
Set re = New VBScript_RegExp_55.RegExp
re.Global = True
re.Pattern = "\b([1-5]\.[A-Z])\.([A-Z])\b"
For Each c In Selection.Cells
c.Value = re.Replace("$1$2")
Next c
End Sub
这将删除句点,但不处理小写要求。我知道在其他风格的正则表达式中,我可以使用类似的东西
re.Replace("$1\L$2\E")
但这在 VBA 中没有预期的效果。我尝试使用谷歌搜索此功能,但找不到任何东西。有没有办法通过 VBA 中的简单 re.Replace() 语句来做到这一点?
如果不是,我将如何实现这一目标?模式匹配非常复杂,我什至不想考虑在没有正则表达式的情况下这样做。
[我想出了一个解决方案,贴在下面,但我希望有人能想出更简单的方法。]
【问题讨论】: