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());
		}
	}
}

  

posted @ 2011-10-31 19:51  胖鹅  阅读(236)  评论(0编辑  收藏  举报