Я ищу в параграфах текста.Регулярное выражение, чтобы ограничить строку до кратчайшего по сравнению с самым длинным совпадением (не-жадная группа)?
Я хотел бы найти строки в этих параграфах, которые начинаются с определенного слова, а затем захватывать текст, который сразу следует за этим совпадающим словом. Я хотел бы остановиться, когда столкнулся с первым периодом, восклицательным знаком, вопросительным знаком или новой строкой ... Если ни один из них не найден в пределах 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'
В этом случае, мои регулярные выражения возвращают «и заканчивающийся период. Другое предложение, которое не имеет слова мы ищем и работает.» Это продолжается дольше, чем я хотел, потому что группа захвата периода/слова является жадной (может быть?). Я не знаю, как ограничить более короткий матч, чем самый длинный матч.