Здравствуйте, Аноним, Вы писали:
А>нужно составить регулярное выражение проверка на совпадение которого была бы 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 поиска)