2016-09-20 240 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