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

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

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

    開源俱樂部

    開源框架

    模式分割---java.util.regex

    Posted on 2006-08-09 17:42 HandSoft 閱讀(402) 評論(0)  編輯  收藏
    java.util.regex.Matcher;

    通過解釋 Pattern字符序列 執(zhí)行匹配操作的引擎。

    通過調用模式的 matcher 方法從模式創(chuàng)建匹配器。創(chuàng)建匹配器后,可以使用它執(zhí)行三種不同的匹配操作:

    • matches 方法嘗試將整個輸入序列與該模式匹配。

    • lookingAt 嘗試將輸入序列從頭開始與該模式匹配。

    • find 方法掃描輸入序列以查找與該模式匹配的下一個子序列。

    每個方法都返回一個表示成功或失敗的布爾值。通過查詢匹配器的狀態(tài)可以獲取關于成功匹配的更多信息。

    匹配器在其輸入的子集(稱為區(qū)域)中查找匹配項。默認情況下,此區(qū)域包含全部的匹配器輸入。可通過 region 方法修改區(qū)域,通過 regionStartregionEnd 方法查詢區(qū)域。區(qū)域邊界與某些模式構造交互的方式是可以更改的。有關此內容更多的信息,請參閱 useAnchoringBoundsuseTransparentBounds

    此類還定義使用新字符串替換匹配子序列的方法,需要時,可以從匹配結果計算出新字符串的內容。可以先后使用 appendReplacementappendTail 方法將結果收集到現(xiàn)有的字符串緩沖區(qū),或者使用更加便捷的 replaceAll 方法創(chuàng)建一個可以在其中替換輸入序列中每個匹配子序列的字符串。

    匹配器的顯式狀態(tài)包括最近成功匹配的開始和結束索引。它還包括模式中每個捕獲組捕獲的輸入子序列的開始和結束索引以及該子序列的總數(shù)。出于方便的考慮,還提供了以字符串的形式返回這些已捕獲子序列的方法。

    匹配器的顯式狀態(tài)最初是未定義的;在成功匹配導致 IllegalStateException 拋出之前嘗試查詢其中的任何部分。每個匹配操作都將重新計算匹配器的顯式狀態(tài)。

    匹配器的隱式狀態(tài)包括輸入字符序列和追加位置,追加位置最初是零,然后由 appendReplacement 方法更新。

    可以通過調用匹配器的 reset() 方法來顯式重置匹配器,如果需要新輸入序列,則調用其 reset(CharSequence) 方法。重置匹配器將放棄其顯式狀態(tài)信息并將追加位置設置為零。

    此類的實例用于多個并發(fā)線程是不安全的。

    java.util.regex.Pattern

    正則表達式的編譯表示形式。

    指定為字符串的正則表達式必須首先被編譯為此類的實例。然后,可將得到的模式用于創(chuàng)建 Matcher 對象,依照正則表達式,該對象可以與任意字符序列匹配。執(zhí)行匹配所涉及的所有狀態(tài)都駐留在匹配器中,所以多個匹配器可以共享同一模式。

    因此,典型的調用順序是

     Pattern p = Pattern.compile("a*b");
     Matcher m = p.matcher("aaaaab");
     boolean b = m.matches();

    在僅使用一次正則表達式時,可以方便地通過此類定義 matches 方法。此方法編譯表達式并在單個調用中將輸入序列與其匹配。語句

     boolean b = Pattern.matches("a*b", "aaaaab");
    等效于上面的三個語句,盡管對于重復的匹配而言它效率不高,因為它不允許重用已編譯的模式。

    此類的實例是不可變的,可供多個并發(fā)線程安全使用。Matcher 類的實例用于此

    一個正則表達式,就是用某種模式去匹配一類字符串的一個公式。一旦你弄懂它們,你就能把數(shù)小時辛苦而且易錯的文本處理工作壓縮在幾分鐘(甚至幾秒鐘)內完成。正則表達式被各種文本編輯軟件、類庫(例如Rogue Wave的tools.h++)、腳本工具(像awk/grep/sed)廣泛的支持,而且像Microsoft的Visual C++這種交互式IDE也開始支持它了。

    正則表達式基礎

    正則表達式由一些普通字符和一些元字符(metacharacters)組成。普通字符包括大小寫的字母和數(shù)字,而元字符則具有特殊的含義,我們下面會給予解釋。

    在最簡單的情況下,一個正則表達式看上去就是一個普通的查找串。例如,正則表達式"testing"中沒有包含任何元字符,,它可以匹配"testing"和"123testing"等字符串,但是不能匹配"Testing"。

    要想真正的用好正則表達式,正確的理解元字符是最重要的事情。下表列出了所有的元字符和對它們的一個簡短的描述。

    .
    匹配任何單個字符。例如正則表達式r.t匹配這些字符串:ratrutr t,但是不匹配root。?
    $
    匹配行結束符。例如正則表達式weasel$ 能夠匹配字符串"He's a weasel"的末尾,但是不能匹配字符串"They are a bunch of weasels."。?
    ^
    匹配一行的開始。例如正則表達式^When in能夠匹配字符串"When in the course of human events"的開始,但是不能匹配"What and When in the"。
    *
    匹配0或多個正好在它之前的那個字符。例如正則表達式.*意味著能夠匹配任意數(shù)量的任何字符。
    \
    這是引用府,用來將這里列出的這些元字符當作普通的字符來進行匹配。例如正則表達式\$被用來匹配美元符號,而不是行尾,類似的,正則表達式\.用來匹配點字符,而不是任何字符的通配符。
    [ ]?
    [c1-c2]
    [^c1-c2]
    匹配括號中的任何一個字符。例如正則表達式r[aou]t匹配ratrotrut,但是不匹配ret。可以在括號中使用連字符-來指定字符的區(qū)間,例如正則表達式[0-9]可以匹配任何數(shù)字字符;還可以制定多個區(qū)間,例如正則表達式[A-Za-z]可以匹配任何大小寫字母。另一個重要的用法是“排除”,要想匹配除了指定區(qū)間之外的字符——也就是所謂的補集——在左邊的括號和第一個字符之間使用^字符,例如正則表達式[^269A-Z] 將匹配除了2、6、9和所有大寫字母之外的任何字符。
    \< \>
    匹配詞(word)的開始(\<)和結束(\>)。例如正則表達式\<the能夠匹配字符串"for the wise"中的"the",但是不能匹配字符串"otherwise"中的"the"。注意:這個元字符不是所有的軟件都支持的。
    \( \)
    將 \( 和 \) 之間的表達式定義為“組”(group),并且將匹配這個表達式的字符保存到一個臨時區(qū)域(一個正則表達式中最多可以保存9個),它們可以用 \1\9 的符號來引用。
    |
    將兩個匹配條件進行邏輯“或”(Or)運算。例如正則表達式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。注意:這個元字符不是所有的軟件都支持的。
    +
    匹配1或多個正好在它之前的那個字符。例如正則表達式9+匹配9、99、999等。注意:這個元字符不是所有的軟件都支持的。
    ?
    匹配0或1個正好在它之前的那個字符。注意:這個元字符不是所有的軟件都支持的。
    \{i\}
    \{i,j\}
    匹配指定數(shù)目的字符,這些字符是在它之前的表達式定義的。例如正則表達式A[0-9]\{3\} 能夠匹配字符"A"后面跟著正好3個數(shù)字字符的串,例如A123、A348等,但是不匹配A1234。而正則表達式[0-9]\{4,6\} 匹配連續(xù)的任意4個、5個或者6個數(shù)字字符。注意:這個元字符不是所有的軟件都支持的。

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


    網(wǎng)站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲中文无码卡通动漫野外 | 最近免费中文字幕mv在线电影| 免费一看一级毛片| 亚洲精品国产精品| 在线观看免费毛片| 色老板亚洲视频免在线观| 精品香蕉在线观看免费| 亚洲精品在线免费观看| 亚洲精品视频免费在线观看| 亚洲一卡2卡三卡4卡有限公司| 久久aa毛片免费播放嗯啊| 亚洲av日韩av激情亚洲| 无码少妇精品一区二区免费动态| 亚洲成年人在线观看| 巨波霸乳在线永久免费视频| 亚洲一级毛片免费看| 女人让男人免费桶爽30分钟| 国产精品亚洲精品久久精品| 久久99亚洲综合精品首页| 免费播放在线日本感人片| 亚洲激情中文字幕| 中文字幕无码播放免费| 亚洲国产av玩弄放荡人妇| 亚洲AV无码专区日韩| 中文字幕久精品免费视频| 亚洲黄色一级毛片| 妞干网免费视频在线观看| 无套内射无矿码免费看黄| 国产gv天堂亚洲国产gv刚刚碰| 国产免费爽爽视频在线观看| 久久精品国产亚洲av麻豆色欲| 一个人免费高清在线观看| 色屁屁在线观看视频免费| 亚洲色成人WWW永久网站| 18禁止看的免费污网站| 久久亚洲色WWW成人欧美| 亚洲无av在线中文字幕| 最好看的中文字幕2019免费| 亚洲jizzjizz少妇| 亚洲va久久久噜噜噜久久狠狠| 99精品全国免费观看视频 |