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 问题引出:对于一个稍具规模的网站来说,实现的功能不可能通过 ...
随机推荐
- oracle 学习笔记(2)创建表空间及用户授权
原文:http://www.cnblogs.com/smartvessel/archive/2009/07/06/1517690.html Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的 ...
- Tetrahedron based light probe interpolation(基于四面体的Light Probe插值)
在当前的游戏引擎中,使用Light Probe来计算全局环境光对于动态物体的影响是一种很主流的方法.在预处理阶段生成完场景的Light Probe之后,传统的方法采用查找最近的8个相邻的Probe然后 ...
- VI/VIM 无法使用系统剪贴板(clipboard)?(Ubuntu&Mac OS X已解决)
在 Ubuntu/Mac OS X 中使用VI/VIM时,发现无法使用系统的剪贴板. Ubuntu 上网一查,原来是少装了几个东西. 使用如下命令,安装相关的包.安装成功后,就可以使用系统剪贴板了. ...
- subordinate clause/从句
What Is a Subordinate Clause? (with Examples)A subordinate clause (or dependent clause) is a clause ...
- webpack构建工具快速上手指南
最近在研究react项目,接触到webpack打包工具.刚接触的时候一脸茫然,经过最近的学习,下面我来带大家开启webpack入门之旅. webpack是什么 webpack是近期最火的一款模块加载器 ...
- web.config 加密/解密 正确版
一般加密方式: 利用Aspnet_regiis: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis -pe "co ...
- lombok安装方法
一.介绍 lombok网址:https://projectlombok.org/download.html lombok能够在编译源码的时候自动生成getter和setter方法.即它最终能够达到的效 ...
- [No0000145]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈2/4
前言 虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...
- hive归档分区
归档hive历史分区不会减少hdfs存储空间,但是可以有效减轻hadoop namenode的压力,尤其在于小文件比较多的情况下. $mkdir $HIVE_HOME/auxlib $ cp /opt ...
- 使用graalvm.js调用promise
前提 1.JDK1.8 2.引入jar包 <!--graalvm.js --> <dependency> <groupId>org.graalvm.js</g ...