2016-01-21 60 views
0

我试图用正则表达式替换Excel中的子串“AV-”。我创建了如下因素的功能,但它没有找到或更换比赛使用Regex查找和替换Substing

Sub simpleRegex() 
Dim strPattern As String: strPattern = "[AV-]{AV-}" 
Dim strReplace As String: strReplace = "ZS-" 
Dim regEx As New RegExp 
Dim strInput As String 
Dim Myrange As Range 

Set Myrange = ActiveSheet.Range("E" & (ActiveCell.Row)) 

If strPattern <> "" Then 
    strInput = Myrange.Value 
    strReplace = "" 

    With regEx 
     .Global = True 
     .IgnoreCase = False 
     .Pattern = strPattern 
    End With 

    If regEx.Test(strInput) Then 
     ActiveSheet.Range("E" & (ActiveCell.Row)).Value = (regEx.Replace(strInput, strReplace)) 
    Else 
     MsgBox ("Not matched") 
    End If 
End If 

末次

+1

我假设你正在尝试学习一些东西,因为这可以用vba中的一行来完成'Myrange.Replace“AV-”,“ZS-”,xlPart,True' –

+0

很难说什么是输入/输出的要求是,但你可以使用这样的东西 \t'ResultString = Regex.Replace(SubjectString,“(AV - )(。*)”,“ZS- $ 2-TRAILING”,RegexOptions.Multiline)'或什么斯科特已经提到。 – Greg

回答

0

这不是很清楚,你想不样本输入/输出做什么。但是,如果您只想将字符串“AV-”替换为“ZS-”,则您的模式应该是“AV-”。

此外,如果你不知道,有正则表达式测试网站,可以帮助你创建/测试你的正则表达式模式,因为复杂的可以得到很难读。我建议的一个网站是https://regex101.com/。请记住,不同语言的正则表达式的实现并不完全相同,但它至少可以帮助你接近。

+0

嗯,这基本上是我想要做的。感谢一百万,并为链接。 – Shauny