JAVA 正则表达式陈广佳版本(超具体)(14)

输出功效为:
英文句: Kevin loves comic.
句子中文翻译: 凯文爱漫画
词性: 名词
意思: 凯文
英文句: Kevin is living in ZhuHai now.
句子中文翻译: 凯文现住在珠海
词性: 名词
意思: 凯文

★查找替换:
以上的两个应用都是纯真在查找字符串匹配方面的,我们再来看一下查找后如何对方针字符串举办替换。

譬喻我此刻想把第二个例句举办窜改,换为:Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。

也就是把
['kevin] [名词](人名凯文){(Kevin loves comic./凯文爱漫画/名词: 凯文)( Kevin is living in ZhuHai now. /凯文现住在珠海/名词: 凯文)}

改为:
['kevin] [名词](人名凯文){(Kevin loves comic./凯文爱漫画/名词: 凯文)( Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。)}

之前,我们已经相识Util.substitute()要领与Substiution接口,以及Substiution的两个实现类StringSubstitution和Perl5Substitution,我们就来看看怎么用Util.substitute()要领共同Perl5Substitution来完成我们上面提出的替换要求,确定正则表达式:

我们要先找到个中的整个例句部门,也就是由大括号包起来的字串,而且把两个例句别离分组,所以正则表达式为:"/{(/([^)]+/))(/([^)]+/))/}",假如用替换变量来取代分组,那么上面的表达式可以看为"/{$1$2/}",这样就可以更容易看出替换变量与分组间的干系。

按照上面的正则表达式Perl5Substitution类可以这样结构:
Perl5Substitution("{$1( Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。)}")

再按照这个Perl5Substitution工具来利用Util.substitute()要领便可以完成替换了,实现的代码片断如下:

try{ String content="['kevin] [名词](人名凯文){(Kevin loves comic./凯文爱漫画/名词: 凯文)(Kevin lives in ZhuHai now./凯文现住在珠海/名词: 凯文)}"; String ps1="//{(//([^)]+//))(//([^)]+//))//}"; String sentence; String pure; PatternCompiler orocom=new Perl5Compiler(); Pattern pattern1=orocom.compile(ps1); PatternMatcher matcher=new Perl5Matcher(); String result=Util.substitute(matcher, pattern1,new Perl5Substitution( "{$1( Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。)}",1), content,Util.SUBSTITUTE_ALL); System.out.println(result); } catch(Exception e) { System.out.println(e); }

输出功效是正确的,为:
['kevin] [名词](人名凯文){(Kevin loves comic./凯文爱漫画/名词: 凯文)( Kevin has seen《LEON》seveal times,because it is a good film./ 凯文已经看过《这个杀手不太冷》屡次了,因为它是一部好影戏。/名词:凯文。)}

至于有关利用numInterpolations参数的结构器用法,读者只要按照上面的先容本身动手试一下就会清楚了,在此就不再例述。

总结:

本文首先先容了Jakarta-ORO正则表达式库的工具与要领,而且接着举例让读者对实际应用有进一步的相识,固然例子都较量简朴,但但愿读者们在看了该文后对Jakarta-ORO正则表达式库有必然的认知,在实际事情中有所辅佐与开导。

其实在Jakarta org里除了Jakarta-ORO外尚有一个百分百的纯JAVA正则表达式库,就是由Jonathan Locke赠与Jakarta ORG的Regexp,在该包内里包括了完整的文档以及一个用于调试的Applet例子,对其有乐趣的读者可以到此下载。

参考资料:

本文的主要参考文章,该文在先容Jakarta-ORO的同时也为读者详尽理会了正则表达式的根基语法。
一个基于PERL的正则表达式详尽教程(固然该教程是基于PERL的,可是你并不需要有PERL的履历,固然那会有所辅佐),以及一个不错的正则表达式简例教程。
最不行缺少的虽然是Jakarta-ORO的辅佐文档

关于作者
陈广佳 Kevin Chen,汕头大学电子信息工程系工科学士,台湾大新出书社珠海区开拓部,现正环绕中日韩电子资料利用JAVA开拓电子辞书等相关项目。可通过E-mail:cgjmail@163.net于他接洽。

java.util.regex篇

此刻JDK1.4里终于有了本身的正则表达式API包,JAVA措施员可以免除找第三方提供的正则表达式库的周折了,我们此刻就顿时来相识一下这个SUN提供的迟来恩物- -对我来说确实如此。

1.简介:

java.util.regex是一个用正则表达式所订制的模式来对字符串举办匹配事情的类库包。

它包罗两个类:Pattern和Matcher

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdxpw.html