正则表达式与模式匹配

概念:

1,   模式匹配:就是检索与指定模式匹配的字符串。 Java 提供了专门进行模式匹配的类,在 java.util.regex

1)   建立模式对象:

使用 Pattern 类创建一个对象,称为模式对象。它调用类方法 compileString pattern )完成这一任务,参数 pattern 是一个正则表达式,称为模式对象使用的模式。若 pattern 指定的正则表达式有错, compile 方法将抛出异常, PatternSyntaxException

Pattern 类可以调用类方法 compile(String regex,int flag) 返回一个 pattern 对象,

2)   建立匹配对象

模式对象调用方法 matcher(CharSequence input); 返回一个 Matcher 对象 m ,称为匹配对象,参数 input 可以是任何实现了 CharSequence 接口的类创建的对象。 StringStringBuffer 类都使用了 CharSequence 接口。

Matcher 对象可以使用 3 个方法寻找参数 Input 指定的字符序列中是否有与模式 pattern 匹配的子序列。

a)        public boolean find () ; 寻找 input 中第一个与模式 pattern 匹配的子序列,若 find ()返回 true,m 调用 start()end() 可以得到该匹配模式子序列在 input 中的开始位置和结束位置。

b)       public boolean matches ();判断 input 是否完全与 pattern 匹配

c)       public Boolean lookingAt ();判断从 input 开始位置是否有与 pattern 匹配的子序列。若返回 True, m 调用 start()end() 可以得到 lookingAt ()方法找到的匹配模式子序列在 input 中的开始位置和结束位置。

d)       public Boolean find int start );

e)        public string replaceAll String replacement );

f)        public String replaceFirst String replacement );

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class TestPattern {

    public static void main(String[] args) {

       Pattern p ;

       Matcher m ;

       String s1 = "0A1A2A3A4A5A6A7A8A9" ;

       p = Pattern.compile ( "\\dA\\d" );

       m = p.matcher(s1);

       System . out .println( "matches1:" +m.matches());

       while (m.find()) {

         String str = m.group();

         System . out .println( " " +m.start()+ " " +m.end()+ " 匹配模式子序列 :" );

         System . out .println(str);

       }

       String temp = m.replaceAll( "***" );

       System . out .println(temp);

       System . out .println(s1);

       m = p.matcher( "9A0A0A3" );

       if (m.matches()) {

         String str = m.group();

         System . out .println(str);

         System. out .println( "matches:" +m.matches());

         System. out .println( "find:" +m.find());

       } else {

         System . out .println( " 不完全匹配 !" );

       }

       if (m.lookingAt()) {

         String str = m.group();

         System . out .println(str);

       }

    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值