昨天刚弄完qt的正则表达式,被告知项目不使用qt5相关库进行开发,o(╯□╰)o那没办法了,在不可以引入新库的情况下,那就选用c++11的库吧。
不过在使用c++11库的时候,想要实现以下正则表达式(?<=HOST).*?(?=(PORT|$)),一直报错,没成功,原本是希望匹配HOST后面到PORT前面之间的字符,不知道为啥每次使用
(?<=exp) | 匹配exp后面的位置 |
都不成功,希望有高手看到的话可以帮忙答疑一下下。
最后就折中以下,使用(HOST).*?((?=PORT|$))进行处理了
需添加#include <regex>,代码如下:
std::string test = "(ADDRESS = (PROTOCOL = TCP)(HOST = needreplace)(PORT = 1521))";
std::regex rex("(HOST).*?((?=PORT|$))");
std::string fmt = "HOST = newhost)(";
std::string ret = std::regex_replace(test, rex, fmt);
std::cout<<"ret = "<<ret<<std::endl;
std::cout<<"test = "<<test<<std::endl;
运行截图:
反正也是可以达到目的吧。由于时间原因先暂时记录以下,等知道原因了再来补充。