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类中的方法,这样比较方便。

喜欢的童鞋可以关注我

时间: 2024-10-08 16:48:00

Pattern类和Matcher类的相关文章

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

JAVA正则表达式:Pattern类与Matcher类详解

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

java中使用Pattern类中和Matcher类进行查找和替换,你会吗?

前言 无论是哪一门语言,我们总会用到正则表达式来进行字符串的查找和替换.Java中也不为过,我曾经写过一个网页---正则表达式在线测试.那时候,我还没有开始学习Java,不知道Java支持正则表达式,所以我的第一个方案是想办法将数据传输到后台,然后利用Shell脚本正则表达式得到匹配结果.如果后来真的那么做了,那就二了.后来我研究了以下别的类似的网站,发现甚至连js文件都不用写,直接将函数写在html文件中就能够完成这一个任务.一天的时间,我把这个网站给写了出来.所以,即使不是脚本型语言,了解以

[01] Pattern类和Matcher类

在Java中,有个java.util.regex包,这是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 它主要有两个类: Pattern   一个正则表达式经编译后的表现模式,可以理解为某正则的对应类 Matcher  匹配检查器,根据Pattern对象作为匹配模式对字符串进行匹配检查 1.Pattern 1.1 获取Pattern对象 Pattern类用于创建一个正则表达式,或者说创建一个匹配模式对象,我们不能直接创建,需要使用其静态方法compile实现: static Pat

正则表达式:Pattern类与Matcher类详解

一.捕获组的概念 捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的.例如,在表达式((A)(B(C)))中,存在四个这样的组: 1     ((A)(B(C))) 2     (A) 3     (B(C)) 4     (C) 组零始终代表整个表达式. 以(?) 开头的组是纯的非捕获 组,它不捕获文本,也不针对组合计进行计数. 与组关联的捕获输入始终是与组最近匹配的子序列.如果由于量化的缘故再次计算了组,则在第二次计算失败时将保留其以前捕获的值(如果有的话)例如,将字符串"aba&

详解Pattern类和Matcher类

java正则表达式通过java.util.regex包下的Pattern类与Matcher类实现(建议在阅读本文时,打开java API文档,当介绍到哪个方法时,查看java API中的方法说明,效果会更佳). Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(String regex)简单工厂方法创建一个正则表达式, Java代码示例: Pattern p=Pattern.compile("\\w+

14-01 Java matches类,Pattern类,matcher类

Pattern类 正则表达式常见规则 A:字符 x 字符 x.举例:'a'表示字符a \\ 反斜线字符. \n 新行(换行)符 ('\u000A') \r 回车符 ('\u000D') B:字符类 [abc] a.b 或 c(简单类),其中一个 [^abc] 任何字符,除了 a.b 或 c(否定) [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) [0-9] 0到9的字符都包括 C:预定义字符类 . 任何字符.我的就是.字符本身,怎么表示呢? \. \d 数字:[0-9] \

正则表达式:Matcher类

Matcher类: 使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组和组的下标怎么对应的. 下面我们看看一个小例子,来说明这个问题 \w(\d\d)(\w+) 这个正则表达式有三个组: 整个\w(\d\d)(\w+) 是第0组 group(0) (\d\d)是第1组 group(1) (\w+)是第2组 group(2) 我们看看和正则表达式匹配的一个字符串x99Sup

Java基础知识强化78:正则表达式之获取功能(Pattern 和 Matcher类的使用)

1. 获取功能: Pattern 和 Matcher类结合使用 2. 使用案例: 1 package cn.itcast_05; 2 3 import java.util.regex.Matcher; 4 import java.util.regex.Pattern; 5 6 /* 7 * 获取功能 8 * Pattern和Matcher类的使用 9 * 10 * 模式和匹配器的基本使用顺序 11 */ 12 public class RegexDemo { 13 public static v