2016-09-20 81 views
0

我創建了一個VBA宏,它在txt文檔中搜索正則表達式。您必須在excel電子表格中的單元格中輸入常規密碼,宏將使用Word來計算特定txt文檔中正則表達式的出現次數。迄今爲止,一切都很好。VBA正則表達式匹配兩行

現在我正在嘗試搜索像「要去」的短語。這也可以正常工作,只要它不是分散在兩行中。潛在地,「去」和「去」之間有一個分界線。所以我嘗試瞭如下模式:

going\nto 
going[\n]to 
going\rto 
going\sto 

他們都沒有發現「將」分散在兩行中。我也在txt文檔中手動輸入它,也找不到它。當我只搜索\n。 「正在」和「到」之間的分界符被正確找到。

我在做什麼錯?

+0

如果中間有一個CR符號,應該是「going \ rto」。或者使用'「將[\ r \ n] *改爲」' –

+1

您是否正在設置多行標誌? –

+0

多行標誌與匹配換行符無關。 –

回答

1

匹配兩個單詞之間空格的最佳方法是\s+

它匹配1個或多個空白符號。

這裏是一個VBA樣片打印3個「繼續」的代碼片段,它們分別是1)CR,2)CR + LF,3)空格。

Sub MatchStrWithWhitespaces() 
Dim rx As RegExp 
Dim m As MatchCollection 
Dim s As String 

s = "going" & vbCr + "to and " & "going" & vbCrLf + "to and " & "going to and " 
Set rx = New RegExp 
rx.Global = True 
rx.Pattern = "going\s+to" 
Set m = rx.Execute(s) 
If m.Count > 0 Then 
    For Each n In m 
    Debug.Print m(0) 
    Next 
End If 

End Sub