Регулярное выражение: включить 3 слова перед и 3 за выделенным текстом - PullRequest
2 голосов
/ 03 апреля 2019

Я использую этот код регулярного выражения в Excel, чтобы найти нужный текст в абзаце:

=RegexExtract(B2,"(bot|vehicle|scrape)")

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

Пример текста:

A car (or automobile) is a wheeled motor vehicle used for transportation. 
Most definitions of car say they run primarily on roads, seat one to eight people,
have four tires, and mainly transport people rather than goods.

Пример вывода:

a wheeled motor **vehicle** used for transportation

Я хочу, чтобы часть текста отображалась для того, чтобы получатель мог легче точно определить местоположение текста.

Любой альтернативный подход очень ценится.

1 Ответ

2 голосов
/ 03 апреля 2019

Вы можете использовать

=RegexExtract(B2,"(?:\w+\W+(?:\w+\W+){0,2})?(?:bot|vehicle|scrape)(?:\W+\w+(?:\W+\w+){0,2})?")

См. Демонстрационный пример regex и график Regulex :

enter image description here

Подробности : шаблон заключен в круглые скобки, чтобы REGEXEXTRACT фактически извлекла нужную вам строку, соответствующую следующему шаблону:

  • (?:\w+\W+(?:\w+\W+){0,2})? - необязательная последовательность слова, за которой следуют символы, не состоящие из слов, за которыми следуют ноль, одно или два повторения, состоящие из 1+ слов, а затем - 1+, не состоящих из слов
  • (?:bot|vehicle|scrape) - a bot, vehicle или scrape word
  • (?:\W+\w+(?:\W+\w+){0,2})? - необязательная последовательность из 1+ несловарных символов и затем из 1+ слововых символов, за которыми следуют ноль, одно или два повторения из 1+ несловесных словсимволы, а затем 1+ слова.

Проверка таблиц Google:

enter image description here

...