快速业务通道

JAVA中正则表达式的应用(二) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

(光看方法的解释是不是很不好理解?不要急,待会结合例子就比较容易明 白了)

JAVA中正则表达式的应用(二)(4)

时间:2011-06-22 IBM / 陈广佳

一个Matcher实例是被用来对目标字符串进行基于既有模式(也就是一个给定 的Pattern所编译的正则表达式)进行匹配查找的,所有往Matcher的输入都是通 过CharSequence接口提供的,这样做的目的在于可以支持对从多元化的数据源所 提供的数据进行匹配工作。

我们分别来看看各方法的使用:

★matches()/lookingAt ()/find():

一个Matcher对象是由一个Pattern对象调用其matcher()方法而生成的,一旦 该Matcher对象生成,它就可以进行三种不同的匹配查找操作:

matches()方法尝试对整个目标字符展开匹配检测,也就是只有整个目标字符 串完全匹配时才返回真值。

lookingAt ()方法将检测目标字符串是否以匹配的子串起始。

find()方法尝试在目标字符串里查找下一个匹配子串。

以上三个方法都将返回一个布尔值来表明成功与否。

★replaceAll ()/appendReplacement()/appendTail():

Matcher类同时提供了四个将匹配子串替换成指定字符串的方法:

replaceAll()

replaceFirst()

appendReplacement()

appendTail()

replaceAll()与replaceFirst()的用法都比较简单,请看上面方法的解释。 我们主要重点了解一下appendReplacement()和appendTail()方法。

appendReplacement(StringBuffer sb, String replacement) 将当前匹配子 串替换为指定字符串,并且将替换后的子串以及其之前到上次匹配子串之后的字 符串段添加到一个StringBuffer对象里,而appendTail(StringBuffer sb) 方法 则将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。

例如,有字符串fatcatfatcatfat,假设既有正则表达式模式为 "cat",第一次匹配后调用appendReplacement (sb,"dog"),那么这时StringBuffer sb的内容为fatdog,也就是 fatcat中的cat被替换为dog并且与匹配子串前的内容加到sb里,而第二次匹配后 调用appendReplacement(sb,"dog"),那么sb的内容就变为 fatdogfatdog,如果最后再调用一次appendTail(sb),那么sb最终的内容将是 fatdogfatdogfat。

JAVA中正则表达式的应用(二)(5)

时间:2011-06-22 IBM / 陈广佳

还是有点模糊?那么我们来看个简单的程序:

//该例将把句子里的"Kelvin"改为"Kevin" import java.util.regex.*; public class MatcherTest{   public static void main(String[] args)              throws Exception {     //生成Pattern对象并且编译一个简单的正则表达式 "Kelvin"     Pattern p = Pattern.compile("Kevin");     //用Pattern类的matcher()方法生成一个Matcher对象     Matcher m = p.matcher("Kelvin Li and Kelvin Chan are both working in Kelvin Chen''s KelvinSoftShop company");     StringBuffer sb = new StringBuffer();     int i=0;     //使用find()方法查找第一个匹配的对象     boolean result = m.find();     //使用循环将句子里所有的kelvin找出并替换再将内容加到sb里     while(result) {       i++;       m.appendReplacement(sb, "Kevin");       System.out.println("第"+i+"次匹配后sb的内容 是:"+sb);       //继续查找下一个匹配对象       result = m.find();     }     //最后调用appendTail()方法将最后一次匹配后的剩余字符串加到sb里 ;     m.appendTail(sb);     System.out.print

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号