码迷,mamicode.com
首页 > 其他好文 > 详细

Pattern类和Matcher类

时间:2015-05-22 11:35:54      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:java   pattern   matcher   

Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。下面来通过具体例子了解一下:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo {

	public static void main(String[] args) {
		String string = "1983-07-27";
		String patString = "\\d{4}-\\d{2}\\d{2}";
		Pattern pattern = Pattern.compile(patString);
		Matcher matcher = pattern.matcher(string);
		if (matcher.matches()) {
			System.out.println("日期格式合法!");
		} else {
			System.out.println("日期格式不合法!");
		}

	}

}


当然也可以通过使用Pattern类,对一个字符串进行拆分工作,这个在一般的机试中经常会考到:

import java.util.regex.Pattern;

public class RegexDemo01 {

	public static void main(String[] args) {
		String string = "A1B22C333D4444E55555F";
		String patString = "\\d+";//定义拆分规则,因为字符串中数字个数不一样,所以这里用到\d+表示1位或者多位数字都可以。
		Pattern pattern = Pattern.compile(patString);//实例化Pattern类
		String[] strings=pattern.split(string);
		for (int i = 0; i < strings.length; i++) {
			System.out.print(strings[i]+"\t");
		}
	}

}


运行如下:A B C D E F 

 

了解了匹配和拆分工作,下面看一下Matcher类的替换操作:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo01 {

	public static void main(String[] args) {
		String string = "A1B22C333D4444E55555F";
		String patString = "\\d+";// 定义拆分规则
		Pattern pattern = Pattern.compile(patString);// 实例化Pattern类
		Matcher matcher = pattern.matcher(string);
		String newString = matcher.replaceAll("_");
		System.out.println(newString);
	}

}


运行实例:A_B_C_D_E_F

 

其实String类也对正则表达式有支持,String类中有三个方法支持正则操作:

1.public boolean matches(String regex)     字符串匹配;

2.public String replaceAll(String regex,String replacement)    字符串替换;

3.public String[] split(String regex)      字符串拆分;

下面通过一个例子来看一看怎么用:

public class RegexDemo01 {

	public static void main(String[] args) {
		String string1 = "A1B22C333D4444E55555F".replaceAll("\\d+", "--");
		boolean temp = "1983-01-01".matches("\\d{4}-\\d{2}-\\d{2}");
		String[] strings = "A1B22C333D4444E55555F".split("\\d+");
		System.out.println(string1);
		System.out.println(temp);
		for (String string : strings) {
			System.out.print(string + "\t");
		}
	}

}

运行实例:

A--B--C--D--E--F
true
A B C D E F 

可以发现以上程序运行结果和以前是一样的,所以在此建议读者以后最好直接在String类中的方法,这样比较方便。

喜欢的童鞋可以关注我

Pattern类和Matcher类

标签:java   pattern   matcher   

原文地址:http://blog.csdn.net/yayun0516/article/details/45913673

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!