У меня проблемы с поиском рабочего решения уже пару часов. Надеюсь, вы мне поможете.
Моя проблема: мне нужно найти и выбрать в Word целое предложение после указания начальной и конечной строк конкретного предложения. Например, если моя начальная строка — «Люди», а конечная — «яблоки». Я ожидаю, что Word выберет все «Люди любят красные яблоки». предложение в моем документе. (Если такое предложение существует)
Для этого я подготовил макрос, который работает почти так, как я хочу. Единственная проблема заключается в том, что он не выбирает наименьший возможный набор символов (что я и хочу сделать). Чтобы было понятно, предположим, что в моем документе есть этот текст: People like smoking. People like red apples.
Теперь, когда я предоставляю макросу начальную и конечную строки соответственно как «Люди» и «яблоки», он выбирает весь текст, который содержит 2 предложения, упомянутые выше. В этом моя проблема: я хотел, чтобы было выбрано только второе предложение (People like red apples.
), а не оба, даже если они начинаются с одного и того же слова. Так что, по сути, я всегда хочу выбрать максимально короткий набор символов (в данном случае это только последнее предложение).
Вот часть моего макроса в VBA:
`text_str = startStr & "*" & endStr
With Application.Selection.Find
.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Text = text_str
.MatchWildcards = True
.MatchCase = True
.Execute
End With
Я знаю, что проблема связана с подстановочными знаками (или очень ограниченным набором регулярных выражений), поэтому я также попробовал что-то вроде этого в качестве строки поиска:
text_str = "(" & startStr & "*){1}" & endStr
Тоже не помогло. Я застрял здесь. :/
Спасибо за любые предложения!
startStr & "[!?\!.]*" & endStr
? ОднакоstartStr
будет соответствовать в любом месте предложения, не обязательно в начале. - person Wiktor Stribiżew   schedule 01.08.2017startStr & "[!?\!.]@" & endStr
. В противном случае вам понадобится регулярное выражение. - person Wiktor Stribiżew   schedule 01.08.2017