Thursday, August 4, 2016

Regular Expression

今日講Regular Expression,簡稱Regex。
通常在Linux裡頭最常用Regex的commands是grep,sed。可能很多讀者亦非常熟悉。
Regex包括12個 metacharacters,它們個自有特殊意義:












.     代表所有characters/numbers, except line breaks
      例如:/1.7/g 可以match 187,1%7,1a7

{ } 代表 quantifier
      例如:/b{4}/g 可以match bbbb
      如果後面加上逗號,則是至無限的意思,如b{2,}會match兩個b到無限個b

 其實代表 {0,},0次到無限次,甚至empty string
      例如:

 代表 1次到無限次
      例如:/b+/g 可以match b, bb, bbbbbbb, etc

[]   代表range
      例如:/[a-zA-Z0-9] /g 可以match 所有字母及數字
      這裡順便介紹 ^(negate)的用法,/^[a-f]/g 指match a至f以外的所有characters,當然包括g到z,以及符號如%

\w  等於 [a-zA-Z0-9_]
\d   等於[0-9]
\s   等於任何white space(spaces, tabs, line breaks)

$    代表句子的結尾 end of string

最後介紹look behind
look behind就是有condition的情況下match pattern
e.g. 
a(?=b) 代表當a之後的字母是b才match a
            例如:
            
       
a(?!b)  代表a之後不是b就match a
           例如:



最後有興趣多體驗Regex妙用的讀者可以去下面的網站玩下
http://regexr.com