java正则表达式学习笔记
"a".matches("[abc]"); //true "A".matches("[a-z[A-Z]]"); //true "R".matches("A-Z&&[RFG]"); //false Pattern p = Pattern.compile("a*b"); Matcher m = p.matcher("aaaaab"); bollean b = m.matches(); boollean b = Pattern.matches("a*b","aaaaab");
Matcher类对正则表达式的操作功能比较强大,但是没有构造方法,只能通过Pattern这个类来获取,一般采用的方法是
Matcher matcher = pattern.matcher("需要检查的字符串");
由于Pattern对象也没有构造方法,一般采用“预编译”方式来得到,这样做的目的是可以加快运行速度
Pattern p = Pattern.compile("正则表达式");
Matcher 类
matches()匹配整个字符串
find()找匹配模式的“子字符串”,找到之后会将匹配的去掉
如果matches()与find()一起使用,则最好是搭配reset()方法一起使用
lookingAt()每次“从头”开始找
一定要能找到子串,否则会报错
start()与end()方法对应,返回匹配的索引
正则表达式的分组?
分组是用小括号区分开的
组号——匹配整体正则表达式中的其中某一部分
从左往右数,第一个小括号为第一组,第二个小括号为第二组,依次往后推算
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { Pattern p = Pattern.compile("(\\d{3,5})([a-z]{2})"); String s = "123aa-3434bb-234cc-00"; Matcher m = p.matcher(s); //分组查找是找出满足全部正则表达式的条件中之后再进行“局部”筛选 while(m.find()){ System.out.println(m.start()); //打印出满足p模式中的分组1——只有数字 System.out.println(m.group(1)); System.out.println(m.end()); } } }
回忆过去,珍惜现在,放眼未来