[C/C++]_[初级]_[正则表达式的反向引用]

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/infoworld/article/details/79077213