搜尋部落格文章

2011年11月28日 星期一

正則表達式 正規表達式

1、正則表達式的概念
正則表達式是用來描述字符串特徵的標準方式。
正則表達式由兩個部分組成:一部分由雙斜杠來標示字符串起始位置,這部分叫匹配模式,用來描述字符串特徵的;另一部分是在第二個斜杠後面的字母,叫做正則表達式的標誌位,是gimsx這五個字母的組合。
例如:var zfc: RegExp=/hello/g;
正則表達式還可以使用正則表達式類的構造函數來生成一個正則表達式實例。
例如:var zfc: RegExp=new RegExp(“hello”,”g”);
可以看出正則表達式的構造函數只不過是將匹配模式和標誌位分開成兩個字符串,當成參數,來生成正則表達式的實例。標誌位是可選參數,如果有為空或者不屬於”gimsx”的字母出現,那麼標誌位參數將被忽略。
使用構造函數生成正則表達式實例,要注意由於匹配模式作為String型,要注意相關的字符轉義,比如單引號和雙引號。


2、正則表達式的引擎機制
AS3使用功能強大的NFA引擎,NFA引擎是一種Greedy的執行方式,一旦找到匹配立刻返回,不管後面是否還有匹配的字符,最先返回最左邊的匹配。


3、正則表達式語法
①正則表達式中的文字符號
由文字符號組成的正則表達式是最簡單的類型,文字符號包括字母、符號和單詞。中文也屬於文字符號,它是用Unicode碼表示的。
文字符號分為3種,即普通文字和符號、元字符和不可見字符。但是,如果使用正則表達式構造函數來匹配正斜杠的話,就不需要轉義了,但不可見字符還是需要轉義的。

②正則表達式中的字符集
字符集是指由中括號裡定義的字符集合。字符集中的字符只要有一個符合特徵描述,那麼就會被認為匹配。字符集只能匹配一個字符。
在字符集中我們可以使用連字符“ - ”來定義一個範圍。3個常用的字符集[AZ]、[az]、[0-9]
取反符號(^)在字符集中的作用是對方括號裡面的字符集取反。即使用了取反符號,只要是不符合字符集描述的字符就符合匹配。
字符集中需要轉義的特殊字符。我們只需對正則表達式字符集元字符中的“ [\^- ”進行轉義。

③特殊的點號(.)
正則表達式中用“.”號來表示任何字符。但“.”號不匹配換行符(\n)。AS3提供一個單行模式標誌符(s)來讓“.”號匹配換行符。

④選擇符(|)
選擇符“|”表示選擇,用來匹配多個可能的正則表達式中的一個。

⑤括號與分組
用圓括號將表達式的一部分括起來,就會將這部分錶達式定義成組。組將被當成一個整體來進行操作。這樣的操作,被稱為分組。
分組一般有如下應用:
● 用來限定選擇符的作用範圍。
● 可以指定括號中的內容重複次數。

⑥用正則表達式描述字符串的重複
顯式限定符是使用花括號{}及其中的數字值表示模式出現次數的上下限的方式。除了顯式限定符,還有非顯式限定符。
如果限定符前面是跟著字符集,那麼就限定符合字符集描述的特徵字符重複次數。
如果限定符前面是跟著組,那麼就限定符合組內表達式描述的特徵字符串重複次數。

⑦正則表達式定位符及其含義
“ ^ ”匹配輸入字符串的開始位置
“ $ ”匹配輸入字符串的結束位置
“ \b ” 匹配一個單詞邊界,也就是指單詞和空格間的位置
“ \B ” 匹配非單詞邊界

⑧正則表達式的5個標誌位
“ g ” global 匹配多個
“ i ” ignoreCase不區分大小寫
“ m ” multiline 設置此標誌後,$和^可以分別匹配行的開頭和結尾
“ s ” dotall 設置此標誌後,“ . ”點號可以匹配換行符(\n)
“ x ” extended 允許擴展的正則表達式

⑨正則表達式中元字符優先級
相同優先級總左到右,不同優先級先高後低。
元字符優先級如下:
\
(), (?:), (?=), []
+, ?.,{n},{n,},{n,m}
^,$,\字符
|

沒有留言:

張貼留言