我正在尝试获取(单/双引号)
中的数据列表输入数据为:
拉维问拉吉“你好吗?”和'你去哪了'。拉吉回答说 “我很好拉维,'你好吗'和'你怎么认识这个人?'”
期望输出是:
(需要考虑边界引号,它应该嵌入单/双引号字符)
请在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
答案 0 :(得分:1)
这应该有效:
".+?"|'.+?'
但是,这包括匹配中的单引号/双引号,这似乎不是您的预期输出。您可以使用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)
这个似乎有效:
(?:'|").*(?:'|")
或
((?:'|").*(?:'|"))
如果你需要一个小组。
这是演示:链接
它有效,因为*
是一个贪婪的量词,所以你不必知道最后是什么类型的引用。 *将采取尽可能多的。