Ваша строка "\.bmp$"
экранирована сама по себе, отсюда и ошибка. D думает, что вы пытаетесь экранировать .
в строке, но \.
не является допустимой escape-последовательностью.
Обратите внимание, что это не относится к D; C ++ выдает ту же ошибку .
const char* regex = "\.bmp$";
Компиляция с g ++ 4.3.4 дает:
prog.cpp:1: error: unknown escape sequence '\.'
У вас есть два варианта:
- Избегайте
\
в вашей строке, т.е. "\\.bmp$"
.
- Использовать строковый литератор, т. Е.
r"\.bmp$"
. Необработанные строковые литералы игнорируют все escape-последовательности. Они разработаны специально для таких вещей, как шаблоны регулярных выражений.