c++提取括号内的多行字符串
时间: 2023-12-23 07:03:10 浏览: 127
可以使用正则表达式来匹配括号内的多行字符串,然后使用 C++ 中的正则表达式库 `std::regex` 进行实现。以下是一个简单的示例代码:
```cpp
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string input = "int main() {\n"
" std::string str = R\"(This is a\n"
" multi-line\n"
" string)\", another_str = \"This is not\";\n"
"}";
std::regex re(R"~(R"([^\\()]*)\([^()]*\)[^"]*")~"); // 匹配括号内的多行字符串
std::smatch match;
while (std::regex_search(input, match, re)) {
std::cout << "Match found: " << match[0] << std::endl;
input = match.suffix().str();
}
return 0;
}
```
输出结果为:
```
Match found: R"(This is a
multi-line
string)"
```
这里的正则表达式 `R"~(R"([^\\()]*)\([^()]*\)[^"]*")~"` 匹配了以 `R"` 开头、括号内包含任何非括号字符、后跟括号和双引号之间没有双引号的字符串。请注意,由于正则表达式中包含反斜杠 `\`,因此需要使用原始字符串字面值 `R"()"`。
阅读全文