Java中的模式匹配
定义:模式匹配就是检索和指定模式匹配的字符序列。Java提供了专门进行模式匹配的类:Pattern类和Matcher类(其中涉及正则表达式,大家可以看一下这一篇文章,链接: Java中的正则表达式及相关知识(零基础学习))
步骤
数据源
String dataSource="hello,good morning,this is s";
建立Pattern类的对象并封装一个正则表达式
String regex="good";
Pattern pattern=Pattern.compile(regex);
Pattern类也可以第哦啊用类方法compile(String regex,int flags)返回一个Pattern对象,参数flags可以取下列有效值:
- Pattern.CASE_INSENSITIVE 模式匹配时忽略大小写
- Pattern.MULTILINE
- Pattern.DOTALL
- Pattern.UNICODE_CASE
- Pattern.CANON_EQ
得到matcher对象
封装数据源后得到Matcher类的一个对象
Matcher matcher= pattern.matcher(dataSource);
检索数据
matcher可以依次调用boolean find()方法检索数据源中和regex匹配的子字符序列
首次调用find()方法将检索第一个good,检索到后将返回true
检索到时,可使用matcher.start()
返回good的开始位置(这里是6)(从零开始计);可使用matcher.end()
返回序列的结束位置(这里是10)(结束后的下一位);可使用matcher.group()
返回检索到的字符串(这里是good)
Matcher类提供的常用方法
-
boolean find()
:上面已经解释 -
boolean matches()
:判断数据源是不是完全和正则表达式匹配 -
boolean lookingAt()
:判断数据源的头部是否有和正则表达式匹配的子序列。如:数据源是"goods",返回true;数据源是"hgood",返回false。若返回true,可以和find()一样调用start()、end()、group()返回相应的值
-
boolean find(int start)
:从指定位置开始检索,若start=0;该方法和lookingAt()相同 -
String replaceAll(String replacement)
:将检索到的序列全部换成replacement的实体,但这是新的String对象,数据源并没有改变 -
String replaceFirst(String replacement)
:只替换检索到的第一个序列,同上