Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Регулярные выражения. Поиск номеров 
V
    Опции темы
firafs
Дата 6.11.2017, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.9.2012

Репутация: нет
Всего: нет



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

Задача - найти номер телефона (рассматриваем самый простой вариант в формате "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

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

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

Спасибо.
PM MAIL   Вверх
Romikgy
Дата 6.11.2017, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 11
Всего: 146



Код

[0-9]{10,}

?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
firafs
Дата 6.11.2017, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.9.2012

Репутация: нет
Всего: нет



Цитата(Romikgy @ 6.11.2017,  17:36)
Код

[0-9]{10,}

?

так работает. перемудрил)

Спасибо 
PM MAIL   Вверх
xvr
Дата 7.11.2017, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Копать в сторону удвоения обратного слеша - экранирование в С строках никто не отменял (даже для regexp'ов)  smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1407 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.