网站首页 新闻首页 网页设计图形动画软件编程网站开发办公软件操作系统数据库网络技术认证考试范文资料黑客攻防 书籍教程 进入论坛

处理正则表达式的java包:regexp

http://www.diybl.com/ 2008-3-11  网络 点击:  [ 评论 ]
文章搜索:    【点击打包该文章】

 原文:http://hedong.3322.org/archives/000309.html

处理正则表达式的java包:regexp

  虽然apache认为JakartaORO是一个更完备的正则表达式处理包,但regexp的应用也是非常广泛,大概是因为它的简单吧。下面是regexp的学习笔记。

1、下载安装


下载源码

cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login
password: anoncvs
cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout jakarta-regexp
或下载编译好的包

wget http://apache.linuxforum.net/dist/jakarta/regexp/binaries/jakarta-regexp-1.3.tar.gz

2、基本情况


1)Regexp是一个由100%纯java正则式处理包,是Jonathan Locke捐给Apache软件基金会的。 他最初开发这个软件是在1996年,在时间的考验面前RegExp表达非常坚挺:)。 它包括完整的Javadoc文档,以及一个简单的Applet来做可视化调试和兼容性测试.

2)RE类regexp包中非常重要的一个类,它是一个高效的、轻量级的正则式计算器/匹配器的类,RE是regular expression的缩写。正则式是能够进行复杂的字符串匹配的模板,而且当一个字符串能匹配某个模板时,你可以抽取出那些匹配的部分,这在进行文本解 析时非常有用。下面讨论一下正则式的语法。
  为了编译一个正则式,你需要简单地以模板为参数构造一个RE匹配器对象来完成,然后就可调用任一个RE.match方法来对一个字符串进行匹配检查,如果匹配成功/失败,则返回真/假值。例如:


RE r = new RE("a*b");
boolean matched = r.match("aaaab");

  RE.getParen可以取回匹配的字符序列,或者匹配的字符序列的某一部分(如果模板中有相应的括号的话),以及它们的位置、长度等属性。如:


RE r = new RE("(a*)b"); // Compile expression
boolean matched = r.match("xaaaab"); // Match against "xaaaab"

String wholeExpr = r.getParen(0); // wholeExpr will be ''aaaab''
String insideParens = r.getParen(1); // insideParens will be ''aaaa''

int startWholeExpr = r.getParenStart(0); // startWholeExpr will be index 1
int endWholeExpr = r.getParenEnd(0); // endWholeExpr will be index 6
int lenWholeExpr = r.getParenLength(0); // lenWholeExpr will be 5

int startInside = r.getParenStart(1); // startInside will be index 1
int endInside = r.getParenEnd(1); // endInside will be index 5
int lenInside = r.getParenLength(1); // lenInside will be 4

  RE支持正则式的后向引用,如:


([0-9]+)=\1
匹配 n=n (象 0=0 or 2=2)这样的字符串

3)RE支持的正则式的语法如下:
字符
unicodeChar Matches any identical unicode character
\ Used to quote a meta-character (like ''*'')
\\ Matches a single ''\'' character
\0nnn Matches a given octal character
\xhh Matches a given 8-bit hexadecimal character
\\uhhhh Matches a given 16-bit hexadecimal character
\t Matches an ASCII tab character
\n Matches an ASCII newline character
\r Matches an ASCII return character
\f Matches an ASCII form feed character

字符集
[abc] 简单字符集
[a-zA-Z] 带区间的字符集
[^abc] 字符集的否定

标准POSIX 字符集
如果图片或页面不能正常显示请点击这里 站内搜索:   
上一篇文章:classloader基础
下一篇文章:Java设计模式Memento探讨

推荐文章

文章评论

请您留言

 

最新新闻