![]() |
|
Модераторы: Poseidon |
![]()
|
|
| BukeMan |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.11.2010 Репутация: нет Всего: нет |
Здравствуйте!
Прошу вас помощи разобраться в чем проблема моего использования regex. Есть у меня такая функция:
как вы можете видеть, она находит email адрес в заданной строке. но, увы она не всегда выдает корректный результат. например при подаче на вход строки типа:
оно мне выдаст: [email protected] Web вместо корректного [email protected] Подскажите пожалуйста в каком месте баг, и как мне сделать так, что б оно НЕ включало в результат поиска что-либо после домена верхнего уровня. |
||||
|
|||||
| t_gran |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 13.11.2007 Где: г.Усть-Илимск Репутация: 33 Всего: 37 |
BukeMan, у вас ошибка в самом регулярном выражении:
[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,4} Вспоминайте, что такое точка в свободном виде? Правильно, любой символ. Вот и получается, что у вас в вашем случае любой символ это пробел. Наверное нужно было вот так: [A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]{2,4} Это сообщение отредактировал(а) t_gran - 16.11.2010, 03:56 -------------------- Я знаю, что ничего не знаю© Сократ ![]() |
|||
|
||||
| BukeMan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.11.2010 Репутация: нет Всего: нет |
t_gran, спасибо Вам большое! действительно после взятия точки в квадратные скобки результат поиска выдает верно.
Я еще не сильно разобрался в регулярных выражениях, т.к. не могу найти толкового хелпа... в MSDN VS2008 там вообще примеры очень скудные. Если Вам не трудно, помогите пожалуйста еще по двум вопросам касающимся регулярных выражений. 1) как задать маску так, что б в качестве первого символа email принимались только буквы? дело в том, что если перед адресом будет какой-либо из символов ( - . _ ), то вышеуказанная маска ("[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]{2,4}") включит их в результат поиска. например: при подаче на вход строки "some text [email protected] something else" результатом будет: [email protected] реально ли задать маску таким образом, что б результат был: [email protected] 2) и второй вопрос: как можно продолжить поиск в текущей строке? нипример если найдено совпадение, но в данной строке есть еще один email... |
|||
|
||||
| ИванМ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
^ - начало строки $ - конец строки \. - точка * - ноль или больше символов Добавлено @ 19:54 Только для такого выражения лучше использовать regex_match. А для того, что бы найти несколько e-mail, нужно пользоваться как раз regex_search.
Но тогда начало и конец строки не проверить. Нужно еще раз проверять перед началом поиска на начало и конец. Это сообщение отредактировал(а) ИванМ - 18.11.2010, 20:02 |
||||
|
|||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |