Для регулярных выражений часто желательно сделать часть выражения нежадной. Для этого мы используем знак вопроса.
В чем разница между (.*?) а также (.*)? когда используется как часть большего выражения, чтобы захватить ноль или более символов?
Например, будет: (.*?)ng когда-либо дать другой результат, чем (.*)?ng ?
Конечные результаты одинаковы (подтверждено https://regex101.com/ ), но есть ли различия, которые не так очевидны?
(.*)?ng это правильное выражение. Это то, что я всегда использовал (и имеет больше смысла), но я читал книгу, которая использовала (.*?)ngи это выглядело неправильно, но у меня были проблемы с тем, чтобы положить палец на Зачем , Ваш пример хорошо это иллюстрирует. Кроме случаев, когда завершающее выражение ( ng в этом примере) дублируется, можете ли вы вспомнить другие случаи, когда результаты будут другими?
angngдля тестовой строки в regex101 чтобы увидеть, как два выражения соответствуют различным частям строки.