java正则表达式查找/替换

正则表达式相关知识:http://www.jb51.net/article/16829.htm

查找

如利用正则表达取得oracle的建表语句中的表的注释

matcher.group(0)找到的就是完全匹配整个regex的部分

这个group是根据regex中的括号来的几个括号就分几个组

如下的例子中就是matcher.group(2)就是我想要找的东西了

String newSql = "COMMENT ON TABLE agency_info IS 'xxx基本信息';"; 
        String tableComment = "COMMENT\\s+ON\\s+TABLE\\s+([a-z]|[A-Z]|_)+\\s+IS\\s+'([^']+)'" ; 
        Pattern pattern = Pattern.compile(tableComment) ; 
        Matcher matcher = pattern.matcher(newSql) ; 
        while(matcher.find()){
            int count = matcher.groupCount() ; 
            for (int i = 0; i <= count; i++) {
                String ret = matcher.group(i) ; 
                System.out.println(ret);
            }
            
        }

 替换

StringBuffer sb = new StringBuffer() ; 
        Pattern p = Pattern.compile("@[[a-z]|[A-Z]|_]+") ;
        Matcher m = p.matcher("xx@fff/xylsjd") ;
        while( m.find() ){
            String tmp = m.group() ;
            String v = "要替换成字符串";
            //注意,在替换字符串中使用反斜线 (\) 和美元符号 ($) 可能导致与作为字面值替换字符串时所产生的结果不同。
            //美元符号可视为到如上所述已捕获子序列的引用,反斜线可用于转义替换字符串中的字面值字符。 
            v = v.replace("\\", "\\\\").replace("$", "\\$"); 
            //替换掉查找到的字符串            
m.appendReplacement(sb, v) ; 
        }
        //别忘了加上最后一点
        m.appendTail(sb) ;
    System.out.print(sb);

 

 

 

 

字符 说明
^ 匹配输入字符串的开始位置。要匹配 "^" 字符本身,请使用 "\^"
$ 匹配输入字符串的结尾位置。要匹配 "$" 字符本身,请使用 "\$"
( ) 标记一个子表达式的开始和结束位置。要匹配小括号,请使用 "\(" 和 "\)"
[ ] 用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号,请使用 "\[" 和 "\]"
{ } 修饰匹配次数的符号。要匹配大括号,请使用 "\{" 和 "\}"
. 匹配除了换行符(\n)以外的任意一个字符。要匹配小数点本身,请使用 "\."
? 修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身,请使用 "\?"
+ 修饰匹配次数为至少 1 次。要匹配 "+" 字符本身,请使用 "\+"
* 修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身,请使用 "\*"
| 左右两边表达式之间 "或" 关系。匹配 "|" 本身,请使用 "\|"
posted @ 2014-01-26 11:38  行-云  阅读(16384)  评论(0编辑  收藏  举报