Pattern和Matcher

java.util.regex 包(处理正则表达式) 提供了两个用来处理正则表达式的工具类:Pattern和Matcher。Pattern用于建立待匹配的正则表达式模型,Matcher用于在匹配完成后对匹配结果进行相应操作。

1.Pattern

1.1.Pattern.pattern()

返回正则表达式的字符串形式

Pattern p=Pattern.compile("\\w+");
p.pattern(); //返回 \w+

1.2.Pattern.split(CharSequence input)

该方法用于分割字符串,并返回一个String[]

Pattern p=Pattern.compile("\\d+");
String[] str=p.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com");

运行结果:
str[0]=“我的QQ是:”, str[1]=“我的电话是:”, str[2]=“我的邮箱是:aaa@aaa.com”

1.3.Pattern.matchers(String regex,CharSequence input)

该方法是一个静态方法,用于快速匹配字符串,该方法将会匹配全部字符串

Pattern.matches("\\d+","2223");//返回true
Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到
Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到

2.Matcher

Matcher类提供三个匹配操作方法,三个方法均返回boolean类型,当匹配到时返回true,没匹配到则返回false。

2.1.Matcher.matches()

matches()方法匹配的是整个字符串

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.matches();//返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功.
Matcher m2=p.matcher("2223");
m2.matches();//返回true,因为\d+匹配到了整个字符串

2.2.Matcher.lookingAt()

lookingAt()对最前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true.

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.lookingAt();//返回true,因为\d+匹配到了前面的22
Matcher m2=p.matcher("aa2223");
m2.lookingAt();//返回false,因为\d+不能匹配前面的aa

2.3.Matcher.find()

对指定的字符串进行匹配,匹配到的字符串可以在任意位置。

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("22bb23");
m.find();//返回true
Matcher m2=p.matcher("aa2223");
m2.find();//返回true
Matcher m3=p.matcher("aa2223bb");
m3.find();//返回true
Matcher m4=p.matcher("aabb");
m4.find();//返回false

2.4.Matcher.start()

返回匹配到的子字符串在字符串中的起始位置。

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("aaa2223bb");
m.find();//匹配2223
m.start();//返回3

2.5.Matcher.end()

返回匹配到的子字符串的最后一个字符的下一个索引值。注意!是下一个索引值,而不是该子字符串中最后一个字符的索引值!

2.6.Matcher.group()

group即返回匹配到的字符串。

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("aaa2223bb");
m.find();//匹配2223
m.group();//返回2223

2.7.Matcher.start(int, i), Matcher.end(int, i), Matcher.group(int, i), Matcher.groupCount()

前三个API主要用于分组操作,取出第i组数据的索引值,groupCount()则用来返回一共匹配到多少组

Pattern p=Pattern.compile("([a-z]+)(\\d+)");  //()表示分组,意义是括号内是一个整体
Matcher m=p.matcher("aaa2223bb");
m.find();   //匹配aaa2223
m.groupCount();   //返回2,因为有2组
m.start(1);   //返回0 返回第一组匹配到的子字符串在字符串中的索引号
m.start(2);   //返回3 返回第二组匹配到的子字符串在字符串中的索引号
m.end(1);   //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
m.end(2);   //返回7 返回第二组匹配到的子字符串的最后一个字符在字符串中的索引位置.
m.group(1);   //返回aaa,返回第一组匹配到的子字符串
m.group(2);   //返回2223,返回第二组匹配到的子字符串

使用正则表达式提取一段文本中的数字

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("我的QQ是:456456 我的电话是:0532214 我的邮箱是:aaa123@aaa.com");
while(m.find()) { System.out.println(m.group());
}

运行结果:

456456
0532214
123

如果将while循环替换成

while(m.find()) { System.out.println(m.group()); System.out.print("start:"+m.start()); System.out.println(" end:"+m.end());
}

则输出:

456456
start:6 end:12
0532214
start:19 end:26
123
start:36 end:39

