Java中使用正则表达式实现字符串匹配(2)

分类: J2SE   出处:iocblog整理  更新时间:2008-07-28   添加到收藏  

  因此在pattern类中,提供了2个重载的静态方法,其返回值是pattern对象(的引用)。如:
  
  public static pattern compile(string regex) {
  return new pattern(regex, 0);
  }
  
  当然,我们可以声明pattern类的句柄,如pattern p=null;
  
  ②p.matcher(str)表示以用模板p去生成一个字符串str的匹配器,它的返回值是一个matcher类的引用,为什么要这个东西呢?按照自然的想法,返回一个boolean值不行吗?
  
  我们可以简单的使用如下方法:
  
  boolean result=pattern.compile(regex).matcher(str).find();
  
  其实是三个语句合并的无句柄方式。无句柄常常不是好方式。后面再学习matcher类吧。先看看regex――这个怪咚咚。
  
  正则表达式之限定符
  
  正则表达式(regular expression)是一种生成字符串的字符串。晕吧。比如说,string regex="me+";这里字符串me+能够生成的字符串是:me、mee、meee、meeeeeeeeee等等,一个正则表达式可能生成无穷的字符串,所以我们不可能(有必要吗?)输出正则表达式产生的所有东西。
  
  反过来考虑,对于字符串:me、mee、meee、meeeeeeeeee等等,我们能否有一种语言去描述它们呢?显然,正则表达式语言是这种语言,它是一些字符串的模式――简洁而深刻的描述。
  
  我们使用正则表达式,用于字符串查找、匹配、指定字符串替换、字符串分割等等目的。
  
  生成字符串的字符串――正则表达式,真有些复杂,因为我们希望由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)描述任意的字符串,而且要准确。
  
  先看几个正则表达式例子:
  
  程序3:我们总用这个程序测试正则表达式。
  
  import java.util.regex.*;
  
  class regex1{
  public static void main(string args[]) {
  string str="for my money, the important thing ";
  string regex="ab*";
  boolean result=pattern.compile(regex).matcher(str).find();
  system.out.println(result);
  }
  }//ture
  
  ①"ab*"――能匹配a、ab、abb、abbb……。所以,*表示前面字符可以有零次或多次。如果仅仅考虑查找,直接用"a"也一样。但想想替换的情况。 问题regex="abb*"结果如何?
  
  ②"ab+"――能匹配ab、abb、abbb……。等价于"abb*"。问题regex="or+"结果如何?
  
  ③"or?"――能匹配o和or。? 表示前面字符可以有零次或一次。
  
  这些限定符*、+、?方便地表示了其前面字符(子串)出现的次数(我们用{}来描述): x*,零次或多次 ≡{0,}(来源 www.iocblog.net)

上一页 [1] [2]


Tag: 正则表达式



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。