【正则】万万没想到之聪明的编辑

题目地址
其实一看到这个题目就想到要用正则,but正则一开始实在是不怎么会,所以琢磨了很久。目前看到的题解都不是使用正则,都写了一堆。正则只要表达式写对了就真的非常简单了。(然而表达式就是最难的啊啊啊!!!!)
ps,因为反正输入的都是字母所以其实在这里\w和[a-zA-Z]效果一样,但是他们两个当然是不一样的辣!

():group,就这么分组了,组1表示为$1,组2表示为$2,以此类推。\1也是表示组1,但是这就是在正则表达式里面的表示了。

and,记得两个\!!!

#include 
using namespace std;
int main()
{
    int n;
    scanf("%d",&n);
    getchar();
    while(n--)
    {
        string str;
        getline(cin,str);
        str = regex_replace(str,regex("([a-zA-Z])\\1{2,}"),"$1$1"); 
        str = regex_replace(str,regex("(\\w)\\1{1}(\\w)\\2{1}"),"$1$1$2"); 
        cout<<str<<endl;
    }
    return 0;
}

觉得有用就点赞收藏评论吧~(真不容易,泪目)

你可能感兴趣的:(笔记,正则表达式,c++)