posts - 97,  comments - 93,  trackbacks - 0
正则表达式主要应用于文本的处理,如检索,替换,检查错误,文字拆分...实在是一言难尽,如果要全部写出来,一本书都不差不多。还好oreilly已经为我们出了一本了。
 
讲具体内容以前先给个完整的例子,这样能有个感性的认识。
import java.util.regex.*;
public class Regex{
   public static void main(String[] args){
        String text = "my email address is "nicky.jcoder@gmail.com";
        Pattern pattern = Pattern.compile("\\w+@\\w+.\\w+");
        Matcher matcher = pattern.matcher(text);
        if(matcher.find()){
            System.out.println(matcher.group());
        }
 
   }
}
把这段程序用jdk或jcreator或水腻的便了。反正运行起来就是了
输出结果:xhinker@163.com
当你看完下面的东西回头再看看这段程序就会发现,这不过是小菜一碟
 
字符和字符类

表格 A: 字符匹配

操作

解释

例子

结果

.

单个字符匹配

   .ord

匹配 “ford”, “lord”, “2ord”,

[ ]

多个字符列表

   [cng]

只会匹配 “cord”, “nord”, 和 “gord”

[^ ]

不出现字符列表

   [^cn]

匹配 “lord”, “2ord”, 等. 但不会匹配 “cord” or “nord”



  [a-zA-Z]

匹配 “aord”, “bord”, “Aord”, “Bord”等



   [^0-9]

匹配 “Aord”, “aord”, 等. 但不会匹配“2ord”, 等.

 

表格 B: 重复操作符

操作

解释

例子

结果

?

匹配0次或1次

 “?erd”

匹配 “berd”, “herd”“erd”等

*

匹配0次以上

“n*rd”

匹配 “nerd”, “nrd”, “neard”, 等.

+

匹配1次以上

“[n]+erd”

匹配 “nerd”, “nnerd”, 等., 但不匹配 “erd”

{n}

匹配n次

“[a-z]{2}erd”

匹配“cherd”, “blerd”, 等. 但不匹配 “nerd”, “erd”, “buzzerd”, 等.

{n,}

匹配n次以上

“.{2,}erd”

匹配 “cherd” and “buzzerd”, but not “nerd”

{n,N}

匹配n-N次

 “n[e]{1,2}rd”

匹配 “nerd” and “neerd”等

 
常用符号:
\d:[0-9]
\D:[^0-9]
\w:[a-zA-Z0-9]
\W:[^a-zA-Z0-9]
 
{?i):大小写无关
 
\b和\B分别表示词边界和非词边界
当然上面这些只不过是最常用的,写出几个正则表达式是没有问题了。接下来说说java。
在java里\有其自身的意义,所以在用\s,\d的时候要加上一个\也就是\\s 、\\d \\(等
java自1.4后开始支持正则表达式,东西都放在java.util.regex包里,用Pattern生成一个模式对象,然后用matcher进行匹 配。如果要输出匹配结果的话,一定要记得写上matcher.find();否则会出错。当然也可以用替换,这就要看你的喜好拉。想看更多的例子就去 jdk帮助文档。
posted on 2006-12-04 13:16 wqwqwqwqwq 阅读(406) 评论(0)  编辑  收藏 所属分类: Simple Java

只有注册用户登录后才能发表评论。


网站导航:
 
<2006年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456




常用链接

留言簿(10)

随笔分类(95)

随笔档案(97)

文章档案(10)

相册

J2ME技术网站

java技术相关

mess

搜索

  •  

最新评论

阅读排行榜

校园梦网网络电话,中国最优秀的网络电话