url映射
#include<iostream>
#include<algorithm>
#include<ctype.h>
#include<string>
#include<string.h>
#include<fstream>
#include<vector>
#include<queue>
#include"iomanip"
using namespace std;
string p[],r[];
bool test(string url) //URL地址合法性检测
{
if(url[] != '/') return false; for(int i=;i<url.length();i++)
{
if( (url[i]>='a' && url[i]<='z') || (url[i]>='A' && url[i]<='Z') || (url[i]>='' && url[i]<='') || url[i]=='/' || url[i]=='-' || url[i]=='_' || url[i]=='.')
continue;
else
return false;
}
return true;
}
bool match_str(string url) //str参数匹配
{
for(int i=;i<url.length();i++)
{
if( (url[i]>='a' && url[i]<='z') || (url[i]>='A' && url[i]<='Z') || (url[i]>='' && url[i]<='') || url[i]=='-' || url[i]=='_' || url[i]=='.')
continue;
else
return false;
}
return true;
}
bool match_int(string url)
{
for(int i=;i<url.length();i++)
{
if( (url[i]>='' && url[i]<='') )
continue;
else
return false;
}
return true;
}
bool match_path(string url)
{
for(int i=;i<url.length();i++)
{
if( (url[i]>='a' && url[i]<='z') || (url[i]>='A' && url[i]<='Z') || (url[i]>='' && url[i]<='') || url[i]=='/' || url[i]=='-' || url[i]=='_' || url[i]=='.')
continue;
else
return false;
}
return true;
}
bool match(string url,string p,string r) //url地址与p规则匹配检测
{
//cout<<endl; string s1[],s2[];
int x=,y=;
int first = -,second = -;
for(int i=;i<p.length();i++) //拆分规则p
{ if(p[i] == '/' && first == - ) first = i;
else if(p[i] == '/' && first != - && second == -)
{
second = i;
s1[x] = p.substr(first+,second-first-);
//cout<<s1[x]<<endl;
x++;
first = i;
second = -;
}
else if(i == p.length()- && p[i]!='/')
{
second = i+;
s1[x] = p.substr(first+,second-first-);
//cout<<s1[x]<<endl;
x++;
}
}
//cout<<endl;
first = -,second = -;
for(int i=;i<url.length();i++) //拆分url
{
if(url[i] == '/' && first == - ) first = i;
else if(url[i] == '/' && first != - && second == -)
{
second = i;
s2[y] = url.substr(first+,second-first-);
//cout<<s2[y]<<endl;
y++;
first = i;
second = -;
}
else if(i == url.length()- && url[i]!='/')
{
second = i+;
s2[y] = url.substr(first+,second-first-);
//cout<<s2[y]<<endl;
y++;
}
} int k=,i,j;
r += " ";
for(i=;i<x;i++)
{
if(s1[i] == "<str>")
{
if(match_str(s2[k]) == true)
{
r += s2[k] + " ";
k++;
}
else
break;
}
else if(s1[i] == "<int>")
{
if(match_int(s2[k]) == true)
{
for(j=;j<s2[k].length();j++)
{
if(s2[k][j] != '')
break;
}
r += s2[k].substr(j) + " ";
k++;
}
else break;
}
else if(s1[i] == "<path>")
{
for(j=k;j<y;j++)
{
if(j != y-) r += s2[j] +"/";
else r += s2[j];
}
cout<<r<<endl;
return true;
}
else
{
if(s1[i] == s2[k])
{
k++;
}
else return false;
}
if(k == y) break;
}
if(k == y && i == x-)
{
if((url[url.length()-] == '/' && p[p.length()-] != '/') || (url[url.length()-] != '/' && p[p.length()-] == '/'))
{
//坑点一 : 占了40分,结尾的 / 不是分割符,是属于路径名 (题目未保证最后以/结尾)。 因为是采取以分割符进行分块处理的做法,所以在结尾要判断分割符。
return false;
}
cout<<r<<endl;
return true;
}
return false;
} int main()
{
int n,m;
scanf("%d %d",&n,&m);
for(int i=;i<n;i++)
{
cin>>p[i]>>r[i];
}
for(int i=;i<m;i++)
{
string url;
cin>>url;
if(test(url) == false)
{
cout<<""<<endl;
continue;
}
int j;
for(j=;j<n;j++)
{
if(match(url,p[j],r[j]) == true)
{
break;
}
}
if(j == n) cout<<""<<endl;
}
return ;
}
url映射的更多相关文章
- ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)
本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...
- urlMappings与URL映射
此配置节的作用就是往Web程序中添加URL的映射,从而达到用户访问映射后的URL(如/Page/AAA)也能访问到源URL(如/Page/PageAAA.aspx)的效果.这也是URL映射本来的作用. ...
- django中“url映射规则”和“服务端响应顺序”
1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单. 查看方式: import sys print sys.path ...
- MVC 5 Web编程2 -- URL映射
ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...
- CCF CSP 201803-3 URL映射
转载自 https://blog.csdn.net/tigerisland45/article/details/81697594 /* CCF201803-3 URL映射 */ #include &l ...
- SpringMvc的Url映射和传参案例(转)
Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...
- SpringMvc的Url映射和传参案例
Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...
- 使用 IntraWeb (32) - Url 映射与 THandlers
最简单的 Url 映射是使用 TIWAppForm 的 class 方法: SetURL; THandlers 是 IntraWeb XIV 新增的内容处理器, 它能完成的不仅仅是 Url 映射(转发 ...
- Django - 将URL映射到视图
URLconf 就像是 Django 所支撑网站的目录.它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表.你就是以这种方式告诉 Django,对于这个 URL 调用这段代码, ...
- 搭建RESTful API 之 实现WSGI服务的URL映射
javarestfull 搭建参考 http://blog.csdn.net/hejias/article/details/47424511 问题引出:对于一个稍具规模的网站来说,实现的功能不可能通过 ...
随机推荐
- POJ 1904 King's Quest(强连通)
Language: Default King's Quest Time Limit: 15000MS Memory Limit: 65536K Total Submissions: 7635 ...
- HttpWatch工具简介及使用技巧
一 概述: HttpWatch强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功 ...
- [原]openstack-kilo--issue(二十二) 虚拟机的vnc console图像调用错误
[问题点] 在打开node compute 上vm的vnc console窗口时候发现vm1-compute1调用的是vm1-controller上的vnc图像 =================== ...
- 关于vb代码复制到其他地方出现乱码的问题
今天笔者在学习vb编程时,想将自己的一段测试代码记录到云笔记中,方便以后查阅,代码如下: 结果在复制到其他的地方的时候,均出现乱码的现象,主要是针对代码的中的中文,如下效果 Private Sub C ...
- HTML+CSS:圆形和圆角图片格式
效果展示 实现代码 <!DOCTYPE html> <html> <head> <title>JcMan</title> <style ...
- day10 多媒体(文字 图片 音频 视频)
1计算机表示图形的几种方式 bmp:以高质量保存 用于计算机 jpg:以良好的质量保存 用于计算机或者网络 png:以高质量保存 图片大小的计算公式:图片 ...
- perl 遍历文件夹,获取全部文件
main #!/usr/bin/perl my ($path) = @ARGV; sub scan_file{ my @files = glob(@_[0]); foreach (@files){ i ...
- [No000016B]清华maven库配置settings.xml
路径:"C:\Users\%USERNAME%\.m2\settings.xml" <settings xmlns="http://maven.apache.org ...
- SQL Server 查询数据库中被锁定的表
在一次测试过程中,发现有些表一直被锁定,从网上搜集了下资料,可以使用一下语句查看数据库中那些表正被锁定: select request_session_id spid,OBJECT_NAME(reso ...
- ACM-ICPC 2018 沈阳赛区网络预赛 I. Lattice's basics in digital electronics 阅读题加模拟题
题意:https://nanti.jisuanke.com/t/31450 题解:题目很长的模拟,有点uva的感觉 分成四步 part1 16进制转为二进制string 用bitset的to_stri ...