Поиск текстов между (одинарные / двойные кавычки) в документе Word - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь получить список данных, представленных в (одинарные / двойные кавычки)

Входные данные:

Рави спросил Радж "Как твои дела?"и «Где ты был».Радж ответил: «Я в порядке, Рави,« Как дела? »И« Как вы узнали этого человека? »

Ожидаемый результат:

  • Как дела
  • Где вы были
  • Я в порядке, Рави, «Как дела?» И «Как вы узнали этого человека?»

(Границанеобходимо учитывать кавычки, и в них должен быть заключен символ одинарной / двойной кавычки)

Пожалуйста, дайте совет по RegExp для этого в Word VBA.

Я пытаюсь описать код ниже, но безуспешно:

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 голосов
/ 18 мая 2018

Это должно работать:

".+?"|'.+?'

Попробуйте онлайн .

Однако, это включает в себя одинарные / двойные кавычки в матчах, которые не кажутсябыть вашим ожидаемым результатом.Вы можете удалить их, используя 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
0 голосов
/ 18 мая 2018

Похоже, что это работает:

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

или

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

, если вам нужна группа.

Вот демо: ссылка

Это работает, потому что * является жадным квантификатором, поэтому вам не нужно знать, что это за цитата в конце.* займет столько, сколько возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...