Я ищу в абзацах текста.
Я хотел бы найти строки в тех абзацах, которые начинаются с определенного слова, а затем взять текст, который следует сразу за этим совпадающим словом. Я хотел бы остановиться при встрече с первой точкой, восклицательным знаком, вопросительным знаком или новой строкой ... Если ни один из них не найден в пределах 100 символов от поискового слова, я хотел бы обрезать строку у слова граница, ближайшая к пределу в 100 символов.
Как я могу это сделать?
ПРИМЕР
string: "A test sentence containing an ngram and ending with a period. Another sentence that does not have the word we're searching for and runs on until we're past 100 characters."
regex: /\bngram(.{0,100})(\.|\b)/i
desired output: ' and ending with a period'
В этом случае мое регулярное выражение возвращает «и заканчивается точкой. Другое предложение, в котором нет искомого слова, и выполняется». Это продолжается дольше, чем я хотел, потому что это группа захвата точки / границы слова жадная (может быть?). Я не знаю, как ограничить более короткое совпадение по сравнению с самым длинным.