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

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            2 隨筆 :: 4 文章 :: 1 評論 :: 0 Trackbacks
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(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 風的方向 閱讀(180) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 建平县| 鹿泉市| 抚顺市| 平昌县| 上栗县| 镇坪县| 巴彦淖尔市| 印江| 巴林右旗| 皮山县| 上栗县| 南平市| 遂川县| 土默特右旗| 三明市| 鄂托克前旗| 牡丹江市| 沾化县| 垦利县| 通化县| 永平县| 新密市| 玉田县| 海南省| 漳平市| 清涧县| 黄冈市| 岳普湖县| 忻城县| 容城县| 陆丰市| 洛南县| 永嘉县| 大埔县| 宁强县| 靖边县| 通海县| 论坛| 中西区| 手机| 股票|