正则表达式--find和lookingAt方法

直接看例子

public static void main(String[] args)
 {  
  Pattern p = Pattern.compile("\\d{3,5}");
  String s = "123-34345-234-00";
  Matcher m = p.matcher(s);//注意,matcher是全局匹配.这里明显是不匹配.但是,由于s里面的"123"和p是匹配的,所以他会将这三个数字去掉.下次调用匹配方法的时候,是将剩余的字符串来继续匹配
  p(m.matches());
  m.reset();//重新设置到最开始..如果这里没有这一步,下面的匹配将受到影响...
  p(m.find());//find方法是部分匹配..也就是说,只要找到有匹配的字符段就算匹配...但是,他和matcher方法一样也会将s里面已经匹配的字符去掉....这里匹配的是"123" 
  p(m.find());//剩余的字符"-34345-234-00"继续匹配.匹配的是"34345"
  p(m.find());//剩余字符"-234-00"继续匹配.匹配的是"234"
  p(m.find());//剩余字"-00"符继续匹配.已经没有匹配的字符,所以这个方法不匹配.
  p(m.lookingAt());//lookingAt方法也是部分匹配,但是他都是从最开始进行匹配...所以每次都是匹配"123"
  p(m.lookingAt());
  p(m.lookingAt());
  p(m.lookingAt());
 }
 
 public static void p(Object o)
 {
  System.out.println(o);
 }

总结一下,matches方法和find方法会造成冲突,记得要调用reset方法...所以使用的时候要特别注意.

还有start和end方法..这两个方法写在find方法后..比如这样

p(m.find());
  p(m.start()+"-"+m.end());
  p(m.find());
  p(m.start()+"-"+m.end());
  p(m.find());
  p(m.start()+"-"+m.end());
  p(m.find());

start方法访问的是开始匹配的问题.注意,end方法返回的是最后匹配位置的下一个位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值