java正则匹配 -_java正则匹配

java正则提取需要用到Matcher类,下面给出案例示例供参考

需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Test {

public static void main(String[] args) {

String s = "A876X";

// 把要匹配的字符串写成正则表达式,然后要提取的字符使用括号括起来

// 在这里,我们要提取最后一个数字,正则规则就是“一个数字加上大于等于0个非数字再加上结束符”

Pattern pattern = Pattern.compile("(\\d)[^\\d]*$");

Matcher matcher = pattern.matcher(s);

if(matcher.find())

System.out.println(matcher.group(1));

}

}

关于Matcher 中的几个方法说明:

Mathcer.start()

Matcher.end()

Matcher.group()

当使用matches(),lookingAt(),find()执行匹配操作后,就可以利用以上三个方法得到更详细的信息.

start()返回匹配到的子字符串在字符串中的索引位置.

end()返回匹配到的子字符串的最后一个字符在字符串中的索引位置.

group()返回匹配到的子字符串

示例代码如下,具体功能请参考注释

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=p.matcher(“2223bb”);

m2.lookingAt(); //匹配2223

m2.start(); //返回0,由于lookingAt()只能匹配前面的字符串,所以当使用lookingAt()匹配时,start()方法总是返回0

m2.end(); //返回4

m2.group(); //返回2223

Matcher m3=p.matcher(“2223”); //如果Matcher m3=p.matcher(“2223bb”); 那么下面的方法出错,因为不匹配返回false

m3.matches(); //匹配整个字符串

m3.start(); //返回0

m3.end(); //返回3,原因相信大家也清楚了,因为matches()需要匹配所有字符串

m3.group(); //返回2223

另外,Mathcer类中start(),end(),group()均有一个重载方法它们是start(int i),end(int i),group(int i)专用于分组操作,Mathcer类还有一个groupCount()用于返回有多少组.

示例如下:

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,返回第二组匹配到的子字符串

注意: 只有当匹配操作成功,才可以使用start(),end(),group()三个方法,否则会抛出java.lang.IllegalStateException,也就是当matches(),lookingAt(),find()其中任意一个方法返回true时,才可以使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值