代码如下
#include <iostream>
#include <regex>
using namespace std;
static void search_by_regex(const char *regex_s,
const string &s)
{ // ①
regex reg_ex(regex_s);
smatch match_result; // ②
cout.width(14); // ③
if (regex_search(s, match_result, reg_ex))
{ // ④
cout << regex_s << ": \"" << match_result[0] << "\"" << endl; // ⑤
}
}
int main()
{
string s("_AaBbCcDdEeFfGg12345!@#$% \t"); // ⑥
search_by_regex("[[:alnum:]]{5}", s); // ⑦
search_by_regex("\\w{5,}", s); // ⑧
search_by_regex(R"(\W{3,5})", s); // ⑨zz
search_by_regex("[[:digit:]]*", s); // ⑩
search_by_regex(R"(/[[:digit:]]*)", s); // ⑩
search_by_regex(".+", s); // ⑪
search_by_regex("[[:lower:]]?", s); // ⑫
search_by_regex(R"(/[[:lower:]]?/g)", s); // ⑫
return 0;
}
输出结果
[[:alnum:]]{5}: "AaBbC"
\w{5,}: "_AaBbCcDdEeFfGg12345"
\W{3,5}: "!@#$%"
[[:digit:]]*: ""
.+: "_AaBbCcDdEeFfGg12345!@#$% "
[[:lower:]]?: ""
为什么表达式[[:digit:]]*
和[[:lower:]]?
匹配的输出结果为空呢?
万分感谢!
这两个都可以匹配空串,所以他们都匹配上了(句首的)空串。