Как мне сопоставить каждое предложение, содержащее определенное слово, с помощью регулярных выражений? - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь выделить предложения, содержащие данное слово.Давайте для этого примера скажем, что слово «лорем».Для меня предложение может заканчиваться несколькими способами, например, оно может заканчиваться одним из следующих символов: "," "!""""?".Это можно сделать очень легко с помощью следующего регулярного выражения:

/\b((?!=|\,|\.).)+(.)\b/gim

Ранее я использовал /^.*lorem.*?(\.|\!|\?)/gim для сопоставления предложений, содержащих слово «lorem».Но это не сработало большую часть времени, как ожидалось.Можно ли каким-либо образом использовать новое регулярное выражение, которое разделяет предложения, чтобы сопоставлять предложения только с данным словом?

Просто на голову.Я понимаю, что это может быть достигнуто с помощью функций JavaScript, таких как замена.Однако это не вариант.Наша система, в которой будет использоваться это регулярное выражение, принимает в качестве входных данных только регулярное выражение.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете динамически создать свой RegExp из целевой строки, используя эту функцию:

function sentenceWith (word) {
  return new RegExp(String.raw`(?:[a-z\d][^=!?,.]*?|)\b${word}\b[^=!?,.]*`, 'gi');
}

Это должно быть похоже на Предложение Виктора Стрибжева , за исключением того, что начальные совпадения всегда начинаются с буквы или цифры,Предполагается, что ввод представляет собой буквенно-цифровую строку.Если входное слово может содержать специальные символы, вы должны очистить его, используя ответ в Есть ли функция RegExp.escape в Javascript? перед передачей его конструктору.

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