2017-08-05 3 views
0

Der Code funktioniert, aber es führt keine Schleife durch jede der Zeilen, um die Antwort in die angrenzende Spalte zu schreiben. Alle Spalten Bs erhalten die Antwort für die letzte Zeile.Regex, um alles zu löschen, beginnend mit einer bestimmten Zeichenfolge und gefolgt von etwas anderem?

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

Möchten Sie 'BSU:' selbst behalten oder löschen? – marekful

+0

löschen 'BSU:' selbst – cookiemonster

Antwort

1

Die * im Muster BSU:* wird nur auf die vorangehenden Zeichen aufgebracht, so dass es : 0 oder mehrfach entsprechen würde.

Um einen String beginnend mit BSU: und gefolgt von irgendetwas

BSU:.*

in diesem Fall . passt alle Zeichen und mit .* passt es alle Zeichen 0 oder mehr an, wie oft das ist, was Sie verwenden, entsprechen müssen es sei denn, Sie möchten nur übereinstimmen, was nachBSU: ist, was auch getan werden könnte (Lookahead oder Capturing Groups).

+0

Vielen Dank, es löste das Problem .. Wenn ich alles vor 'BSU:' löschen will, muss ich es in "* .BSU:" ändern – cookiemonster

+1

Das wäre '. * BSU: '. Es gibt großartige Ressourcen online, um mehr über reguläre Ausdrücke zu erfahren! – marekful

+0

Gern geschehen, @cookiemonster! Warum akzeptierst du nicht diese einzige Antwort? – marekful

Verwandte Themen