把每天當成最后一天來釋放自己

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            2 隨筆 :: 4 文章 :: 1 評論 :: 0 Trackbacks
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          什么是正則表達式?

           概念:維基百科上是這樣定義的:

                 正則表達式英語Regular Expressionregexregexp,縮寫為RE),也譯為正規表示法常規表示法,在計算機科學中,

                       是指一個用來描述或者匹配一系列符合某個
          句法規則的字符串的單個字符串。正則表達式這個概念最初是由Unix中的工具軟件

                     (例如
          sedgrep)普及開的。

             上面定義可以簡化為:正則表達式是持有某個句法規則的單個字符串。


                這樣對正則表達式的認識就明朗了很多。

          1. 它是字符串

          2. 它持有句法規則

            那什么是句法規則?

               說白了,句法規則就是特殊符號,表達匹配意義的符號。如果你知道這些特殊符號都能匹配什么字符,你就掌握了正則表達式!

          我們先來看看一般字符是什么樣子的:


          x

          字符 x

          \\

          反斜線字符

          \0n

          帶有八進制值 的字符 n (0 <= n <= 7)

          \0nn

          帶有八進制值 的字符 nn (0 <= n <= 7)

          \0mnn

          帶有八進制值 的字符 mnn0 <= m <= 30 <= n <= 7

          \xhh

          帶有十六進制值 0x 的字符 hh

          \uhhhh

          帶有十六進制值 0x 的字符 hhhh

          \t

          制表符 ('\u0009')

          \n

          新行(換行)符 ('\u000A')

          \r

          回車符 ('\u000D')

          \f

          換頁符 ('\u000C')

          \a

          報警 (bell) 符 ('\u0007')

          \e

          轉義符 ('\u001B')

          \cx

          對應于 x 的控制符



          上面都是一般的字符,它們不要我們要研究的對象,它們沒有特殊的匹配意義,它們只能匹配自己,例如:



          正則表達式

          匹配字符

          t

          t

          \n

          \n

          \\\\

          \\



           

              也許你看出來了,怎么最后一個例子不是自己匹配自己啊?是“\\\\”匹配“\\”。

              這是因為 “\\”在Java正則表達式中有特殊意義。在Java中(注意只是在Java中,在其它語言中并不是這樣的)

              “
          \\”表示我要插入一個正則表達式反  斜杠,緊跟其后的符號有特殊意義,要小心啊。比如:要匹配1-9的單數字,

              我們要這樣寫“
          \\d”,那既然“\\”有特殊意義,我們就不能拿它來匹配它本身了,于是就只能用“\\\\”來匹配“\\”這個反斜杠了。

              下面表格是一些特殊符號,上面字符只能匹配自己,應該是模糊匹配吧,它們能匹配不只一個字符,在這里要拋出一個關鍵詞-字符類。


            什么是字符類?

              字符類有一個共同特點-用來匹配且只能匹配單個字符。它們不像數量詞是為了說明或是限制字符的次數的,

              它們就是為了匹配字符的,其中還有一些預定義字符類,
          它們是為了方便使用常用字符類而預定義的字符類。


          功能

          特殊符號

          描述

          字符類(用于匹配單個字符)

          字符類

          []

          [abc]

          a或 c(簡單類)

          [^abc]

          任何字符,除了 a或 c(否定)

          [a-zA-Z]

          a到 或 到 Z,兩頭的字母包括在內(范圍)

          [a-d[m-p]]

          a到 或 到 p[a-dm-p](并集)

          [a-z&&[def]]

          d或 f(交集)

          [a-z&&[^bc]]

          a到 z,除了 和 c[ad-z]差集

          [a-z&&[^m-p]]

          a到 z,而非 到 p[a-lq-z]差集

          預定義字符類

          .

          任何字符(與行結束符可能匹配也可能不匹配)

          \d

          數字:[0-9]

          \D

          非數字: [^0-9]

          \s

          空白字符:[ \t\n\x0B\f\r]

          \S

          非空白字符:[^\s]

          \w

          單詞字符:[a-zA-Z_0-9]

          \W

          非單詞字符:[^\w]

          次數匹配(X表示單個字符或字符組)

          Greedy 數量詞

          X?

          X*

          X+

          X{n}

          X{n,}

          X{n,m}

          Reluctant數量詞

          X??

          X*?

          X+?

          X{n}?

          X{n,}?

          X{n,m}?

          Possessiv數量詞

          X?+

          X*+

          X++

          X{n}+

          X{n,}+

          X{n,m}+

          邊界匹配

          ^

          行的開頭

          $

          行的結尾

          \b

          單詞邊界

          \B

          非單詞邊界

          \A

          輸入的開頭

          \G

          上一個匹配的結尾

          \Z

          輸入的結尾,僅用于最后的結束符(如果有的話)

          \z

          輸入的結尾

           

              上面是用來匹配字符或是對字符的限制,那如何把它些字符串起來,行成一個字符序列,要用到邏輯運算符:


          XY

          X后跟 Y

          X|Y

          X或 Y

          (X)

          X,作為捕獲組



              邏輯運算符中最后一項提到捕獲組,那什么是捕獲組?

              有關組和捕獲推薦一篇文章,很詳細:

                 http://blog.csdn.net/lovingprince/archive/2008/08/06/2774819.aspx 

          posted on 2011-03-12 11:43 風的方向 閱讀(181) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 邵东县| 潜江市| 喀喇沁旗| 胶州市| 广昌县| 金昌市| 博湖县| 伊金霍洛旗| 宝丰县| 南宁市| 洞口县| 龙里县| 巫溪县| 乌什县| 古蔺县| 饶平县| 邓州市| 临朐县| 大石桥市| 达尔| 民县| 利津县| 文水县| 英吉沙县| 巫溪县| 枣强县| 万山特区| 明光市| 武功县| 永嘉县| 岳阳县| 洛隆县| 寻乌县| 溆浦县| 当雄县| 定西市| 阿巴嘎旗| 阿拉善右旗| 毕节市| 邵阳县| 三亚市|