博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java正则表达式一:基本使用
阅读量:4974 次
发布时间:2019-06-12

本文共 2227 字,大约阅读时间需要 7 分钟。

java正则表达式主要涉及三个类:java.util.regex.Matcher、java.util.regex.Pattern、java.util.regex.PatternSyntaxException

java.util.regex.Pattern

该类主要用来创建匹配规则,并没有公共构造函数,通过两个工厂函数构造Pattern对象,实例如下:

Pattern pattern = Pattern.compile("B(ond)"); //或者 Pattern pattern = Pattern.compile("B(ond)", 0);

java.util.regex.Matcher

引擎类,所有和正则表达式匹配相关的操作均在此类中实现,该类也没有构造函数,构造对象有两种方法:

Matcher match = pattern.matcher("test string Bond"); //方法二 String regex="B(ond)"; String strs= "test string Bond"; Matcher mt = Pattern.matches(regex, strs);

实例1:

String strs =  "My name is Bond. James Bond.";  Pattern pattern = Pattern.compile("B(ond)");  Matcher matcher = pattern.matcher(strs);  while(matcher.find()){       System.out.println("group" + 0 + ":" + matcher.group(0));               int gc = matcher.groupCount();       for(int i = 1; i<= gc; ++i) {           System.out.println("group" + i + ":" + matcher.group(i));      }   }

matcher.find()函数根据正则表示在字符串上从做到右做匹配,匹配一个则返回true,下一次匹配从当前匹配的结尾处开始

matcher.group(0)分组的概念:整个正则匹配的就是第零组,然后根据左括号一次从左到右为第1、2、3组,在本实例中,正则表达B(ond)有两个组:bond(0组)、ond(第一组),matcher.group(i)返回当前匹配的第i组的字符串
matcher.groupCount():返回匹配的组的个数,注意这里统计不计第零组
输出结果如下:

group0:Bond group1:ond

实例2

String strs =  "My name is Bond. James Bond.";  Pattern pattern = Pattern.compile("B(ond)");  Matcher matcher = pattern.matcher(strs);  while(matcher.find()){       System.out.println("group" + 0 + ":" + matcher.group(0));               int gc = matcher.groupCount();       for(int i = 1; i<= gc; ++i) {           System.out.println("group" + i + ":" + matcher.group(i));      }   }     matcher.reset();  if(matcher.matches()){     System.out.println("all matches:"+ matcher.group(0));  }else{     System.out.println("First all matches fail");  }  matcher = pattern.matcher("Bond");  if(matcher.matches()){     System.out.println("all matches:"+ matcher.group(0));  }

实例2同实例1相比,多了几个函数

第一个mather.reset():将所有与匹配相关的状态重置,重置后的结果跟pattern.matcher(strs);第一次执行完的效果一样
第二个matcher.matches(),这个函数同matcher.find()函数相比,matches()是在整个字符串上做匹配,整个字符串匹配正则规则才会返回true;而find()是在字符串中做匹配,匹配到一个字符串就返回true,通过group()函数获取匹配的字符串,通过start()以及end()函数可以获取匹配的位置
输出如下:

group0:Bond group1:ond group0:Bond group1:ond First all matches fail all matches:Bond

转载于:https://www.cnblogs.com/graph/p/4542914.html

你可能感兴趣的文章
关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案...
查看>>
php文件操作(上传文件)2
查看>>
linux内核驱动模型
查看>>
给WebApp加一个“壳”,实现Andriod系统添加到桌面
查看>>
js 浏览器复制功能
查看>>
数据库总编
查看>>
redis 字符串(string)函数
查看>>
杭州电 1372 Knight Moves(全站搜索模板称号)
查看>>
POJ--3268--Silver Cow Party【SPFA+邻接表】
查看>>
c语言的几个简单memo
查看>>
C#的默认访问权限
查看>>
selenium下打开Chrome报错解决
查看>>
红酒初识
查看>>
BNUOJ 5629 胜利大逃亡(续)
查看>>
HDU-1150 Machine Schedule(二分图、匈牙利)
查看>>
Python assert 断言函数
查看>>
Android 学习笔记之ContentProvider实现数据共享....
查看>>
35)PHP,关于PHP和html
查看>>
区块链到底是什么?
查看>>
java_线程的开启与结束(可用于android)
查看>>