* 表示匹配0或多个不是/的字符
** 表示匹配0或多个任意字符
? 表示匹配1个任意字符
/** * 将通配符表达式转化为正则表达式 * @param path * @return */ private static String getRegPath(String path) { char[] chars = path.toCharArray(); int len = chars.length; StringBuilder sb = new StringBuilder(); boolean preX = false; for(int i=0;i<len;i++){ if (chars[i] == '*'){//遇到*字符 if (preX){//如果是第二次遇到*,则将**替换成.* sb.append(".*"); preX = false; }else if(i+1 == len){//如果是遇到单星,且单星是最后一个字符,则直接将*转成[^/]* sb.append("[^/]*"); }else{//否则单星后面还有字符,则不做任何动作,下一把再做动作 preX = true; continue; } }else{//遇到非*字符 if (preX){//如果上一把是*,则先把上一把的*对应的[^/]*添进来 sb.append("[^/]*"); preX = false; } if (chars[i] == '?'){//接着判断当前字符是不是?,是的话替换成. sb.append('.'); }else{//不是?的话,则就是普通字符,直接添进来 sb.append(chars[i]); } } } return sb.toString(); }
/** * 通配符模式 * @param whitePath - 白名单地址 * @param reqPath - 请求地址 * @return */ private static boolean wildcardEquals(String whitePath, String reqPath) { String regPath = getRegPath(whitePath); return Pattern.compile(regPath).matcher(reqPath).matches(); }
public static void main(String[] args) { String[] whiteList = new String[]{ "/abc/?df/ddd", "/abc/df/dfd", "/abc/***/dfd", "/abc/*", "/abd/**", "/g??gle", "/*.do","/ttt" }; boolean r = FilterUtil.checkWhiteList("/abc/1/ss/dfd",whiteList); System.out.println(r); }
相关推荐
主要介绍了Java使用路径通配符加载Resource与profiles配置使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
* 模拟SQL通配符 ? % _ [abc1-9]格式字符串 * * @param format * 格式字符串 如:邮箱:%@%_ * @param value * 被判断的值 yiyongpeng@tom.com * @return 是否匹配 */ public boolean like(String format,...
1. Action建议统一遵守通配符的约定,basePath/web/moduleName/*_ *.action {1} EntityName,{2} ActionMethodName 2. 统一命名规则:接口类似UserService,接口实现类型UserServiceImpl;(IUserService和...
将jad 所在目录加到path路径中即可:set path=%path%;f:\java\jad 若要了解jad更为详细的使用帮助信息,直接运行jad.exe查看 以下假设jad.exe在c:\java目录下 一、基本用法 Usage:jad [option(s)] 直接输入类...
支持通配符*(代表任意多个字符)和?(代表一个字符)。选项: 区分大小写:类名区分大小写,即查找与输入的类名大小写完全一致的类。 完整类名: 输入的类名包含"包内路径"。路径不必完全,如java.util.scanner或util....
UrlRewriter Java v2.0 RC1 是一个基于 Java 的 URL 重写工具,旨在帮助开发人员实现灵活的 URL 重定向和重写功能。以下是该工具的主要实现描述: 核心功能实现: 使用 Java 编程语言实现了 URL 重写核心功能,...
为了实现这一点,我首先将目录路径拆分为单独的文件夹并将其存储到字符串数组中。 这个数组作为参数之一传递给我作为递归函数创建的 _getDirectoryList 方法。 它从数组的第一个元素开始并检查它的下一个元素,如果...
通配符是一个小型Java库,可以执行文件和目录的有效模式匹配。 路径可以与通配符或正则表达式匹配。 匹配的文件可以轻松地复制,删除,压缩等。地球匹配glob方法使用文字字符和可选的通配符收集文件和目录: Paths ...
Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...
Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...
wildcard, 在Java中,高效的文件系统 Pattern 匹配 请使用 WildCard讨论组 。通配符是一个小型的... 路径可以与通配符或者 正规表达式 匹配。 匹配的文件可以很容易地复制。删除。压缩等。匹配匹配glob 方法使用原义
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...
Java51.4.1 使用Object表示泛型1.4.2 基本类型的包装1.4.3 使用接口类型表示泛型1.4.4 数组类型的兼容性1.5 利用Java5泛性实现泛型特性成分1.5.1 简单的泛型类和接口1.5.2 自动装箱/拆箱1.5.3 带有限制的通配符...
《数据结构与算法分析:Java语言描述(第2版)》是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。...
java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱....
java5 1.4.1 使用object表示泛型 1.4.2 基本类型的包装 1.4.3 使用接口类型表示泛型 1.4.4 数组类型的兼容性 1.5 利用java5泛性实现泛型特性成分 1.5.1 简单的泛型类和接口 1.5.2 自动装箱/拆箱....
Java2核心技术第I卷.基础知识 目录: 译者序 前言 第1章Java程序设计概述 1.1 Java程序设计平台 1.2 Java“白皮书”的关键术语 1.2.1简单性 1.2.2面向对象 1.2. 3分布式 1. 2.4健壮性 1. 2.5安仝...