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 次或任意次。要匹配 "*" 字符本身,請使用 "\*"
| 左右兩邊表達式之間 "或" 關系。匹配 "|" 本身,請使用 "\|"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM