java 怎么利用正则表达式从给定的字符串中取出匹配规则字符串

 我来答
百度网友59414f75
推荐于2018-03-02 · 知道合伙人软件行家
百度网友59414f75
知道合伙人软件行家
采纳数:422 获赞数:1663
淘宝5年运营经验 2年化妆品包装经验 5年SEO经验 6年电商经验 亚马逊运营

向TA提问 私信TA
展开全部

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时,才可以使用。

千锋教育
2016-05-18 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
利用正则表达式从给定的字符串中取出符合匹配规则的字符串的Java程序如下: import java.util.regex.Matcher;import java.util.regex.Pattern;public class E { public static void main(String[] args) { Pattern p = Pattern.compile("[A-Za-z]+"灶戚绝);//设定隐姿匹配规则为取出字符串中的字母 Matcher m = p.matcher("仔型12sifiwq820aufu");//与字符串匹配 while(m.find()){ System.out.println(m.group()); } }}运行结果: sifiwqaufu
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2017-11-22
展开全部
String testString 戚备= "java怎么利用正则表达式从给定的字高肆毁符串中取出匹配规雹汪则字符串";
Pattern pattern = Pattern.compile("\\w+");  
   
Matcher matcher = pattern.matcher(testString);
while(matcher.find())
{
    System.out.println(matcher.group());
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式