正则表达式 Pattern 、 Matcher类

原文: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");
   }
 }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值