版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/infoworld/article/details/79077213
场景
1.正则表达式查询特定规则的字符串十分高效率, 有一些规则的字符串, 如果不用正则, 单是枚举+逻辑记录匹配的代码量就非常大.
2.比如查找一个小写字符串里连续相同的字母, 之后把它替换为 Xn(大写字母和重复字母个数)的方式进行加密. 正好正则表达式有专门的反向引用来解决查找重复字符的问题.
例子
void TestBackreference()
{
std::string line = "trellis lLlama webbing dresser swagger";
std::regex pattern("(\\w)\\1+",std::regex_constants::icase);
std::smatch word_match;
while (std::regex_search(line, word_match, pattern)) {
std::cout << word_match.str() << '\n';
line = word_match.suffix();
}
}
输出
ll
lLl
bb
ss
gg
参考
regular-expression-language-quick-reference
backreference-constructs-in-regular-expressions
how-can-i-find-repeated-letters-with-a-perl-regex