正則表達式是一種可以用於模式匹配和替換的強大工具。在幾乎所有的基於UNIX/LINUX係統的軟件工具中找到正則表達式的痕跡。這裏是正則表達式語法教程基礎篇,這對於初學者很有幫助,下麵我們就一起來看看正則表達式基本語法教學吧!
一個正則表達式,分為三個部分:分隔符,表達式和修飾符。
分隔符可以是除了特殊字符以外的任何字符(比如"/ !"等等),常用的分隔符是"/"。表達式由一些特殊字符(特殊字符詳見下麵)和非特殊的字符串組成,比如"[a-z0-9_-]+@[a-z0-9_-.]+"可以匹配一個簡單的電子郵件字符串。修飾符是用來開啟或者關閉某種功能/模式。下麵就是一個完整的正則表達式的例子:
/hello.+?hello/is
上麵的正則表達式"/"就是分隔符,兩個"/"之間的就是表達式,第二個"/"後麵的字符串"is"就是修飾符。
在表達式中如果含有分隔符,那麼就需要使用轉義符號"/",比如"/hello.+?//hello/is"。轉義符號除了用於分隔符外還可以執行特殊字符,全部由字母構成的特殊字符都需要"/"來轉義,比如"/d"代表全體數字。
元字符:
元字符是正則表達式中一類有特殊意義的字符,用來描述其前導字符(即元字符前麵的字符)在被匹配的對象中出現的方式。元字符本身是一個個單一的字符,但是不同或者相同的元字符組合起來可以構成大的元字符。
大括號:大括號用來精確指定匹配元字符出現的次數,例如"/pre{1,5}/"表示匹配的對象可以是"pre"、"pree"、"preeeee"這樣在"pr"後麵出現1個到5個"e"的字符串。或者"/pre{,5}/"代表pre出現0此到5次之間。
加號:"+"字符用來匹配元字符前的字符出現一次或者多次。例如"/ac+/"表示被匹配的對象可以是"act"、"account"、"acccc"等在"a"後麵出現一個或者多個"c"的字符串。"+"相當於"{1,}"。
星號:"*"字符用來匹配元字符前的字符出現零次或者多次。例如"/ac*/"表示被匹配的對象可以是"app"、"acp"、"accp"等在"a"後麵出現零個或者多個"c"的字符串。"*"相當於"{0,}"。
問號:"?"字符用來匹配元字符前的字符出現零次或者1次。例如"/ac?/"表示匹配的對象可以是"a"、"acp"、"acwp"這樣在"a"後麵出現零個或者1個"c"的字符串。"?"在正則表達式中還有一個非常重要的作用,即"貪婪模式"。
定位字符:
定位字符是正則表達式中又一類非常重要的字符,它的主要作用是用於對字符在匹配對象中的位置進行描述。
^:表示匹配的模式出現在匹配對象的開頭(和在"[]"裏麵不同)
$:表示匹配的模式出現在匹配對象的末尾
空格:表示匹配的模式出現在開始和結尾的兩個邊界之一
"/^he/":可以匹配以"he"字符開頭的字符串,比如hello、height等等;
"/he$/":可以匹配以"he"字符結尾的字符串即she等;
"/ he/":空格開頭,和^的作用一樣,匹配以he開頭的字符串;
"/he /":空格結束,和$的作用一樣,匹配以he結尾的字符串;
"/^he$/":表示隻和字符串"he"匹配。