c++ 11 regex_replace奇怪的行为
C++11 regex_replace weird behaviour
谁能给我解释一下为什么这段代码会导致下面的输出:
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main(void) {
std::string test_string("foo.bar.baz.<name>:<value>|@<rate>|#tag:<tag>");
if (std::regex_match(test_string, std::regex(".*(<name>).*"))) {
std::cout << "MATCH!" << std::endl;
} else {
std::cout << "NO MATCH!" << std::endl;
}
test_string = std::regex_replace(test_string, std::regex(".*(<name>).*"), "master");
std::cout << test_string << std::endl;
return 0;
}
输出:[root@88c9be66f008 tmp]# ./test
MATCH!
master
在我看来,运行时间被打破了。在下面的页面上搜索regex,没有实现。
https://gcc.gnu.org/onlinedocs/libstdc + +/手册/status.html # status.iso.2011
regex_replace
不修改它的参数,它返回一个新的字符串。试试这个:
test_string = std::regex_replace(test_string, std::regex(".*(<name>).*"), "master");
相关文章:
- 此模式的C++RegEx
- C++ std::regex 使用前瞻失败
- std::regex:匹配由数字和空格组成的字符串,并提取数字.如何?
- 使用 boost::regex 从目录中获取带有一些正则表达式的文件名称时出现意外输出
- 你能防止 std::regex 在无效表达式上抛出异常吗?
- 如何使用字符串::replace方法写入文件
- 使用Regex解析cpp中的字符串并创建映射
- C++:如何用split查找单词?Regex
- 在VC2015U3上,std::regex比boost::regex慢得多
- 是否有更有效的方法来生成日期的REGEX字符串
- 在C++中使用带有regex的捕获组
- 将std::regex设置为静态的好主意吗
- 为什么Regex(c++)需要指数时间
- std::regex and dual ABI
- C++11 std::regex后备选项
- 以不同的方式替换每一项,regex c++
- 使用 boost::regex (c++) 比较两个正则表达式
- 如何在插入排序中使用 replace() 使语句变得不必要
- Build Boost Regex for Windows VS2013
- CMake中的奇怪字符串(REGEX REPLACE)行为