私信TA

用户名:wowowow

访问量:5518

签 名:

等  级
排  名 1862
经  验 2596
参赛次数 1
文章发表 9
年  龄 0
在职情况 学生
学  校
专  业 软件工程

  自我简介:

脑袋要炸

解题思路:使用正则表达式匹配


注意事项:

匹配 0到99的正则表达式是:[0-9]?\d(问号是匹配前面的字符零或一次)

匹配 100到199的正则表达式是:1\d{2}是以1开头,后边有2个数值的三位数

匹配 200到249的正则表达式是:2[0-4]\d是以2开头,中间是0到4之间的数值,最后是0到9之间的数字的三位数

匹配 250到255的正则表达式是:25[0-5],含义就是以25开头,后边是0到5之间的数值的三位数


所以为了匹配0到255之间的数字,正则表达式为:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d

ip是(数值.数值.数值.数值)的格式,就是三个数值加点和一个数值,即是(数值.){3}(数值)

所以正则表达式是(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)




参考代码:

#include<bits/stdc++.h>

using namespace std;

int main(){
	string str;
	regex re("((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)");
	while(cin>>str){
		if(str=="End"){
			break;
		}
		if(regex_match(str,re)){
			cout<<"Y"<<endl;
		}else{
			cout<<"N"<<endl;
		}
	}
	return 0;
}


 

0.0分

5 人评分

  评论区

这就是正则表达式吗,瞬间变得好简单,比数组和字符串分割简单多了,厉害
2022-11-23 21:17:22
  • «
  • 1
  • »