正規表現で(\w+)?
と(\w*)
に違いはありますか?
同じようですね。
(\w+)?
と(\w*)
は両方とも同じ(0 .. + inf Word文字)に一致します
ただし、わずかな違いがあります。
最初の場合、正規表現のこの部分が""
と一致する場合、キャプチャグループは存在しません。 2番目の場合、空です。一部の言語では、前者はnull
として現れますが、後者は常に""
でなければなりません。
たとえば、Javascriptでは、
/(\w*)/.exec("") // ["", ""]
/(\w+)?/.exec("") // ["", undefined]
PHP(preg_match
)の場合、前者の場合、対応するキーは一致配列に存在しません: http://3v4l.org/DB6p3#v43