Pattern、Matcher正则表达java

1.组(Group)

组是正则表达式的一个子集,每个组都有一个编号,通过从左到右计算左括号来进行编号。正则表达式“((A)(B©)) ”有4个组:
((A)(B©))
(A)
(B©)
©
组0表示整个正则表达式,除组0外每一个组都被一对括号括住,如果一个正则表达式里面没有括号,则它只有组0即整个表达式。下面是组号的示例程序:

Pattern p = Pattern.compile("([0-9]+)([^0-9]+)");
Matcher m1 = p.matcher("name jack, age 18, weight 70, height 178cm");
if (m1.find())
{
    System.out.printf("group0: %s\n", m1.group());
    System.out.printf("group1: %s\n", m1.group(1));
    System.out.printf("group2: %s\n", m1.group(2));
}
/*程序输出
group0: 18, weight 
group1: 18
group2: , weight 
*/

2.替换

Matcher对象支持替换操作的方法有:

replaceFirst
replaceAll
appendReplacement和appendTail

replaceFirst替换匹配到的第一个字符串,replaceAll替换所有匹配到的字符串,示例如下:

//替换第一个数字为0

Pattern p = Pattern.compile("[0-9]+");
Matcher m1 = p.matcher("name jack, age 18, weight 70, height 178cm");
String result = m1.replaceFirst("0");
System.out.println(result);
/*程序输出
name jack, age 0, weight 70, height 178cm
*/
//替换所有数字为0
Pattern p = Pattern.compile("[0-9]+");
Matcher m1 = p.matcher("name jack, age 18, weight 70, height 178cm");
String result = m1.replaceAll("0");
System.out.println(result);
/*程序输出
name jack, age 0, weight 0, height 0cm
*/

appendReplacement和appendTail提供了一种更灵活的方式来执行替换操作,和find()方法一起使用来定制每一个匹配到的字符串的替换方式。例如对每一个匹配到的字符串结尾加"0",示例如下:

//所有字符结尾加0替换
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher("name jack, age 18, weight 70, height 178cm");
StringBuffer sb = new StringBuffer();
while (m.find()) {
    m.appendReplacement(sb, m.group() + "0");
}
m.appendTail(sb);
System.out.println(sb.toString());
/*程序输出
name jack, age 180, weight 700, height 1780cm
*/

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值