Regex boost
От: Аноним  
Дата: 04.02.08 11:35
Оценка:
Здравствуйте помогите написать регулярное выражение использую boost:

bool ValidateByRegex(CString & text, CString & regexp)
{
    try
    {


        if(!regexp.IsEmpty())
        {
            boost::regex r((LPCTSTR)(CString(TEXT("("))+regexp+TEXT(")")) );
            boost::cmatch what;
            if(!boost::regex_match((LPCTSTR)text, what, r))
                return false;
        }
    }
    catch (...)
    {
        return false;
    }
    return true;
}


Мне нужно так:
Строка считается правильной, если первый символ -1, затем может идти любое количество символов, не являющихся цифрой, потом идет -5, а заним также любое количество символов, не являющихся цифрами пробую так:


    regex="[-]{1}[1]{1}[^0-9]*[-]{1}[5]{1}[^0-9]?";

но правильная сторка, не проходит проверку
Re: Regex boost
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 04.02.08 15:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Строка считается правильной, если первый символ -1, затем может идти любое количество символов, не являющихся цифрой, потом идет -5, а заним также любое количество символов, не являющихся цифрами пробую так:

А>
А>    regex="[-]{1}[1]{1}[^0-9]*[-]{1}[5]{1}[^0-9]?";
А>

А>но правильная сторка, не проходит проверку

-1[^\d]*-5[^\d]*

?
-- Андрей
Re[2]: Regex boost
От: Аноним  
Дата: 05.02.08 02:53
Оценка:
АК>
АК>-1[^\d]*-5[^\d]*
АК>

АК>?
Так тоже не проходит проверку, а вот так работает:

[-]{1}[1]{1}[^0-9]*[-]{1}[5]{1}[^0-9]*";
Re[3]: Regex boost
От: Андрей Коростелев Голландия http://www.korostelev.net/
Дата: 05.02.08 07:06
Оценка:
Здравствуйте, Аноним, Вы писали:

АК>>
АК>>-1[^\d]*-5[^\d]*
АК>>

АК>>?
А>Так тоже не проходит проверку, а вот так работает:

А>
А>[-]{1}[1]{1}[^0-9]*[-]{1}[5]{1}[^0-9]*";
А>


Может слэш забыл экранировать? На каком тесте не работает?
-- Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.