您的位置:首页 > 其它

正则表达式 Pattern 、 Matcher类

2012-12-03 11:25 162 查看
原文:http://hi.baidu.com/vip_qining/item/723d5f5117f462b3adc85752

Pattern、Matcher类

这两个类为正则的核心类,都定义在java.util包中

Pattern类的主要使用是进行正则规范(如之前的“[0-9]”就属于正则规范)的编写,而Matcher类主要是执行规范,验证一个字符串是否符合规范





以上的正则,如果要想驱动起来,则必须依靠Pattern类和Matcher类

Pattern主要是表示一个规则的意思,就是,正则表达式的规则需要在Pattern类中使用

Pattern类中如果想要取得Pattern类的事例,则必须调用compile()方法

Matcher类主要表示使用Pattern指定好的验证规则

static ( regex)

将给定的正则表达式编译到模式中。static ( regex, int flags)

将给定的正则表达式编译到具有给定标志的模式中。

( input)

创建匹配给定输入与此模式的匹配器。

[]( input, int limit)

围绕此模式的匹配拆分给定输入序列。

Matcher类

boolean()

尝试将整个区域与模式匹配。

( replacement)

替换模式与给定替换字符串相匹配的输入序列的每个子序列。

事例验证一个字符串是否是一个合法的日期格式



package com.qn;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegixDemo2 {

public static void main(String[] args) {

String str="1991-03-13";//定义一个字符串

String pat="\\d{4}-\\d{2}-\\d{2}";//指定好正则表达式

Pattern pattern=Pattern.compile(pat);//实例化Pattern类

Matcher m=pattern.matcher(str);//实例化Matcher类

if (m.matches()) {//进行验证匹配使用正则

System.out.println("日期格式合法");

}else{

System.out.println("日期格式不合法");

}

}

}

结果



Pattern类中也可以使用正则进行字符串的拆分

事例

package com.qn;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegixDemo3 {

public static void main(String[] args) {

//要求将里面的字符取出,也就是按照数字拆分

String str="123fdsa45f6a4df56sa";//定义一个字符串

String pat="指定好正则表达式

Pattern pattern=Pattern.compile(pat);//实例化Pattern类

String s[]=pattern.split(str);//执行拆分操作

for (int i = 0; i < s.length; i++) {

System.out.print(s[i]+"\t");

}

}

}

结果



还可以使用Matcher类中的字符串替换功能

范例:将字符串中的全部数字替换成“_”

package com.qn;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegixDemo6 {

public static void main(String[] args) {

//要求将里面的字符取出,也就是按照数字拆分

String str="123fdsa45f6a4df56sa";//定义一个字符串

String pat="指定好正则表达式

Pattern pattern=Pattern.compile(pat);//实例化Pattern类

Matcher mat=pattern.matcher(str);//实例化Matcher对象

String newStr=mat.replaceAll("_");

System.out.println(newStr);

}

}

在JDK1.4之后,java对正则进行了一些扩充,在String中开始直接支持正则的操作

String类中对正则的支持



事例

package com.qn;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegixDemo6 {

public static void main(String[] args) {

String str="a1b22c333d4444e55555".replaceAll("+", "_");

System.out.println("字符串替换操作:"+str);

}

}

结果



package com.qn;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegixDemo6 {

public static void main(String[] args) {

String str="a1b22c333d4444e55555".replaceAll("+", "_");

boolean temp="1991-03-13".matches("}");

String str1[]="a1b22c333d4444e55555".split("+");

System.out.println("字符串替换操作:"+str);

System.out.println("字符串日期验证:"+temp);

System.out.println("字符串的拆分:");

for (int i = 0; i < str1.length; i++) {

System.out.print(str1[i]+"\t");

}

}

}

结果



package com.qn;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegixDemo4 {

public static void main(String[] args) {

String info="qining:98|yanjie:100|weige:100";//定义一个字符串

//查分的形式按照

/*qining---98

* yanjie---100

* weige---100

* */

String str1[]=info.split("\\|");

System.out.println("字符串的拆分:");

for (int i = 0; i < str1.length; i++) {

System.out.println(str1[i]+"\t");

}

}

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: