当前位置:   article > 正文

PTA 估值一亿的AI核心代码 正则表达式 regex_replace_ai正则表达式 开源

ai正则表达式 开源

https://pintia.cn/problem-sets/994805046380707840/problems/1111914599412858885
在这里插入图片描述思路:去年天梯赛的一道题,虽然只有 20 20 20分,但是当时愣是当成大模拟写了,巨恶心,最近了解到了 C + + C++ C++ r e g e x regex regex,突然想到这道题, w o c woc woc,正则匹配替换直接秒杀啊。

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int t;
    scanf("%d\n",&t);
    while(t--)
    {
        string s;
        getline(cin,s);
        cout<<s<<endl;
        s=regex_replace(s,regex(" +")," ");//多个空格
        if(s.size()&&s[0]==' ')
            s.erase(0,1);
        if(s.size()&&s[s.size()-1]==' ')
            s.erase(s.size()-1,1);
        s=regex_replace(s,regex(" *,"),",");//处理标点符号
        s=regex_replace(s,regex(" *;"),";");//处理标点符号
        s=regex_replace(s,regex(" *\\."),".");//处理标点符号
        s=regex_replace(s,regex(" *\\?"),"!");//处理标点符号
        s=regex_replace(s,regex(" *!"),"!");//处理标点符号
        s=regex_replace(s,regex(" *'"),"'");//处理标点符号
        for(char &c: s) //大写改小写
            if(c>='A'&&c<='Z'&&c!='I')
                c=c-'A'+'a';           // \b 匹配单词边界的位置
        s=regex_replace(s,regex("\\bcan you\\b"),"_I can");//处理can you
        s=regex_replace(s,regex("\\bcould you\\b"),"_I could");//处理could you
        s=regex_replace(s,regex("\\bI\\b"),"you");//处理I
        s=regex_replace(s,regex("\\bme\\b"),"you");//处理me
        s=regex_replace(s,regex("_I\\b"),"I");//处理_I
        cout<<"AI: "<<s<<endl;
    }
    return 0;
}

  • 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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/446008
推荐阅读
相关标签
  

闽ICP备14008679号