2009年7月15日 星期三

Regular Expression 正則運算式

Regular Expression表示式內容的組成主要有兩種,分別是:
(1) 一般字元(Characters):其代表意義與欲找尋字元之字面意義相同。
(2) 運算(操作)元(Operators):用以表示某一規則的意義,主要用以作為找尋比對時的特殊控制字元。
以下介紹幾個常用Regular Expression語法的規則[3]:

1. 單一字元(single character):例如一Regular Expression "P",那麼任何包含P字元的句子,都會被找出,如"People"、"Person"但不會找出"pig"。
2. . (any character):.可用以代表任意的字元,例如一Regular Expression ".t.m",那麼"atom"、"item"跟"stem"都會被比對找出。
3. + (Kleene plus):用以代表一個或以一個以上的字元,例如可以Regular Expression "10+" 比對找出"10"、"100"跟"1000",但不會比對找出"1"。
4. * (Kleene star):用以代表零個或以零個以上的字元,例如可以Regular Expression "10*" 比對找出"1"、"10"跟"100"。
5. ? (question symbol):用以表示當句子中如果存在某一字串或某一字元的話,此一字串或此一字元恰出現一次的情況,例如可以Regular Expression "?erd",比對找出"berd"、"herd"與"erd"。
6. ^ (caret):用以比對一句子的開頭,例如一Regular Expression "^CAPITAL",可以比對找出句子"CAPITAL's signify emphasized speech, anger or SHOUTING",而不會比對找出"Your such a CAPITAL idiot!"。
7. $ (dollar symbol):用以比對一句子的結尾,例如一Regular Expression "here$",可以比對找出"I like it here",而不會比對找出"here is a potato."。
8. \ (escape):用以比對句子中代表某種意義的字元時,需在此字元前加上一反斜線,如:尋找文章中含有*的句子,可以Regular Expression " \*",作為尋找比對的特徵。
9. [] (ranges):用以比對中括弧內任何的字元或字串,例如:Regular Expression "1[123]512",會比對出"11512"、"12512" 與 "13512"。
10. () (group):Regular Expression可將字串或字元集組合成一個個基本的元素(element、atom),以(小)括弧包起來,然後以此元素作為比對的特徵;例如:Regular Expression "(eLand) ( ) (is)",可比對找出句子"eLand is excellent!"。
11. | (alternatives):此一符號相當於OR運算,在文章句子當中找出符合其中的選項,例如:Regular Expression "(cat|dog|bird)",可比對找出句子"The pet store sold cats, dogs, and birds."中的"cat"、"dog"與"bird"。
12. {n}、{n, m} (repetition):使用Regular Expression時可以指定欲尋找的任意字元或字元集出現的次數,例如:"a{5} b{,6} c{4,8}",找出符合的結果會有,"aaaaa"、"bbbbb"與"ccccc"。
13. ^ (complement、negation):在Regular Expression ^的另一個意義是作為"否"-not的意義,例如:Regular Expression " [^a-z]a",在句子"Mary had a little lamb. And everywhere that Mary went, the lamb was sure to go."中,只會找出粗體字的部分。

Regular Expression除了以上常用的規則外,以下簡式是經常被使用到的幾個例子。

1. \d 等於 [0-9] 數字。
2. \D 等於 [^0-9] 非數字。
3. \s 等於 [ \t\n\x0B\f\r] 空白字元。
4. \S 等於 [^ \t\n\x0B\f\r] 非空白字元。
5. \w 等於 [a-zA-Z_0-9] 數字或是英文字。
6. \W 等於 [^a-zA-Z_0-9] 非數字與英文字。

沒有留言:

張貼留言