Как уже упоминалось в моей другой ответ, .*? версия ленивая Это означает, что часть, заключенная в скобки, будет применяться к как можно меньшему количеству совпадений с регулярным выражением. Версия с вопросительным знаком вне скобок является жадной: она будет применяться к как можно большему количеству символов.
Оба выражения будут иметь одинаковый эффект, если вы посмотрите только на совпадение, а не на совпадение. Два подстановочных знака получат совпадение, если это возможно, но один минимизирует захваченное количество, а другой максимизирует его. Они отличаются, однако, тем, что они захватывают.
Давайте посмотрим пример захвата различий: singing . Он содержит буквально ng дважды. В (.*?)ng , (.*?) будет хватать все до первой ng - как только он это увидит, все готово: лень. В этом случае он будет захватывать si . (.*)?ng будет пытаться захватить как можно больше - это жадно - оставляя только последний ng . Здесь фиксируется singi .
Если во входной строке не будет нескольких экземпляров детали вне группового символа, вы не увидите разницы.