赞
踩
- java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现. Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式,
- Java代码示例: Pattern p=Pattern.compile("\\w+");
- p.pattern();//返回 \w+
- Pattern p=Pattern.compile("\\d+");
- String[] str=p.split("TestPattern97Matcher");
结果:str[0]="TestPattern" str[1]="Matcher"
- Pattern.matches("\\d+","2223");//返回true
- Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,这里aa不能匹配到
- Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,这里bb不能匹配到
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("22bb23");
- m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("22bb23");
- m.matches();//返回false,因为bb不能被\d+匹配,导致整个字符串匹配未成功.
- Matcher m2=p.matcher("2223");
- m2.matches();//返回true,因为\d+匹配到了整个字符串
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("22bb23");
- m.lookingAt();//返回true,因为\d+匹配到了前面的22
- Matcher m2=p.matcher("aa2223");
- m2.lookingAt();//返回false,因为\d+不能匹配前面的aa
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("22bb23");
- m.find();//返回true
- Matcher m2=p.matcher("aa2223bb");
- m2.find();//返回true
- Matcher m3=p.matcher("aabb");
- m3.find();//返回false
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("aa2223bb");
- m.find(5); // 返回true
- m.find(6); // 返回false
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("aaa2223bb");
- m.find();//匹配2223
- m.start();//返回3
- m.end();//返回7,返回的是2223后的索引号
- m.group();//返回2223
- Mathcer m2=m.matcher("2223bb");
- m.lookingAt(); //匹配2223
- m.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0
- m.end(); //返回4
- m.group(); //返回2223
- Matcher m3=m.matcher("2223bb");
- m.matches(); //匹配整个字符串
- m.start(); //返回0,原因相信大家也清楚了
- m.end(); //返回6,原因相信大家也清楚了,因为matches()需要匹配所有字符串
- m.group(); //返回2223bb
- Pattern p=Pattern.compile("([a-z]+)(\\d+)");
- Matcher m=p.matcher("aaa2223bb");
- m.find(); //匹配aaa2223
- m.groupCount(); //返回2,因为有2组
- m.start(1); //返回0 返回第一组匹配到的子字符串在字符串中的索引号
- m.start(2); //返回3
- m.end(1); //返回3 返回第一组匹配到的子字符串的最后一个字符在字符串中的索引位置.
- m.end(2); //返回7
- m.group(1); //返回aaa,返回第一组匹配到的子字符串
- m.group(2); //返回2223,返回第二组匹配到的子字符串
- Pattern p=Pattern.compile("\\d+");
- Matcher m=p.matcher("我的QQ是:456456 我的电话是:0532214 我的邮箱是:aaa123@aaa.com");
- while(m.find()) {
- System.out.println(m.group());
- }
输出:
- while(m.find()) {
- System.out.println(m.group());
- System.out.print("start:"+m.start());
- System.out.println(" end:"+m.end());
- }
则输出:
注意:只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用.
文章参考 :http://blog.csdn.net/kofandlizi/article/details/7323863
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。