在Word文档中搜索(单/双引号)之间的文本

时间:2018-05-18 19:19:24

标签: regex vba ms-word

我正在尝试获取(单/双引号)

中的数据列表

输入数据为:

  

拉维问拉吉“你好吗?”和'你去哪了'。拉吉回答说   “我很好拉维,'你好吗'和'你怎么认识这个人?'”

期望输出是:

  • 你好吗
  • 你去过哪里
  • 我很好拉维,'你好吗'和'你怎么认识这个人?'

(需要考虑边界引号,它应该嵌入单/双引号字符)

请在Word VBA中为RegExp提供建议。

我在Code下面尝试但没有成功:

Sub Test()
    Dim mystring As RegExp
    Dim mydata As MatchCollection

    Set mystring = New RegExp
    mystring.Pattern = "\s("".*"")\s"
    mystring.Global = True
    Set mydata = mystring.Execute(ActiveDocument.Range)


    For Each wrd In mydata
        MsgBox wrd
    Next wrd

End Sub  

2 个答案:

答案 0 :(得分:1)

这应该有效:

".+?"|'.+?'

Try it online

但是,这包括匹配中的单引号/双引号,这似乎不是您的预期输出。您可以使用VBA删除它们。

一个完整的VBA示例:

Sub Test()
    Dim re As RegExp
    Dim matches As MatchCollection
    Dim m As Match

    Set re = New RegExp
    re.Pattern = """.+?""|'.+?'"
    re.Global = True
    Set matches = re.Execute(ActiveDocument.Range)

    For Each m In matches
        'MsgBox m           ' With quotes.
        Dim parsed As String
        parsed = Mid$(m, 2, Len(m) - 2)
        MsgBox parsed       ' Without quotes.
    Next m
End Sub

答案 1 :(得分:-1)

这个似乎有效:

(?:'|").*(?:'|")

((?:'|").*(?:'|"))

如果你需要一个小组。

这是演示:链接

它有效,因为*是一个贪婪的量词,所以你不必知道最后是什么类型的引用。 *将采取尽可能多的。