Russian Qt Forum
Ноябрь 24, 2024, 21:03 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Регулярка для QRegExp.  (Прочитано 9259 раз)
setjmp
Гость
« : Август 21, 2010, 19:52 »

Помогите написать регулярное выражение для поиска e-mail адресов в тексте. Нашел в интернете множество, но ни один из них не работает в qt при помощи класса QRegExp. Заранее очень благодарен.
Записан
merke
Гость
« Ответ #1 : Август 21, 2010, 20:32 »

Можешь поступить по другому не используя регекспы, в цикле проходи твой текст, как только нарываешься на @(собачку) вырезай например mid'ом мыльник от позиции собачки влево до первого пробела и до позиции пробела справа от собачки.

 
Записан
BRE
Гость
« Ответ #2 : Август 21, 2010, 20:35 »

Можешь поступить по другому не используя регекспы, в цикле проходи твой текст, как только нарываешься на @(собачку) вырезай например mid'ом мыльник от позиции собачки влево до первого пробела и до позиции пробела справа от собачки.
А если это будет чем-то типа этого?
djfhdksjfh dfsf@sdfsdfd@dfsdfsdfsdf sdfsdf
Записан
setjmp
Гость
« Ответ #3 : Август 21, 2010, 20:41 »

Можешь поступить по другому не используя регекспы, в цикле проходи твой текст, как только нарываешься на @(собачку) вырезай например mid'ом мыльник от позиции собачки влево до первого пробела и до позиции пробела справа от собачки.
А если это будет чем-то типа этого?
djfhdksjfh dfsf@sdfsdfd@dfsdfsdfsdf sdfsdf
В проекте уже много раз используются рекспы в  других случаях. Не вижу смысла что то делать по другому уж теперь. 
Записан
merke
Гость
« Ответ #4 : Август 21, 2010, 20:43 »

в инете море примеров где используются рекспы для выбирания мыльников, поищи хорошо
Записан
merke
Гость
« Ответ #5 : Август 21, 2010, 20:46 »

например вот: заточи под кути /^([a-z,0-9,_,\-,\.])+\@([a-z,0-9,_,\-])+(\.([a-z,0-9])+)+$/
Записан
merke
Гость
« Ответ #6 : Август 21, 2010, 20:48 »

вот ещё ^[0-9a-z][.\-\w]*@(?:[0-9a-z][\-0-9a-z]*[0-9a-z]\.)+[a-z]{2,6}$
Записан
merke
Гость
« Ответ #7 : Август 21, 2010, 20:49 »

Вот заточка на кутях QRegExp re("^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$")
Записан
setjmp
Гость
« Ответ #8 : Август 21, 2010, 20:52 »

Вот нарыл. Дам пример с кодом:
Код:
QStringList Core::GetMail(QString from2)
{
    QRegExp rx2("[a-zA-Z]{1}[a-zA-Z\\d\\u002E\\u005F]+@([a-zA-Z]+\\u002E){1,2}((net)|(com)|(org))");
    rx2.setMinimal(true);
    QStringList list2;
    int pos2 = 0;
    while ((pos2 = rx2.indexIn(from2, pos2)) != -1)
        {
                list2 << rx2.cap(1);
                pos2 += rx2.matchedLength();
        }

return list2;
}

Код:
QString buff2 = "Моё мыло hrom@xakep.ru";
    QStringList mail = core.GetMail(buff2);
    ui->listWidget->addItems(mail);
Возможно проблема не в регулярки?
Записан
zenden
Гость
« Ответ #9 : Август 22, 2010, 12:03 »

Кто-нибудь знает, собирается ли Nokia сделать нормальный Regexp
Я имею ввиду совместимый с общепризнанным стандартом PCRE ?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Август 22, 2010, 12:13 »

Цитировать
QRegExp is modeled on Perl's regexp language.
Вам что-то не нравится? В любом случае, где бы мне не приходилось юзать регулярки, они были свои
Записан
zenden
Гость
« Ответ #11 : Август 22, 2010, 14:03 »

Не устраивает хотя бы тем, что не поддерживает символ '?' для обозначения ленивых квантификаторов
и из-за этого теряется совместимость даже с простейшими регулярками.
Записан
crossly
Гость
« Ответ #12 : Август 22, 2010, 14:07 »

Цитировать
Не устраивает хотя бы тем, что не поддерживает символ '?' для обозначения ленивых квантификаторов
перед тем как распалятся нужно внимательно читать документацию.... setMinimal(bool)
Записан
zenden
Гость
« Ответ #13 : Август 22, 2010, 14:12 »

Цитировать
Не устраивает хотя бы тем, что не поддерживает символ '?' для обозначения ленивых квантификаторов
перед тем как распалятся нужно внимательно читать документацию.... setMinimal(bool)

Я внимательно читаю документацию, и про эту функцию знаю, но она не является эквивалентом символа '?' и не делает выражения совместимыми. Она устанавливает нежадность для всего выражения, а  '?' только для одного квантификатора.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.281 секунд. Запросов: 23.