Java的Pattern与Match类

本文详细介绍Java中Pattern和Matcher类的使用方法,包括模式对象的创建、匹配对象的获取及各种实用方法如find、matches等。并通过一个具体示例展示如何在字符串中查找和处理匹配的价格数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(模式类)Pattern与(匹配类)Match就是检索和指定模式匹配的字符串。
这些类在java.util.regex包中。
#“Pattern类”
方法:
Pattern compile(String regex)//使用Pattern初始化创建一个模式对象(对正则表达式的封装)
Matcher matcher(CharSequence input)//返回一个Matcher对象,称作匹配对象
public boolean find () //寻找input和regex匹配的下一系列,成功true,失败则false
public boolean matches() //判断input是否完全和regex完全匹配
#“Matcher类”
Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例
Matcher方法如下:
int end()
返回当前匹配的子串的最后一个字符在原目标字符串中的索引位置 。
int end(int group)
返回与匹配模式里指定的组相匹配的子串最后一个字符的位置。
boolean find()
尝试在目标字符串里查找下一个匹配子串。
boolean find(int start)
重设Matcher对象,并且尝试在目标字符串里从指定的位置开始查找下一个匹配的子串。
String group()
返回当前查找而获得的与组匹配的所有子串内容
String group(int group)
返回当前查找而获得的与指定的组匹配的子串内容
boolean matches()
尝试对整个目标字符展开匹配检测,也就是只有整个目标字符串完全匹配时才返回真值。
Pattern pattern()
返回该Matcher对象的现有匹配模式,也就是对应的Pattern 对象。
String replaceAll(String replacement)
将目标字符串里与既有模式相匹配的子串全部替换为指定的字符串
下面为实例:

import java.util.regex.Matcher;//匹配类
import java.util.regex.Pattern;//模式类
import java.util.Scanner;
public class Example1_2FoundPrice {
    public static void main(String[] args) {
        String s="牛奶:89.8元,香肠:12.9元,啤酒:69元,巧克力:132元";
        String regex="[0123456789.]+";//【代码1】//匹配数字与小数点的正则表达式的字符串
        int number=0;
        double sum=0.0;
        Pattern p = Pattern.compile(regex);//返回正则表达式表达的字符串
        //【代码2】//使用regex初始化模式对象pattern
                Matcher m = p.matcher(s);//正则与s匹配,只有匹配了才返回
        // Pattern.matcher(CharSequenceinput)返回一个Matcher对象。
        // Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例。
        //Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持。
        while(m.find()) {//对字符串s进行匹配
            System.out.println(m.group());//返回匹配到的子字符串
            number=number+1;
            try{
                sum=sum+Double.parseDouble(m.group());//【代码3】//获取子匹配成功结果字符串并转成Double型类
            }
            catch(NumberFormatException e){
                System.out.println(e.getMessage());
            }
        }
        System.out.println("购物小票中的商品种类:"+number+"种");
        System.out.println("购物小票中的价格总额:"+sum+"元");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值