#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. JAVA程序员_常用英语

    干程序员这行实在是离不开英语,干程序员是一项很辛苦的工作,要成为一个高水平的程序员尤为艰难.这是因为计算机软件技术更新的速度越来越快,而这些技术大多来源于英语国家,我们在引进这些技术时往往受到语言障碍 ...

  2. python socket 实现的简单http服务器

    预备知识: 关于http 协议的基础请参考这里. 关于socket 基础函数请参考这里. 关于python 网络编程基础请参考这里. 一.python socket 实现的简单http服务器   废话 ...

  3. 排查java进程cpu占用高的问题

    一.思路 分两步,主要是找出占用cpu高的进程,再找出该进程内到底是哪个线程占用cpu高. 二.找出占用cpu高的进程 参考: https://blog.csdn.net/hfhwfw/article ...

  4. Linux学习之---Xshell

    经过两周的断断续续的学习,终于把慕课网上tony老师的<Linux网络管理>基础知识学完.tony老师讲课风趣幽默,深入浅出,为老师打call!! 课程地址:https://www.imo ...

  5. WebApi路由

    路由分为两种模式:模板路由和特性路由. 模板路由: 模板路由是ASP.NET Web API默认提供的路由.模板路由使用前需要定义路由模板.如下面默认的路由模板: 默认路由的URL格式是api/{co ...

  6. textarea 固定大小,滚动条,限制拖动,文字对齐

    取值:$("#ID").val(); 控制大小:加width,height限制(style="width:100px;height:200px;");或row, ...

  7. Vue----目录结构

    目录结构: (1):build:---------------------------------------------------------------------------------:保存 ...

  8. Adobe Photoshop CS6简单的破解

    由于网站的页面布局和素材准备等等需要用到Photoshop,所以下载了个 Photoshop CS6,写这份破解文档的大佬感觉写的很复杂,看了让人头疼,乱搞中突然发现一个方法可以很快的进行破解操作,我 ...

  9. XDOJ 1046 - 高精度模板综合测试 - [高精度模板]

    题目链接:http://acm.xidian.edu.cn/problem.php?id=1046 题目描述 请输出两个数的和,差,积,商,取余.注意不要有前导零. 输入 多组数据,每组数据是两个整数 ...

  10. [No0000149]ReSharper操作指南6/16-编码协助之其他协助

    语法高亮 ReSharper扩展了默认Visual Studio的符号高亮显示.此外,它还会使用可配置的颜色突出显示字段,局部变量,类型和其他标识符.例如,ReSharper语法突出显示允许您轻松区分 ...