Re: Подскажите с регулярным выражением
От: php-coder Чехия http://slava-semushin.blogspot.com
Дата: 22.06.08 20:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>нужно составить регулярное выражение проверка на совпадение которого была бы true если в исходной строке НЕ присутствуют заданные строки.

А>например если в строке не присутствуют .exe и .dll, то подходит

Вам какие регулярные выражения-то нужны? Ну, например, в boost::regex (см. также эту доку: http://www.onlamp.com/lpt/a/6535) можно так: .+\.(exe|dll)$

А может вам и вовсе без них обойтись? Скажем можно так:

if (strstr(your_string, ".exe") == NULL && strstr(your_string, ".dll") == NULL) {
    return true;
}

return false;


Это пример на С, в С++ используйте string::find().

А можно и так:
#define EXTENSION_SIZE 4

const size_t str_size = strlen(your_string);
const char *extension_start = your_string + str_size - EXTENSION_SIZE;
if (str_size > EXTENSION_SIZE && (strcmp(extension_start, ".exe") == 0 || strcmp(extension_start, ".dll") == 0)) {
    return true;
}

return false;


В данном случае будет сравниваться последние четыре символа строки на совпадение. (Можно использовать strcasecmsp() вместо простого strcmp() для получения case insensitive поиска)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.