Java的正则表达式使用,说明在代码中,参照了网络上的一些资料,在此记录下,方便自己如果可能也方便下别人。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*** Regex Pattern Matcher* @author 我是谁**/
public class RegexPatternMatcherTest {public static void main(String[] args) {complexRegularTest();find();
//      lookingAt();
//      matches();
//      find2();
//      regex();
//      groupTest();}/*** 复杂正则测试*/public static void complexRegularTest(){String PATTERN;PATTERN = "^(/(WEB-INF|special)/)(hello/)([0-9a-zA-Z_]+/){1}(reciept/)$";//合法Pattern pattern = Pattern.compile(PATTERN);String jspPath = "/WEB-INF/hello/_default_/reciept/";Matcher matcher = pattern.matcher(jspPath);System.out.println(Pattern.matches(PATTERN,jspPath));if (!matcher.matches()) {System.out.println("1很抱歉,你输入的URL不符合要求。");}System.out.println("1测试完毕");jspPath = "/WEB-INF/hello/ydybbxba/reciept/";matcher = pattern.matcher(jspPath);if (!matcher.matches()) {System.out.println("2很抱歉,你输入的URL不符合要求。");}System.out.println("2测试完毕");jspPath = "/WEB-INF/classes/ydybbxba/reciept/";matcher = pattern.matcher(jspPath);if (!matcher.matches()) {System.out.println("3很抱歉,你输入的URL不符合要求。");}System.out.println("3测试完毕");jspPath = "/WEB-INF/hello/ydybbxba/reciept2/";matcher = pattern.matcher(jspPath);if (!matcher.matches()) {System.out.println("4很抱歉,你输入的URL不符合要求。");}System.out.println("4测试完毕");jspPath = "/WEB-INF/hello/ydybbxba/reciept/alter.class";matcher = pattern.matcher(jspPath);if (!matcher.matches()) {System.out.println("5很抱歉,你输入的URL不符合要求。");}System.out.println("5测试完毕");jspPath = "/special/hello/ydybbxba/reciept/";matcher = pattern.matcher(jspPath);if (!matcher.matches()) {System.out.println("6很抱歉,你输入的URL不符合要求。");}System.out.println("6测试完毕");}//find()对字符串进行匹配,匹配到的字符串可以在任何位置public static void find(){System.out.println("---------------------");Pattern p=Pattern.compile("\\d+"); Matcher m=p.matcher("aaa2223bb"); System.out.println(m.find());//匹配2223 System.out.println(m.start());//返回3 System.out.println(m.end());//返回7,返回的是2223后的索引号 System.out.println(m.group());//返回2223m=p.matcher("aaa2223bb555"); while(m.find()){System.out.println(m.start());//1、2轮分别返回3、9 System.out.println(m.end());//1、2轮分别返回7、12System.out.println(m.group());//1、2轮分别返回2223、555}}//lookingAt()对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true public static void lookingAt(){System.out.println("---------------------");Pattern p=Pattern.compile("\\d+"); Matcher m2=p.matcher("2223bb"); System.out.println(m2.lookingAt());   //匹配整个字符串 System.out.println(m2.start());   //返回0System.out.println(m2.end());   //返回4System.out.println(m2.group());   //返回2223}//matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回truepublic static void matches(){System.out.println("---------------------");Pattern p=Pattern.compile("\\d+"); Matcher m3=p.matcher("2223bb"); System.out.println(m3.matches());   //false,不匹配整个字符串 System.out.println(m3.start());   //抛异常,因没有匹配 System.out.println(m3.end());   //抛异常,因没有匹配 System.out.println(m3.group());   //抛异常,因没有匹配 }public static void find2(){Pattern p=Pattern.compile("([a-z]+)(\\d+)"); Matcher m=p.matcher("aaa2223bb"); System.out.println(m.find());   //匹配aaa2223 System.out.println(m.groupCount());   //返回2,因为有2组 System.out.println(m.start(1));   //返回0 返回第一组匹配到的子字符串在字符串中的索引号 System.out.println(m.start(2));   //返回3 System.out.println(m.end(1));   //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置. System.out.println(m.end(2));   //返回7 System.out.println(m.group(1));   //返回aaa,返回第一组匹配到的子字符串 System.out.println(m.group(2));   //返回2223,返回第二组匹配到的子字符串 }public static void regex(){Pattern p=Pattern.compile("\\d+"); Matcher m=p.matcher("我的QQ是:456456 我的电话是:0532214 我的邮箱是:aaa123@aaa.com"); while(m.find()) { System.out.println("group:"+m.group());System.out.println("group start:"+m.start());System.out.println("group end:"+m.end());} }public static void groupTest(){String text = "abaaabccab1234ababcccab432dog";String regexp = "(a*b)([0-9]+)";Pattern pattern = Pattern.compile(regexp);Matcher matcher = pattern.matcher(text);while (matcher.find()){System.out.println("----------------");System.out.println(matcher.group());System.out.println(matcher.group(0)); //匹配到的整个字符串System.out.println(matcher.group(1)); //第一个括号System.out.println(matcher.group(2)); //第二个括号}}
}

Java Regex Pattern Matcher相关推荐

