Как стать автором
Обновить

Комментарии 8

// email адрес в формате xxx@xxx.xxx (регистр букв игнорируется)
Pattern pattern = Pattern.compile("^([a-z0-9_\\.-]+)@([a-z0-9_\\.-]+)\\.([a-z\\.]{2,6})$", Pattern.CASE_INSENSITIVE);


как устал от такой проверки

у меня есть домены *.company аж 7 символов!, только малая часть сайтов дают зарегать мыло на данном домене.
и вообще по RFC какомуто там, достаточная маска для проверки почты (.*)@(.*), и нет смысла сложнее проверять как-то, тыкать верификацию почты и всё.
Отличное продолжение, спасибо.
Все помнят классику: «У нас была проблема. Для ее устранения мы решили использовать регулярные выражения. Теперь у нас две проблемы.»?
Регулярные выражения в Java используют механизм НКА


Вовсе нет. Какой именно механизм должна реализовывать конкретная реализация JDK, нигде явно не описывается. Насчёт OpenJDK не знаю, но вот Apache Harmony, и отпочковавшийся от неё Android, используют обычный бэктрекинг. А вот НКА в чистом виде не подойдут, потому что НКА и ДКА распознают лишь регулярные грамматики, а вот «регулярные выражения» в духе Perl задают более обширный класс грамматик, если не изменяет память, не укладывающийся и в контекстно-свободные.

Нет никакого смысла использовать НКА, если всё равно любой НКА можно преобразовать в ДКА.
если не изменяет память, не укладывающийся и в контекстно-свободные

Было бы грустно, если бы это было так. Как раз-таки укладывается в контекстно-свободные (как и большинство ЯП), но не укладываются в регулярные.
Нет никакого смысла использовать НКА, если всё равно любой НКА можно преобразовать в ДКА.

А это же извечный торг «скорость <-> память», нужно выбирать в зависимости от ситуации.

Мне однажды пришлось написать на коленке упрощенный поиск по wildcard (поддерживались * и ?, но не [ ]). Так вот там получилось очень хорошо применить НДА, который предусматривает возможность нахождения во множестве состояний. Смутно представляю, как бы я там использовал ДКА.
Ах не заметил я запятую между Pattern и Matcher, все же спасибо за статью.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации