Регулярное выражение для поиска по тексту и выбора 4 слов до и 4 слов после поискового запроса

Используя OutSystems, мне нужно регулярное выражение для поиска по тексту и выбора 4 слов до и 4 слов после поискового запроса.

В настоящее время я использую (?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,4}(\w+|\s|^)keyword[a-zA-Z0-9]*(?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,4}

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

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

Надеюсь это имеет смысл


person Luke Anthony    schedule 29.06.2020    source источник
comment
Что для вас слово? Только алфавит? Буквенно-цифровой? Класс символов слова [A-Za-z0-9_]? Буквенно-цифровые символы с нелатинскими символами? Все, что не является пробелом или знаком препинания? Что-то другое?   -  person Toto    schedule 29.06.2020


Ответы (1)


Не совсем вопрос OutSystems, а скорее вопрос, связанный с RegEx.

Попробуйте это (используйте w* вместо w+):

(?:[a-zA-Z'-]+[^a-zA-Z'-]+){0,4}(\w*|\s|^)keyword[a-zA-Z0-9]*(?:[^a-zA-Z'-]+[a-zA-Z'-]+){0,4}
person Daniel Kuhlmann    schedule 29.06.2020