2013-05-17 3 views
0

Я использую SLRE (https://code.google.com/p/slre/)SLRE регулярное выражение не будет работать

Я проверка 15 строк с различными регулярными выражениями в том, как:

struct slre  slre; 
struct cap   captures[4 + 1]; 
int i = 0; 
int numberOfSettings = 15; 
for (i; i < numberOfSettings; i++) { 
    if (!slre_compile(&slre, settings[i].regex)) { 
     printf("Error compiling RE: %s\n", slre.err_str); 
    } 
    else if (!slre_match(&slre, settings[i].value, strlen(settings[i].value), captures)) { 
     printf("\nSetting '%s' does not match the regular expression!", settings[i].internName); 
    } 
} 

Регулярное выражение, я использую (settings[i].regex) для разбора IP-адрес является:

^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])[.]){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ 

значение для проверки (settings[i].value) является 8.8.8.8

Я использую те же регулярные выражения, что и для javascript, и они работают по назначению.

У кого-нибудь есть идея, почему это вернет ложь?

ответ

2

SLRE не поддерживает | - см. Раздел «Поддерживаемый синтаксис» в slre.h.

(Если у вас нет особых причин не делать этого, я бы рекомендовал использовать PCRE.)

+0

Лол, я мог бы найти, что тоже ... ^^ Спасибо! Btw Я использовал системную библиотеку regex.h сейчас. – kaljak

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