Java 正在操作工具类
2021/5/6 20:25:37
本文主要是介绍Java 正在操作工具类,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * java 正则匹配基本操作工具类 * <p> * 参考:https://www.cnblogs.com/Krloypower/p/11356805.html * * @description: * @author: mabh * @create: 2021/5/6 14:09 **/ public final class RegexUtils { /** * 缓存一些 Pattern.compile() 的 */ private static final Map<String, Pattern> PATTERN = new HashMap<>(); private RegexUtils() { } /** * 获取匹配项 * * @param regex * @param input * @return 返回一个list集合类型的匹配项 * @see #getMatcherList(String, CharSequence, int) */ public static List<String> getMatcherList(String regex, CharSequence input) { return getMatcherList(regex, input, 0); } /** * 获取匹配项 * * @param regex * @param input * @param group //group(0) 返回符合条件的字符串, group(1) 表示正则表达式中符合条件的字符串中的第一个() 中的字符串。 * @return 返回一个list集合类型的匹配项 * @see #getMatcherList(String, CharSequence) */ public static List<String> getMatcherList(String regex, CharSequence input, int group) { List<String> list = new ArrayList<>(); forEach(regex, input, matcher -> list.add(matcher.group(group))); return list; } /** * 迭代匹配,更自由的操作,一般无需直接操作改方法,除非你有更复杂的场景。 * * @param regex * @param input * @param consumer * @see #getMatcherList(String, CharSequence, int) * @see #findAny(String, CharSequence) */ public static void forEach(String regex, CharSequence input, Consumer<Matcher> consumer) { Pattern compile = getCompile(regex); Matcher matcher = compile.matcher(input); while (matcher.find()) { consumer.accept(matcher); } } /** * 非贪婪模式匹配,是否有匹配项 * * @param regex * @param input * @return true,存在指定规则的匹配数据 */ public static boolean findAny(String regex, CharSequence input) { //默认贪婪是匹配,如果仅仅查询是否有匹配项,直接是否非贪婪即可,性能更好,哪怕这种性能微乎其微 Pattern p = getCompile("^" + regex); Matcher m = p.matcher(input); return m.find(); } /** * 是否匹配 * * @param regex * @param input * @return */ public static boolean matches(String regex, CharSequence input) { Pattern compile = getCompile(regex); Matcher matcher = compile.matcher(input); return matcher.matches(); } /** * 优先会找缓存,找不到再初始化 * * @param regex 标准的正则表达式 * @return */ private static Pattern getCompile(String regex) { Pattern compile = PATTERN.getOrDefault(regex, Pattern.compile(regex)); PATTERN.put(regex, compile); return compile; } }
这篇关于Java 正在操作工具类的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南
- 2024-12-21功能权限实战:新手入门指南