C++ 正则表达式不匹配多行字符串

标签 c++ regex

当我匹配的字符串是多行字符串时,我在使用 C++0x 正则表达式时遇到问题。 这是我尝试使用的代码片段:

std::smatch regMatch;
std::string data = "<key>id</key><string>1</string>\n<key>user</key><string>admin</string>";
if (std::regex_match(data, regMatch, std::regex("<key>user</key><string>(.*?)</string>"))) {
    std::cout << "Reg match: " << regMatch[1].str() << std::endl;
}

最佳答案

您应该使用 regex_search 而不是 regex_match

顺便问一下,为什么不用 (.*) 而不是 (.*?)

关于C++ 正则表达式不匹配多行字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366324/

相关文章:

c++ - 在类之间共享成员函数

java - 在Java中将标签与正则表达式匹配并剥离它们

c++ - 在 C++ 中加速算法

c++ - 一个进程如何能够获得许多CPU周期?

c++ - 为什么要明确 move 转发引用?

javascript - javascript源代码中匹配函数的正则表达式?

java - 如何根据两种正则表达式格式拆分字符串?

python - 如何在python中用正则表达式替换未包含在标签中的子字符串

正则表达式拉出 2 个下划线之间的字符串

c++ - 从基于 QObject 的类继承构造函数