当前位置:

C++正则表达式在程序设计天梯赛的应用

访客 2024-01-05 1525 0

正则表达式

正则表达式的基本语法

"6{3}":要求数字6出现3次"6{10,}":连续的数字6至少出现10次"6{4,9}":连续的数字6至少出现4次,至多出现9次".":表示一个任意字符"^a":要求字符串以字符a开头"b$":要去字符串以字符b结尾"[abc]":表示该字符是abc三个字符中的任意一个"[^abc]":表示该字符不是abc三个字符中的任意一个"[a-z]":表示一个字符,该字符是任意一个小写字母"[^a-z]":表示一个字符,该字符不是任意一个小写字母"\w":表示一个字符,是数字字母下划线中的任意一个"\W":表示一个字符,不是数字字母下划线中的任意一个"\d":表示一个字符,是数字0-9中的任意一个"\D":表示一个字符,不是数字0-9中的任意一个"\s":表示一个空白符"a*":要求字符a出现0到多次"a":要求字符a出现1到多次"a?":要求字符a出现0次或1次"\\":所有含有\的元字符,都要写成"\\"

C头文件<regex><regex><regex>中的函数

regex_match(fa_str,regex(son_str)):若子串son_str与母串fa_str完全匹配,返回true否则为falseregex_search(fa_str,regex(son_str)):若母串fa_str包含子串son_str,返回true否则为falseregex_replace(fa_str,regex(son_str),str):先复制一个fa_str,再用字符串str替换fa_str中所有符合son_str这一正则表达式的子串返回值为替换后的母字符串

第四届程序设计天梯赛选题

以下三题难度逐题递增,但利用正则表达式,均可秒杀题目,而无需写大模拟浪费时间

L1-26翻了

题目链接L1-26翻了
10行代码实现

#include<bits/stdc.h>#include<regex>usingnamespacestd;intmain(){strings;getline(cin,s);s=regex_replace(s,regex("6{10,}"),"27");s=regex_replace(s,regex("6{4,9}"),"9");cout<<s<<endl;return0;}

L1-3敲笨钟

题目链接L1-3敲笨钟
20行代码实现

#include<bits/stdc.h>#include<regex>usingnamespacestd;strings[25];intmain(){intn;cin>>n;getchar();for(inti=1;i<=n;i)getline(cin,s[i]);for(inti=1;i<=n;i){boolf1=regex_search(s[i],regex("ong,"));boolf2=regex_search(s[i],regex("ong\\."));if(f1&&f2){s[i]=regex_replace(s[i],regex("([^]{1,})([^]{1,})([^\\.]{1,})\\."),"qiaobenzhong.");cout<<s[i]<<endl;}elseputs("Skipped");}return0;}

L1-8估值一亿的AI核心代码

题目链接L1-8估值一亿的AI核心代码
20行代码实现

#include<bits/stdc.h>#include<regex>usingnamespacestd;strings;voidf(strings1,strings2){s=regex_replace(s,regex(s1),s2);}voiddelete_space(){f("",""),f("^",""),f("$","");f(",",","),f("\\.","."),f("!","!"),f("\\?","?");f("'","'");}voidto_lower(){for(auto&i:s)if(i!='I')i=tolower(i);}voidreplace(){f("\\bcanyou\\b","_Ican"),f("\\bcouldyou\\b","_Icould");f("\\bI\\b","you"),f("\\bme\\b","you"),f("\\b_Ican\\b","Ican");f("\\b_Icould\\b","Icould"),f("\\?","!");}voidsolve(){delete_space(),to_lower(),replace();}intmain(){intn;cin>>n;getchar();while(n--){getline(cin,s);cout<<s<<endl<<"AI:";solve();cout<<s<<endl;}return0;}

发表评论

  • 评论列表
还没有人评论,快来抢沙发吧~