<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks
    作者楊中科是CowNew開源團隊JDBMonitor項目組的開發人員。
    CowNew開源團隊網站 http://www.cownew.com
    論壇 http://www.cownew.com/newpeng/
    轉載請注明此版權信息

    正則表達式是一個非常強大的工具,有了這個工具,在進行字符串的解析、修改等不會再麻煩,比寫一堆if else語句更清晰易懂。
    關于正則表達式的基礎知識我這里不再多講,大家可以到網上查找相關的資料。本文假定您已經熟悉正則表達式的基本使用。
    讓我們以最好用的數據庫監控、日志工具JDBMonitor為例來講解。JDBMonitor的二進制jar包和源代碼都可以從 http://www.cownew.com 下載得到。
    DataBaseDBListener要讀取形如"dburl=jdbc:odbc:MQIS;user=sa;password=sa;logtable=T_Log_Log"的配置字符串,然后從中解析數據庫連接配置、表名等信息,并且user=sa;password和logtable部分也是可以忽略的(這是當然的,因為有的數據庫不需要用戶名密碼,而且logtable也有默認值)。
    打開com.cownew.JDBMonitor.listenerImpl.DataBaseDBListener,init就是進行參數arg的解析的:
    1、Pattern patAll = Pattern.compile("dburl=(.+?);?(user=.*;password=.*;)?(logtable=.+)?");
    這句是從arg中提取三個部分,分別是dburl部分,用戶名密碼部分,logtable部分。因為用戶名密碼部分,logtable部分是可以忽略的,因此采用"?"來標識這個兩個分組“(user=.*;password=.*;)?”、“(logtable=.+)?”。而一旦dburl部分,用戶名密碼部分忽略,那么dburl=...后的;也是可以忽略的,因此";?"。
    值得我們注意的是“dburl=(.+?)”,為什么不是"dburl=(.+)"呢?怎么多了個?。你可以嘗試去掉“?”后,再次運行。你會看到dburl=后所有的字符,包括用戶名密碼部分,logtable部分都被看成dburl=的值了,也就是后邊的字符都被吃掉了。為什么呢?
    這就要提到正則表達式的貪婪性和懶惰性,關于貪婪性和懶惰性可以查看網上一篇文章《深入淺出之正則表達式》(http://dragon.cnblogs.com/archive/2006/05/08/394078.html)。
    象《深入淺出之正則表達式》描述的那樣:“+”是貪婪的。也就是說,“+”會導致正則表達式引擎試圖盡可能的重復前導字符。只有當這種重復會引起整個正則表達式匹配失敗的情況下,引擎會進行回溯。也就是說,它會放棄最后一次的“重復”,然后處理正則表達式余下的部分。一個用于修正以上問題的可能方案是用“+”的惰性代替貪婪性。你可以在“+”后面緊跟一個問號“?”來達到這一點?!?”,“{}”和“?”表示的重復也可以用這個方案。
    因此JDBMonitor就采用了dburl=(.+?)來解決這個貪婪性問題。
    2、Pattern patUserPwd = Pattern.compile("user=(.*);password=(.*);");
    在第一步中把“user=sa;password=sa;”當成一個整體來提取,那么我們接下來還要從這個提取中的串中提取用戶名user、密碼password信息。因此采用這種方式來提取。這種分步提取的方式比寫復雜的正則表達式一次性提取看起來更清晰,更加易維護。

    posted on 2006-06-02 23:43 CowNew開源團隊 閱讀(910) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 未满十八18禁止免费无码网站| 日本中文字幕免费看| 久久精品免费观看| 久久精品国产亚洲av麻| 国产99视频精品免费专区| 亚洲AV永久无码区成人网站| 99re免费视频| 99久久99久久免费精品小说| 久久久久久亚洲精品| 国产一区二区三区免费| 亚洲AV区无码字幕中文色| 免费播放一区二区三区| 亚洲AV成人噜噜无码网站| 天天操夜夜操免费视频| 人妻仑乱A级毛片免费看| 国产亚洲精品a在线观看app| 99精品视频在线观看免费专区| 亚洲第一网站免费视频| 女人毛片a级大学毛片免费| 日韩精品无码免费视频| 国产精品国产亚洲精品看不卡| 亚洲免费视频播放| 亚洲JLZZJLZZ少妇| 亚洲色偷偷综合亚洲AVYP| 99re在线视频免费观看| 亚洲av无码专区在线观看下载 | 最近的2019免费中文字幕| 成全视频在线观看免费高清动漫视频下载 | 亚洲手机中文字幕| 日韩激情淫片免费看| 中文字幕乱码系列免费| 亚洲人成电影院在线观看| 青草草在线视频永久免费| 91免费国产视频| 99999久久久久久亚洲| 亚洲精品黄色视频在线观看免费资源| 日韩精品在线免费观看| 国产精品亚洲专区无码WEB| 亚洲AV日韩AV天堂一区二区三区| 最近2019中文字幕mv免费看| 国产性生大片免费观看性|