Эти люди правы, что оно будет соответствовать ###-####
Но они забывают объяснить .*
, что означает, по сути, "все остальное", .
представляет любой символ, кроме новой строки.
Это не сильно влияет на успех регулярного выражения, но не позволяет регулярному выражению охватывать несколько новых строк при совпадении.Обычно это идеально, в зависимости от того, ожидаете ли вы новых строк в вашем вводе и что они означают явно.
РЕДАКТИРОВАТЬ: Прежде всего, отредактированное регулярное выражение не будет компилироваться в Java с пробелами между {}
пробелы внутри не имеют смысла, он только ищет количественные числа.
Итак, если вы удалите эти пробелы между {}
, это будет соответствовать
" ddd -#### "
Где «d» в данном случае - буквально буква «d», а «#» - любая цифра.Опять же, за этим может следовать что угодно из-за .*
.Но теперь, поскольку после .*
есть дополнительный пробел, соответствующая строка также должна заканчиваться хотя бы одним пробелом .... Хотя это довольно бесполезное выражение, вы уверены, что хотите интерпретировать этот первый d
буквально??Возможно, вам следует снова проверить свой синтаксис .....
Кроме того, забавный факт: вам не нужно выходить из первого пробела, ваше регулярное выражение
"\\ d{3} -\\d{4}.* "
синтаксически эквивалентно " d{3} -\\d{4}.* "