Ответ 1
(\w+)?
и (\w*)
оба соответствуют одинаковым (0.. + inf словам)
Однако есть небольшая разница:
В первом случае, если эта часть регулярного выражения совпадает с ""
, группа захвата отсутствует. Во втором случае он пуст. На некоторых языках первое проявляется как null
, а последнее всегда должно быть ""
.
В Javascript, например,
/(\w*)/.exec("") // ["", ""]
/(\w+)?/.exec("") // ["", undefined]
В PHP (preg_match
) в первом случае соответствующий ключ просто отсутствует в массиве совпадений: http://3v4l.org/DB6p3#v430