我有一个包含以下内容的字符串:"(5 {})(12 {})"
如何使用正则表达式提取到两个字符串变量子串中,如下所示:
string1 ="(5 {})"
string2 ="(12 {})"
我对一个匹配的模式感兴趣,让我提取这些子串,当它们不仅仅是2但更像是这样:"(5 {})(12 {})(2 { })(34 {})"
答案 0 :(得分:2)
这应该适合你:
#include <iostream>
#include <iterator>
#include <regex>
#include <string>
int main()
{
std::string s = "(5 {}) (12 {}) (2 {}) (34 {})";
std::regex re{R"((\([0-9]+? \{\}\)))"};
using reg_itr = std::regex_token_iterator<std::string::iterator>;
for (reg_itr it{s.begin(), s.end(), re, 1}, end{}; it != end;) {
std::cout << *it++ << "\n";
}
}
答案 1 :(得分:1)
使用std::regex_iterator
遍历字符串中的所有匹配项。
#include <iostream>
#include <regex>
#include <string>
int main() {
std::string subject = "(5 {}) (12 {}) (2 {}) (34 {})";
std::regex pattern(R"((\d+ \{\}))");
for (auto i = std::sregex_iterator(subject.begin(), subject.end(), pattern); i != std::sregex_iterator(); ++i) {
std::cout << i->str() << '\n';
}
}