首页 > 解决方案 > 字符串文字不会有正则表达式的结尾

问题描述

我正在尝试使用这个正则表达式

^((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""吗?

标签: c++regex

解决方案


不,如果您查看字符串文字的参考,您会发现最小的原始字符串文字需要是R"()".

您可以在"和之间添加其他分隔符(,这些分隔符必须与 和 之间的分隔符)匹配"。例如R"~~(hello world)~~"包含字符串文字“hello world”。


推荐阅读