Потому что после @
вы ищете буквы, цифры, _
или .
, затем точку, а затем буквенно-цифровой. Вы не допускаете -
нигде после @
.
Вам нужно добавить -
к одному из классов символов (за исключением одного буквального периода, который я бы написал \.
), чтобы разрешить дефисы.
\w
- буквы, цифры и подчеркивания.
A .
внутри класса символов, обозначенного []
, это просто точка, а не какой-либо символ.
В первом выражении вы не ограничиваетесь \w
, вы используете .*
, то есть 0+ вхождений любого символа (что на самом деле может быть не тем, что вы хотите).