天天看點

正規表達式

正規表達式分類

        基本的正則表倒是,又叫basic regex

        擴充的正規表達式,又叫extended regex

        Perl的正規表達式,又叫perl regex

基本組成部分:

  \ 轉義符,将特殊字元進行轉義,忽略其特殊意義。a\.b比對a.b,但不能比對ajb,被轉義為特殊意義

    \n表示換行,\r表示回車,\t表示水準的制表符,\v表示垂直的制表符,\b表示後退符,\a表示警告,0xx翻譯成ASCII碼為八進制0xx鎖表示的字元

   ^比對行首,awk中,^則是比對字元創的開始,^比對以tux開頭的行

   $比對行尾,awk中,則是比對字元串的結尾

   .比對除換行符\n之外的任意單個字元,awk則中可以。ab.比對abc或bad,不可比對adcd或abde,隻能比對單字元

   []比對包含在[^字元之外的任意一個字元],123[^45]不可以比對1234或1235,1236.1237都可以

   [-]比對[]中指定範圍内的任意一個字元,要寫成遞增,[0-9]可以比對1,2或3等其中任意一個數字

    ?比對之前的項1次或者0次,colou?r可以比對colour或者colour或者colour,不能比對colouur

    +比對之前的項1次或者0次,sa-6+比對sa-6,sa-666,不能比對sa-

    *比對之前的想0次或多次,co*l,比對cl,col,cool,cool等

    ()比對表達式,建立一個用于比對的子串。

     {n}配置之前的項n次,n是可以為0的正整數。

    {n,}之前的項至少需要比對n次,[0-9]{2,}比對任意一個兩位數或更多位數

    [n,m]指定之前的想至少比對n次,最多比對m次,n<=m,[0-9]{2,5}比對從兩位數到五位數之間的任意一個數字

   |交替比對|兩邊的任意一項ab(c|d)比對abc或adb

posix字元類

    posix字元類是一個形如[:...:]的特殊元序列(meta sequence),他可以用于比對特定的字元範圍

    [:alnum:]比對人一個一個字母或數字字元,[[:alnum:]]+

    [:alpha:]比對任意一個字母字元(包括大小寫),[[:alpha:]]{4}

    [:blank:]空格與制表符(橫向和縱向),[[:blank:]]*

    [:digit:]比對熱一個數字字元,[[:digit:]]?

    [:lower:]比對小寫字母,[[:lower:]]{5,}

    [:upper:]比對大寫字母,([[:upper:]]+)?

    [:punct:]比對标點符号,[[:punct:]]

    [:space:]比對一個包括換行符,回車等在内的所有空白符,[[:space:]]+

    [:graph:]比對任何一個可以看得見的且可以列印的字元,[[:graph:]]

    [:xdigit:]任何一個十六進制數(即:0-9,a-f,A-F)

    [:cntrl:]任何一個控制字元(ASCII字元集中的前32個字元),[[:cntrl:]]

    [:print:]任何一個可以列印的字元,[[:print:]]

本文轉自   宏強   51CTO部落格,原文連結:http://blog.51cto.com/tanhong/2056923