  1. 由Java正则表达式的灾难性回溯引发的高CPU异常:java.util.regex.Pattern$Loop.match

    问题与分析 某天领导report了一个问题:线上的CPU自从上一个版本迭代后就一直处于居高不下的状况,领导看着这段时间的曲线图判断是有两条线程在不停的死循环. 接到任务后去查看了AWS的CloudWa ...

  2. java 正则regex_Java中的正则表达式– Java Regex示例

    java 正则regex Welcome to Regular Expression in Java. It's also called Regex in Java. When I started p ...

  3. 翻译:java.util.regex.Pattern

    java.util.regex.Pattern A compiled representation of a regular expression. A regular expression(正则表达 ...

  4. java中Pattern和Matcher的使用

    我们的字符串String类中包含了正则的匹配.字符的替换等操作,但是,有的时候String的正则匹配不能够满足要求就需要用到Pattern和Matcher类 import java.util.rege ...

  5. Java EE中的重新验证(java.util.regex.Pattern)

    java.lang.Objectjava.util.regex.Pattern 所有已实现的接口: Serializable public final class Pattern extends Ob ...

  6. java正则表达式初探——java.util.regex.Pattern类

    matches方法 split方法 注:为纯演示代码,so,变量命名不要在意 java.util.regex.Pattern类中最常用的方法是matches(String regex, CharSeq ...

  7. Java 正则表达式 Pattern和Matcher类 Math类 Random类 System类 BigDecimal类

    14.01_正则表达式 A:正则表达式:正确规则的表达式,规则java给我们定的.指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则,有自己特殊的应用.B:组成规则:规 ...

  8. Java Pattern.matcher()方法具有什么功能呢?

    转自: Java Pattern.matcher()方法具有什么功能呢? 下文笔者讲述Pattern.matcher()方法的功能简介说明,如下所示: Pattern.matcher()方法的功能:用 ...

  9. 我爱学Java之Pattern和Matcher用法

    Java正则表达式通过java.util.regex包下的Pattern和Matcher类实现 Pattern类用于创建一个正则表达式,也可以说是创建一个匹配模式,可以通过两个静态方法创建:compi ...

最新文章

  1. 使用Python中的reduce()函数求积
  2. linux rqm包制作 spec文件详解
  3. 在eclipse下配置maven插件
  4. Python基础学习五 内置模块
  5. 进入社会,我们要做哪些准备?
  6. python实现高精度加法_蓝桥杯-Python-高精度加法
  7. Hyper-V网络虚拟化--VM之间拷贝速度慢
  8. 海思35系列型号排行_11月手机性能排行榜:小米10至尊纪念版排名第三
  9. mysql2005安装_安装SQL Server 2005的详细步骤
  10. 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)
  11. PLSQL使用教程(一):同步表结构和表数据
  12. 华为USB线刷工具的使用
  13. 打包openstack of opencontrail
  14. VMware Workstation -- 破解密码
  15. linux css压缩工具下载,推荐15个最好用的JavaScript代码压缩工具
  16. 计算机视觉论文-2021-06-10
  17. keyshot怎么贴logo_KeyShot图文教程,三步教你如何使用添加有织纹的Logo
  18. 基于matlab菌落影像分割方法,基于MATLAB的图像分割方法及应用-
  19. qt5.8 msvc2015使用linguist乱码问题解决
  20. RT5350 openwrt添加Reset按键,实现短按重启系统,长按复位系统

热门文章

  1. 谷歌浏览器打开JSP页面依然输出源代码
  2. STM32学习笔记:读写内部Flash(介绍+附代码)
  3. 长安大学计算机教程,教学情况-长安大学数字测图原理与方法精品资源共享课...
  4. linux dd报错,安装Mac版变色龙使用dd命令遇到Resource busy 错误
  5. zynq中mgtx应用_Xilinx 7系列FPGA 高速收发器GTX/GTH的一些基本概念
  6. .net core 监听文件夹变化, FileSystemWatcher 封装
  7. ColeDateTime 用法
  8. 【备战蓝桥】JavaB组算法小讲解——GCD和LCM
  9. 高通android逆向分析,浅谈Android高通(Qualcomm)和联发科(MTK)平台
  10. 2014年高考计算机试题答案,春季高考历年真题-2014年天津市春季高考计算机试卷.doc...