#c #regex
#c #регулярное выражение
Вопрос:
Я пытаюсь использовать это регулярное выражение
^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(.(?!$)|$)){4}$
для анализа адресов IPV4
Я попытался поместить его в необработанный строковый литерал:
std::regex ipv4(R"^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(.(?!$)|$)){4}$");
но я получаю ошибку:
main.cpp:14:4: error: expected ';' at end of declaration
}
потому что компилятор не может найти конец строкового литерала. Что я делаю не так? Разве я не должен просто помещать вещи внутрь R""
?
Ответ №1:
Нет, если вы посмотрите на ссылку для строковых литералов, вы увидите, что минимальный необработанный строковый литерал должен быть R"()"
.
Вы можете использовать дополнительные разделители между "
и (
, которые должны соответствовать разделителям между )
и "
. например R"~~(hello world)~~"
, содержит строковый литерал «hello world».
Комментарии:
1. Лучшая ссылка в сети.