1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include <iostream>
#include <string>
#include <regex>
using namespace std;
int main()
{
while (true)
{
cout << "Enter a pattern or plain Enter to stop: ";
string pattern;
if (not getline(cin, pattern) or pattern.empty())
break;
regex re(pattern);
while (true)
{
cout << "Enter a target text for `" << pattern << "'\n"
"(plain Enter for the next pattern): ";
string text;
if (not getline(cin, text) or text.empty())
break;
smatch results;
if (not regex_search(text, results, re))
cout << "No match\n";
else
{
cout << "Prefix: " << results.prefix() << "\n"
"Match: " << results.str() << "\n"
"Suffix: " << results.suffix() << "\n";
for (size_t idx = 1; idx != results.size(); ++idx)
cout << "Match " << idx << " at offset " <<
results.position(idx) << ": " <<
results.str(idx) << '\n';
}
}
}
}
|