Они называются кванторами.
*
0 или более из предыдущего выражения
+
1 или более из предыдущего выражения
Per по умолчанию квантификатор жадный, это означает, что он соответствует как можно большему количеству символов.
?
после квантификатора изменяет поведение, чтобы сделать этот квантификатор «неровным», означает, что он будет соответствовать как можно меньше.
Пример greedy / ungreedy
Например, в строке « abab »
a.*b
будет соответствовать «abab» (preg_match_all будет возвращать одно совпадение «abab»)
, в то время как a.*?b
будет соответствовать только стартовому «ab» (preg_match_all вернет два совпадения, «ab»)
Вы можете проверить ваши регулярные выражения онлайн, например на Regexr, см. жадный пример здесь