注意!只有当匹配成功后,才可以使用start(), end(), group()方法,否则会抛出java.lang.IllegalStateException。
也就是说,当matchers(), lookingAt(), find() 其中一个方法返回true时,才可以使用start(),end(),group()方法。

java正则表达式Pattern和Matcher相关推荐

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

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

  2. Java正则表达式Pattern和Matcher类详解

    转载自:http://blog.csdn.net/yin380697242/article/details/52049999 概述 Pattern类的作用在于编译正则表达式后创建一个匹配模式. Mat ...

  3. Java基础 正则表达式 Pattern和Matcher

    主要用途:    通常正则表达式都是用来判断输入的字符串是否符合自己的要求. 在Java中主要用到的是java.utill.regex包下的类: 这里面主要用到的就是Pattern和Matcher两个 ...

  4. java中正则表达式Pattern与Matcher类使用详解(find、group)

    一.Pattern的使用 这个使用很简单. 1.把正则表达式编译为Pattern对象: 比如: Pattern compile = Pattern.compile("http://([a-z ...

  5. java中Pattern和Matcher的使用

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

  6. 14.常见对象(正则表达式,Pattern和Matcher类,Math类,Random类,System类,BigDecimal类,Date类,SimpleDateFormat类,Calendar类)

    1.正则表达式的概述和简单使用 1.正则表达式:正确规则的表达式 规则java给我们定的     是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用 ...

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

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

  8. Java之Pattern和Matcher的作用

    java.util.regex.Pattern类的实例的主要作用是给正则表达式一个匹配模式,因为在java里面正则表达式是一个字符串,字符串的能力是非常有限的,不像javascript那样可以在正则表 ...

  9. java matcher函数_在Java正则表达式中使用Matcher.end()方法

    方法java.util.regex.Matcher.end()返回根据正则表达式从序列中匹配最后一个字符后的偏移值.此方法不需要任何参数.如果没有匹配发生,或者匹配操作失败,则抛出IllegalSta ...

最新文章

  1. excel合并两列内容_不要再粘粘粘,合并Excel表格数据,3秒完成
  2. pythonjam怎么运行_第二十四天 PYTHON学习
  3. android 自定义菜单栏,GitHub - earthWo/AndroidBottomNavigation: android 底部菜单栏,自定义样式,自定义菜单数量,添加滚动动画和水波纹动画...
  4. 用Python快速找到出现次数最多的数据
  5. 阿里布局无人驾驶;滴滴成立汽车服务;“京东 AI 天团”首亮相| CSDN极客头条...
  6. java普通md5加密解密_java 采用MD5加密解密
  7. bat怎么发起网络请求_接口测试实战| GETPOST 请求区别详解
  8. 【窗口置顶神器】DeskPins
  9. Java 基本数据类型(四类八种)
  10. NetApp 数据存储阵列 EF 系列——用于大数据分析和高性能计算
  11. 科目三考场视频最新专业高清+实地模拟考试陪练车
  12. matlab写子函数,matlab主函数子函数怎么写
  13. 285页解析百度、阿里、腾讯前端面试题,通关秘籍请收好!
  14. WIN10 任务栏卡死解决办法
  15. 学生信息管理系统(头哥适用版)(c语言)
  16. android保存播放进度,Android MediaPlayer控制进度播放音频
  17. linux开机启动出现grup,开机出现grub解决方法
  18. Scrapy糗事百科爬虫实战代码分析
  19. 程序员2天做出的猫咪情绪识别软件,究竟用了什么技术?
  20. 现在选择学JAVA,2023月薪过万大有前途~

热门文章

  1. BigInteger使用
  2. 基本Widgets(02):【类】QWidget [官翻]
  3. 彻底关闭360卫士精选弹窗的方法
  4. 装饰模式(Decorator模式)详解
  5. 微图手机版如何导航?
  6. service层的作用
  7. JetBrains软件安装及常用配置
  8. 第二章之二 圣恩*梦魇后的情缘(二)
  9. 推荐给大家一个php代码格式化在线工具
  10. vs2019 winform CLR20R3错误