Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 8
1

Регулярные выражения. Поиск номеров

06.11.2017, 01:55. Показов 1879. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
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}" (использовал когда-то давно для поиска слов, начинающихся с заглавной буквы) и закинуть какой-нибудь текст, то все слова, написанные с заглавной буквы, определяются верно. Исходя из этого сделал вывод, что код рабочий.

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

Регулярные выражения проверял здесь

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2017, 01:55
Ответы с готовыми решениями:

Регулярные выражения, Поиск всех видов чисел в строке, CString
Здравствуйте Уважаемые Дамы и Господа. Уже какой вечер мучаюсь, пытаюсь понять как решить...

Регулярные выражения с++
Пользователь должен ввести строки: фамилию(первая буква должна быть заглавной), дату рождения(по...

Регулярные выражения
Даны следующие металингвистические формулы: <Цифра> :: = 0|1|2|3|4|5|6|7|8|9 <Число> :: = <...

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

1
0 / 0 / 0
Регистрация: 12.07.2012
Сообщений: 8
06.11.2017, 21:10  [ТС] 2
Прошу прощения, тему не в том разделе создал. япо возможности перенесите в раздел Boost

Добавлено через 8 часов 12 минут
подсказали верное выражение, сам чего-то перемудрил
"[0-9]{10,}" если кому-то будет полезно
0
06.11.2017, 21:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2017, 21:10
Помогаю со студенческими работами здесь

Регулярные выражения
Здравствуйте, задали задание, связанное с регулярными выражениями, можете на одном примере...

Регулярные выражения
Стоит задача, проверить является ли вводимая строка заданной маской. Но маска(регулярное выражение...

Регулярные выражения
Всем доброе утро. Ребята подскажите что не так в выражении вот шаблон регулярного выражения...

Регулярные выражения.
Здравствуйте всем! Имеется массив строк. Надо написать программу с функцией реализующей выявления...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru