Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Регулярные выражения


Автор: Strider007 15.3.2011, 18:14
Всем доброго времени суток!

Изучаю регулярные выражения, подключил к Билдеру модуль RegExpr.pas.
Задание в следующем: необходимо проверить, является ли введенное значение телефонным номером с кодом или нет.

Вот код:
Код

TRegExpr *k;
k = new TRegExpr;
k->Expression = "^(\+\d *)?(\(\d+\) *)?\d+(-\d*)*$";
if ((k->Exec(Edit2->Text)==true))
ShowMessage(k->Match[0] + "Правильный номер с кодом");
else if (k->Exec(Edit2->Text)==False)
ShowMessage("Неправильный номер с кодом");


Проблема в самом выражении "^(\+\d *)?(\(\d+\) *)?\d+(-\d*)*$"
при попытке выполнить данный код выдается сообщение об ошибке, содержащее следующий код:

Код
'TRegExpr (comp):?+*{Follows Nothing (pos 3)}'



Помогите разобраться пожалуйста. 

Автор: borisbn 15.3.2011, 19:06
Strider007, в Си/Си++ обратный слэш должен быть двойным, иначе к regex'у попадёт чёрт знает что...
короче, замени в своём коде все \ на \\

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)