使用Visual Basic for Applications的正则表达式错误

时间:2015-02-21 20:23:07

标签: regex excel vba basic

使用http://www.regexr.com/进行测试模式\"([\s\S]*?)\"可以匹配我的目标字符串。但是,在我的代码中我得到类型不匹配并且不确定原因,IDE改变了字符串在引号内格式化的方式

Dim Matches
Dim objectRegularExp As RegExp

If Application.FileDialog(msoFileDialogOpen).Show <> -1 Then Exit Sub
FileName = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Open FileName For Input As #1
yourText = Input(LOF(1), #1)
Close #1
LengthOfFile = Len(yourText)

'create regular expression

Set objectRegularExp = New RegExp
With objectRegularExp
     .Pattern = "" \ "(\s\S*?)\"""                 <type mismatch runtime error
     .Global = True
     .MultiLine = True
End With
Set Matches = objectRegularExp.Execute(yourText)

1 个答案:

答案 0 :(得分:1)

你的报价错了。

字符串用引号括起来。要在字符串中包含引号,您需要2个引号。你的字符串开头有两个引号(所以一个空字符串)你的字符串中间有一个引号。如果字符串在第一位有效,则终止该字符串。

通常我们使用非懒惰的方式

.Pattern = Chr(34)&amp; “\”&amp; Chr(34)&amp; “(\ s \ S *?)\”&amp; chr(34)