处理正则表达式的java包:regexp
原文: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 字符集
