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""
吗?
解决方案
不,如果您查看字符串文字的参考,您会发现最小的原始字符串文字需要是R"()"
.
您可以在"
和之间添加其他分隔符(
,这些分隔符必须与 和 之间的分隔符)
匹配"
。例如R"~~(hello world)~~"
包含字符串文字“hello world”。
推荐阅读
- node.js - 无法在 nodejs 中获取 /uploads/images/
- android - unity原生OpenGL纹理显示四次
- ios - ld:未找到架构 x86_64(领域)的符号
- php - error_reporting(E_ALL) 失败,没有日志或错误消息
- python - 尝试在 pip 的帮助下安装 python 包
- ios - 在 iOS 中调试时推送 viewController 不起作用
- excel - 合并后用工作簿名称命名工作表?
- python - python中声明方法(&self)的问题
- oracle12c - OBIEE 12c。在具有 XML 权限的标题中创建自定义链接
- ssl - 如何识别证书未知错误背后的原因