#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映射的更多相关文章

  1. ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)

    本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...

  2. urlMappings与URL映射

    此配置节的作用就是往Web程序中添加URL的映射,从而达到用户访问映射后的URL(如/Page/AAA)也能访问到源URL(如/Page/PageAAA.aspx)的效果.这也是URL映射本来的作用. ...

  3. django中“url映射规则”和“服务端响应顺序”

    1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单.      查看方式:         import sys        print sys.path   ...

  4. MVC 5 Web编程2 -- URL映射

    ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...

  5. CCF CSP 201803-3 URL映射

    转载自 https://blog.csdn.net/tigerisland45/article/details/81697594 /* CCF201803-3 URL映射 */ #include &l ...

  6. SpringMvc的Url映射和传参案例(转)

    Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...

  7. SpringMvc的Url映射和传参案例

    Springmvc的基本使用,包括url映射.参数映射.页面跳转.ajax和文件上传 以前学习的时候写的代码案例,今天整理笔记的时候找到了,很久没有来园子了,发上来当个在线笔记用吧,免的时间长了又忘了 ...

  8. 使用 IntraWeb (32) - Url 映射与 THandlers

    最简单的 Url 映射是使用 TIWAppForm 的 class 方法: SetURL; THandlers 是 IntraWeb XIV 新增的内容处理器, 它能完成的不仅仅是 Url 映射(转发 ...

  9. Django - 将URL映射到视图

    URLconf 就像是 Django 所支撑网站的目录.它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表.你就是以这种方式告诉 Django,对于这个 URL 调用这段代码, ...

  10. 搭建RESTful API 之 实现WSGI服务的URL映射

    javarestfull 搭建参考 http://blog.csdn.net/hejias/article/details/47424511 问题引出:对于一个稍具规模的网站来说,实现的功能不可能通过 ...

随机推荐

  1. POJ 1904 King&#39;s Quest(强连通)

    Language: Default King's Quest Time Limit: 15000MS   Memory Limit: 65536K Total Submissions: 7635   ...

  2. HttpWatch工具简介及使用技巧

    一 概述: HttpWatch强大的网页数据分析工具.集成在Internet Explorer工具栏.包括网页摘要.Cookies管理.缓存管理.消息头发送/接受.字符查询.POST 数据和目录管理功 ...

  3. [原]openstack-kilo--issue(二十二) 虚拟机的vnc console图像调用错误

    [问题点] 在打开node compute 上vm的vnc console窗口时候发现vm1-compute1调用的是vm1-controller上的vnc图像 =================== ...

  4. 关于vb代码复制到其他地方出现乱码的问题

    今天笔者在学习vb编程时,想将自己的一段测试代码记录到云笔记中,方便以后查阅,代码如下: 结果在复制到其他的地方的时候,均出现乱码的现象,主要是针对代码的中的中文,如下效果 Private Sub C ...

  5. HTML+CSS:圆形和圆角图片格式

    效果展示 实现代码 <!DOCTYPE html> <html> <head> <title>JcMan</title> <style ...

  6. day10 多媒体(文字 图片 音频 视频)

    1计算机表示图形的几种方式     bmp:以高质量保存     用于计算机     jpg:以良好的质量保存    用于计算机或者网络     png:以高质量保存     图片大小的计算公式:图片 ...

  7. perl 遍历文件夹,获取全部文件

    main #!/usr/bin/perl my ($path) = @ARGV; sub scan_file{ my @files = glob(@_[0]); foreach (@files){ i ...

  8. [No000016B]清华maven库配置settings.xml

    路径:"C:\Users\%USERNAME%\.m2\settings.xml" <settings xmlns="http://maven.apache.org ...

  9. SQL Server 查询数据库中被锁定的表

    在一次测试过程中,发现有些表一直被锁定,从网上搜集了下资料,可以使用一下语句查看数据库中那些表正被锁定: select request_session_id spid,OBJECT_NAME(reso ...

  10. ACM-ICPC 2018 沈阳赛区网络预赛 I. Lattice's basics in digital electronics 阅读题加模拟题

    题意:https://nanti.jisuanke.com/t/31450 题解:题目很长的模拟,有点uva的感觉 分成四步 part1 16进制转为二进制string 用bitset的to_stri ...