Regex(二)——元字元

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   

   正則中的字元分為元字元和一般字元,一般字元就匹配它本身(寫什麼就是什麼,比如正則中寫字母‘a’,匹配的時候就匹配字母‘a’),而元字元是Regex中最基本的內容,也是最核心的內容,基本上所有的Regex都由“元字元”組成,元字元就是Regex的基礎。在此文中,會涉及到字元組,多選結構,點號以及預定義字元集的基本介紹。

什麼是“元字元”

   所謂元字元就是指那些在Regex中具有特殊意義的專用字元。這些元字元(專用的字元或則字元組),可以代替多個一個或多個字元。下面用一個圖來展示一下基本的元字元

   上面這個圖包含了基本的‘元字元’,包括量詞、邊界匹配、字元匹配、邏輯、分組、環視和一些特殊的構造等等這些內容。

元字元——字元組

   字元組分為兩種:一般字元組和排除型字元組

   一、一般字元組

   “[······]”,以左邊這種結構出現的Regex,就叫普通的字元組,它會匹配[·····]結構體中的字元的任意一個字元。

   例如:[abc]

   字元‘a’能匹配‘a’,字元‘b’能匹配‘b’,字元‘c’能匹配‘c’,而[abc]則表示匹配‘a’、‘b’、‘c’三個字元的中任意一個。

   從編程的角度看就是一個‘或’的判斷條件等同於另一個Regex(a|b|c),要不就匹配‘a’,要不就匹配‘b’,要不就匹配‘c’。

   舉個簡單的例子,咱走一遍流程。

   Regex:‘gr[ae]y’

   首先匹配‘g’,接下來是‘r’,然後是一個‘a’或‘e’,最後是一個‘y’。由這樣的流程可以知道,這個Regex可以匹配的文本為‘grey’或者‘gray’

   我們也可以用連字號‘-’來表示一個範圍,配合[······]結構體來匹配一個範圍中的一個字元。比如:

   Regex:[a-d0-9]

   這個Regex可以匹配0,1,2,3,4,5,6,7,8,9,a,b,c,d中的任意一個字元。這種有兩個包括兩個以上範圍的Regex叫做‘多重範圍’

   ‘-’連字號只有在[·····]結構體中才是元字元,否則它只能匹配普通的連字號號,當然,如果‘-’字元在[·····]結構體的開頭,那麼它也只是普通的字元,例如

   Regex:[-!.?abc]

   此時的‘-’就表示它本身,這個Regex可以匹配‘-’,‘!’,‘.’,‘?’,‘a’,‘b’,‘c’中的任意一個

   二、排除型字元組

   “[^·····]”,以左邊這種結構出現的Regex,就叫做排除型字元組,它會匹配[^·····]結構體中的字元以外的任意一個字元,就是說,除了^·····]結構體中的字元,其它字元都能匹配。

   例如:[^abc]

   上面這個Regex就能匹配d,匹配e,匹配d-z,A-Z,匹配任一數字,匹配‘?’之類的符號,但是就是不能匹配‘a’,‘b’,‘c’這三個字元中的任意一個

元字元——點號匹配任一字元

   ‘.’點號可以匹配除分行符號\n的其餘任一字元(只要點號不在字元組內,在字元組內的元字元意義都是它本身)。當然,如果要匹配點號本身,就需要使用逸出字元‘\’來將轉義,即‘\.’

元字元——多選結構

   多選結構和字元組類似,都是‘或’的意思,在幾個選一個。但它們最大的區別在於,‘字元組’只能在單個字元間做選擇。而‘多選結構’是在多個運算式之間做選擇。例如:

   Regex:‘(grey|gray)’

   上面這個Regex的意思就是,要麼匹配grey,要麼匹配gray,匹配的結果等同於‘gr[ae]y’再舉個例子,就是:

   ‘Jeff(rey|ery)’

   先匹配‘J’,接下倆匹配‘e’,接下來匹配‘f’,接下來匹配‘f’,再接下來匹配‘rey’或者‘ery’的的其中一個,這就是多選結構執行的流程

元字元——預定義字元集

   預定義字元集就像中展示的,他們用‘\字母’的形式來代表多個字元,\d代表0至9,\s代表空白字元,\w代表0至9,a至z,A至Z。而他們的大些形式,則表示他們的差集合

   元字元也包括了量詞,位置匹配符,括弧,反向引用這些內容,這些內容會在後續單獨分開講解。

   參考:《精通Regex——第三版》

        《Python中的Regex教程》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.