2017-08-05 42 views
0

代码正在工作,但它不循环每行以将答案放在其相邻列中。所有列B都得到最后一行的答案。正则表达式可以删除所有以某个字符串开头的东西,然后是其他东西?

enter image description here

Private Sub simpleRegex() 
'Dim strPattern As String: strPattern = "^[0-9]{1,2}" 
Dim strPattern As String: strPattern = "BSU:.*" 
Dim strReplace As String: strReplace = "" 
Dim regEx As New RegExp 
Dim strInput As String 
Dim Myrange As range 
Dim r As range 
Set r = ActiveSheet.range("A1", range("A1").End(xlDown)) 
Set Myrange = ActiveSheet.range("A1:A5") 

For Each cell In Myrange 
    If strPattern <> "" Then 
     strInput = cell.Value 

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

     If regEx.Test(strInput) Then 
      r.Offset(0, 1).Value = (regEx.Replace(strInput, strReplace)) 


      'MsgBox (regEx.Replace(strInput, strReplace)) 
     Else 
      'MsgBox ("Not matched") 
     End If 
    End If 
Next 
End Sub 
+0

是否要保留或删除'BSU:'本身? – marekful

+0

删除'BSU:'本身 – cookiemonster

回答

1

在图案BSU:**被施加到前面的字符仅所以它将匹配: 0或多次。

要匹配的字符串开始BSU:和后跟任何使用

BSU:.*

在这种情况下.任何字符相匹配,并且与.*它匹配任何字符0或更多一些时间,这是你所需要的除非你只想匹配之后BSU:也可以完成(向前看或捕捉组)。

+0

非常感谢,它解决了这个问题。如果我想在'BSU:'之前删除所有内容,我将不得不将其更改为“* .BSU:” – cookiemonster

+1

这就是'。* BSU:'。网上有很多资源可以学习正则表达式! – marekful

+0

不客气,@cookiemonster!那你为什么不接受这个唯一的答案? – marekful

相关问题