Pattern()和Mattern()函数
// pattern() 返回正则表达式的字符串形式,
// 其实就是返回Pattern.complile(String regex)的regex参数
Pattern p=Pattern.compile("\\w"); p.pattern(); // 返回 \w+ System.out.println(p.pattern());
Pattern.split(CharSequence input)
// 分隔字符串,并返回一个String[] Pattern pat = Pattern.compile("\\d+"); String[] str = pat.split("我的QQ是:456456我的电话是:0532214我的邮箱是:aaa@aaa.com"); System.out.println(str[0]); // 输出结果为 我的QQ是: System.out.println(str[1]); // 输出结果为 我的电话是: System.out.println(str[2]); // 输出结果为 我的邮箱是:aaa@aaa.com
Pattern.matches(String regex,CharSequence input)
// 快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串. Pattern.matches("\\d+", "2223"); // 返回truePattern.matches("\\d+", "2223aa"); // 返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到 Pattern.matches("\\d+", "22bb234"); // 返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到 System.out.println(Pattern.matches("\\d+", "2223"));System.out.println(Pattern.matches("\\d+", "2223aa"));System.out.println(Pattern.matches("\\d+", "22bb234"));
Pattern.matcher(CharSequence input)
// Pattern类只能做一些简单的匹配操作,要想得到更强更便捷的正则匹配操作,那就需要将Pattern与Matcher一起合作.// Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. Pattern pattern=Pattern.compile("\\d+");Matcher m=pattern.matcher("22bbc44");System.out.println(m.pattern()); // 返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的
Matcher.matches()/ Matcher.lookingAt()/ Matcher.find()
// matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true// 4.1 matches()对整个字符串进行匹配,只有整个字符串都匹配了才返回true Pattern patt = Pattern.compile("\\d+");Matcher matcher = patt.matcher("234b23");System.out.println(matcher.matches()); // 返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功. Matcher matcher2 = patt.matcher("2345");System.out.println(matcher2.matches()); // 返回true,因为\d+匹配到了整个字符串 // 4.2 lookingAt()对前面的字符串进行匹配,只有匹配到的字符串在最前面才返回true Pattern p = Pattern.compile("\\d+");Matcher m = p.matcher("22mm34");System.out.println(m.lookingAt()); // 返回true,因为\d+匹配到了前面的234 Matcher m2 = p.matcher("aa2345");System.out.println(m2.lookingAt()); // 返回false,因为\d+不能匹配前面的aa // 4.3 find()对字符串进行匹配,匹配到的字符串可以在任何位置. Pattern p = Pattern.compile("\\d+");Matcher m = p.matcher("234nn23");System.out.println(m.find()); // 返回true Matcher m2 = p.matcher("mm4567"); System.out.println(m2.find()); // 返回true Matcher m3 = p.matcher("aa2345gg");System.out.println(m3.find()); // 返回true Matcher m4 = p.matcher("abcd");System.out.println(m4.find()); // 返回false
5…Mathcer.start()/ Matcher.end()/ Matcher.group()
// 用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.
// start()返回匹配到的子字符串在字符串中的索引位置.
// end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.
// group()返回匹配到的子字符串
Pattern p = Pattern.compile("\\d+");Matcher m = p.matcher("sdf123we");System.out.println(m.find()); // 匹配123 System.out.println(m.start()); // 返回1的索引号 System.out.println(m.end()); // 返回6,返回的是123后的索引号System.out.println(m.group()); // 返回123 System.out.println("--------------");Matcher m2 = p.matcher("12345dfg");System.out.println(m2.lookingAt()); // 匹配12345System.out.println(m2.start()); // 返回1的索引号 System.out.println(m2.end()); // 返回5,返回的是12345后的索引号System.out.println(m2.group()); // 返回12345System.out.println("--------------");Matcher m3 = p.matcher("12345"); // 如果Matcher m3=p.matcher("2223bb"); 那么下面的方法出错,因为不匹配返回falseSystem.out.println(m3.lookingAt()); // 匹配12345System.out.println(m3.start()); // 返回1的索引号 System.out.println(m3.end()); // 返回5,返回的是12345后的索引号System.out.println(m3.group()); // 返回12345
总结:
// start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组. 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,返回第二组匹配到的子字符串
// 例如有一段文本,里面有很多数字,而且这些数字是分开的,我们现在要将文本中所有数字都取出来,利用java的正则操作是那么的简单.
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
Pattern()和Mattern()函数相关推荐
- Makefile所有内嵌函数
一.文本处理函数 以下是GNU make内嵌的文本(字符串)处理函数. 1 $(subst FROM,TO,TEXT) 函数名称:字符串替换函数-subst. 函数功能:把字串" ...
- templateclass T函数模板
//参考 http://prglab.com/cms/pages/c-tutorial/advanced-concepts/templates.php 函数模板( Function template ...
- hive substr函数_数据分析工具篇——HQL函数及逻辑
本篇文章我们梳理一下hive常用的函数,对于hive而言,常用的函数并不是特别多,往往记住关键几个,就可以解决80%的问题,这也是大家喜欢hive的原因,那么,常用的函数有哪些呢? 时间函数 1)时间 ...
- GNU (内部)make函数
GNU make的函数提供了处理文件名.变量.文本和命令的方法.使用函数我们的Makefile可以书写的更加灵活和健壮.可以在需要的地方地调用函数来处理指定的文本(需要处理的文本作为函数的参数),函数 ...
- python函数的使用方法_百度资讯搜索_python函数的使用方法
金生水起程序猿 2020年11月22日 11:23函数语法格式及调用参数:默认值.元组和字典可变参数的使用全局变量和局部变量作用域,局部变量如何升级为全局变量函数是可重复使用的,实现单一功能的代码块. ...
- php函数大全 pdf,php常用函数.pdf
php常用函数.pdf 还剩 16页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: http://www.tyy ...
- Makefile wildcard函数说明
$(wildcard pattern) 函数名称:获取匹配模式文件名函数- wildcard 函数功能:列出当前目录下所有符合模式" pattern"格式的文件名. 返回值:空格分 ...
- oracle正则表达式匹配字母,oracle正则表达式函数 匹配
文章介绍了关于oracle正则函数的一些用法,包括匹配等,Oracle10g提供了在查询中使用正则表达的功能,它是通过各种支持正则表达式的函数在where子句中实现的. ORACLE中的支持正则表达式 ...
- [转]C语言图形编程(三) -绘图函数②
四.图形和图像函数 (一) 像素函数 56. putpiel() 画像素点函数 57. getpixel()返回像素色函数 (二) 直线和线型函数 58. line() 画线函 ...
最新文章
- R构建指数回归模型(Exponential Regression)
- iOS项目之同时点击多个按钮解决方案
- php图片视频,PHP中使用php5-ffmpeg撷取视频图片实例
- 设计抗100亿请求的春晚红包系统
- 九连环_儿子的玩具—九连环
- Pandas快速上手(一):基本操作
- 2017.9.8 无归岛 思考记录
- 一起学java【5】---原生态数据类型使用陷阱
- Android-AlarmManager(全局定时器/闹钟)
- Java基础---Java中运算符优先级(十六)
- SVN安装及使用+SVN汉化
- python曲线库_测井曲线储量python库lasio解读使用
- 计算机音乐专业考研,2020考研考场安排:武汉音乐学院《计算机音乐作曲》科目考生须知...
- 学习用HTML做新闻摘要
- LTE中PA/PB的理解
- S7-1200PLC程序PN总线三路V90伺服轴控制实际应用项目
- android 蓝牙连接rtk,基于Android手机的RTK手簿软件设计与实现
- GraphQL以及Apollo-GraphQL的使用(一)
- Intellij idea Ultimate版本学生免费注册使用步骤以及Github学生包
- 分享破解通达信接口的调用方法