Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2017, 16:50   #1
firafs
 
Регистрация: 12.07.2012
Сообщений: 6
По умолчанию Регулярные выражения. Поиск номеров

Доброго времени суток!

Задача - найти номер телефона (рассматриваем самый простой вариант в формате "7хххххххххх") в RichEdit и закинуть в StringGrid. Ниже мой код:

Код:
{
    AnsiString as1 = RichEdit1->Text;
    TStringList * MyList = new TStringList(); 
    MyList->Delimiter = L'.';
    MyList->DelimitedText = as1;
    delete MyList;
 
    std::string xStr(as1.c_str());
    std::string compStr;
    regex xRegEx("\d{10,}");
 
    smatch xResults;
    std::string::const_iterator xItStart = xStr.begin();
    std::string::const_iterator xItEnd = xStr.end();
 
    for (int i = 1; regex_search(xItStart, xItEnd, xResults, xRegEx); i++) {
        std::string s2 = std::string(xResults[0]);
        StringGrid1->Cells[1][k] = (s2.c_str());
        xItStart = xResults[i].second;
        }
}
Вопрос в следующем: в ходе обработки текста "Мой номер 79288832519" программа проскакивает цикл и, соответственно, искомого результата не выводит (выражение и текст это лишь простой пример, не хочу загружать вас лишней информацией). Если "\d{10,}" заменить на "([А-ЯЁ][а-яё]+[\-\s]?){1,3}" (использовал когда-то давно для поиска слов, начинающихся с заглавной буквы) и закинуть какой-нибудь текст, то все слова, написанные с заглавной буквы, определяются верно. Исходя из этого сделал вывод, что код рабочий. RAD Studio XE5

Подскажите, пожалуйста, в чем может быть загвоздка или в каком направлении копать.

Регулярные выражения проверял онлайн-сервисом

Спасибо.
firafs вне форума Ответить с цитированием
Старый 06.11.2017, 17:49   #2
firafs
 
Регистрация: 12.07.2012
Сообщений: 6
По умолчанию

подсказали верное выражение, сам чего-то перемудрил
"[0-9]{10,}" если кому-то будет полезно
firafs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения.Поиск нескольких строк подряд -Jack- Паскаль, Turbo Pascal, PascalABC.NET 0 23.09.2017 04:53
Регулярные выражения UKRtortik PHP 14 10.06.2014 18:51
Регулярные выражения Xcopy Общие вопросы по программированию, компьютерный форум 1 13.10.2013 01:27
Регулярные выражения - поиск пустой строки furstenberg Общие вопросы Delphi 15 27.08.2012 18:10
Регулярные выражения Dima_D Общие вопросы Delphi 0 11.08.2010 21:16