(模式类)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+"元");
}
}