2011-01-17 3 views
0

У меня есть одна функция для проверки, является ли введенная строка «ОК».Регулярные выражения, соответствующие

#include <tr1/regex> 

bool lineIsValid(string line) { 
    const tr1::regex pattern("[^-]{1,30} - [^-]{1,30}"); 
    return tr1::regex_match(line, pattern); 
} 

lineIsValid("test - test"); 

функция возвращает false. Зачем?

+0

Это подходит для меня. Вы уверены, что ваш ввод идентичен тому, что вы разместили здесь? – JaredC

+0

mathces со мной тоже ... – CSharpenter

+0

Ya Я просто скопировал и вставил ваш код, и я правду, дважды проверьте правильность ввода. – DeusAduro

ответ

2

Возможно, синтаксис в порядке, но зависит от реализации. Проверьте это post.

Или this:

После дальнейших исследований, я (мы) определили, что структура TR1 поставляется Microsoft с Visual Studio 2008 [и некоторые очень ранние версии Visual Studio 2010] глючит, что делает меня удивляет, почему другие регулярные выражения, поставляемые Dinkumware, не являются багги. Или они?

+0

+1 для копания этого – JaredC

0

Я бы подумал, что должен соответствовать.

Возможно, существует ошибка в реализации библиотеки tr1? Возможно, это путает с «-», который используется как спецификатор диапазона.

Смежные вопросы