快速业务通道

JAVA中正则表达式的应用(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
(一)(5) 时间:2011-06-22 IBM / 陈广佳

★查找单个匹配:

首先,让我们尝试把CONTNET列中的[音标]字段的内容列示出来,由于所有单词的记录中都有这一项并且都在字串开始位置,所以这个查找工作比较简单:

确定相应的正则表达式:\[[^]]+\]

这个是很简单的正则表达式,其意思是要求相匹配的字符串必须为以一对中括号包含的所有内容,如[''kevin] 、[名词]等,但内容中不包括"]"符号,也就是要避免出现"[][]"会作为一个匹配对象的情况出现(有关正则表达式的基础知识请参照有关资料,这里不再详述)。

注意,在 Java 中,你必须对每一个向前的斜杠("\")进行转义处理。所以我们要在上面的正则表达式里每个"\"前面加上一个"\"以免出现编译错误,也就是在 JAVA 中初始化正则表达式的字符串的语句应该为:

String restring=" \\[[^]]+\\]";

并且在表达式里每个符号中间不能有空格,否则就会同样出现编译错误。

实例化PatternCompiler对象,创建Pattern对象

PatternCompiler compiler=new Perl5Compiler();

Pattern pattern=compiler.compile(restring);

创建PatternMatcher对象,调用PatternMatcher接口的contain()方法检查匹配情况:

PatternMatcher matcher=new Perl5Matcher();      if (matcher.contains(content,pattern)) {          //处理代码片段      }

这里matcher.contains(content,pattern)中的参数 content是从数据库里取来的字符串变量。该方法只会查到第一个匹配的对象字符串,但是由于音标项均在CONETNET内容字符串中的起始位置,所以用这个方法就已经可以保证把每条记录里的音标项找出来了,但更为直接与合理的办法是使用boolean matchesPrefix(PatternMatcherInput input, Pattern pattern)方法,该方法验证目标字符串是否以正则表达式所匹配的字串为起始。

JAVA中正则表达式的应用(一)(6)

时间:2011-06-22 IBM / 陈广佳

具体实现的完整的程序代码如下:

package RegularExpressions;
 //import ……
 import org.apache.oro.text.regex.*;
 // 使用 Jakarta-ORO 正则表达式库前需要把它加到 CLASSPATH 里面,如果用 IDE 是 //JBUILDER,那么也可以在 JBUILDER 里直接自建新库。
 public class yisuo{
  public static void main(String[] args){
  try{
 // 使用 JDBC DRIVER 进行 DBMS 连接,这里我使用的是一个第三方 JDBC
 //DRIVER,Microsoft 本身也有一个面向 SQLSERVER7/2000 的免费 JDBC //DRIVER,但其性能真的是奇差,不用也罢。
        Class.forName("com.jnetdirect.jsql.JSQLDriver");
          Connection con=DriverManager.getConnection
          ("jdbc:JSQLConnect://kevin:1433","kevin chen","re");
          Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
          ResultSet.CONCUR_UPDATABLE);
 // 为使用 Jakarta-ORO 库而创建相应的对象
 String rsstring=" \\[[^]]+\\]";
          PatternCompiler orocom=new Perl5Compiler();
          Pattern pattern=orocom.compile(rsstring);
          PatternMatcher matcher=new Perl5Matcher();
          ResultSet uprs = stmt.executeQuery("SELECT * FROM aesop");
          while (uprs.next()) {
 Stirng  word=uprs.getString("word");
          Stirng  content=uprs.getString("content");
            if(matcher.contains(content,pattern)){
          // 或 if(matcher.ma

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号