ComputerScience-正則表達式

簡介:正則表達式(Regular Expression),是在電腦科學中的一個概念,常被簡寫為regex,我們常使用正則表達式完成在處理大量字串時的檢索、比對、替換等,很類似我們平常用瀏覽器的Ctrl+F。換句話說,正則表達式就是記錄文本規則的代碼。




這個網站很適合學習正則表達式,裡面可以有面板可輸入文本內容,將游標放在正則表達式上會顯示匹配的字符串,而產生的匹配結果也有相對應的解釋,相當適合初學者練習,連結請點此。同時也附上有一定基礎後,適合觀看的進階教材,連結請點此

學習正則表達式的最好方式,通常都是先透過觀察例子,再從中觀察各字符的特性,潛移默化地學到怎麼正確地觀看、使用正則表達式。但正則表達式對大部分人來說,是不容易被記憶的,只要在需要用到的時候再去查閱說明文件即可。不過,透過長期使用來熟能生巧地記住參數和函數的作用是最理想的學習方式。


先給定一需要處理的字串作為模型:'String', function ( /parameter/+/g )

----------------------------------------------------------------------------------

  • 'this is a book', match(/[a-z]+/g)
  • (4)["this", "is", "a", "book"]
  • 'this is a book', match(/\w+/g)
  • (4)["this", "is", "a", "book"]
  • 'my phone number is 082-313534, call me!', match(/[0-9]+/g)
  • (2)["082", "313534"]
  • 'my phone number is 082-313534, call me!', match(/[0-9]+/)
  • ["082", index:19, input: "my phone number is 082-313534, call me!" ]
  • 'my phone number is 082-313534, call me!', match(/\d+/g)
  • (2)["082", "313534"]
  • 'my phone number is 082-313534, call me!', match(/\w+/g)
  • (2)["my", "phone", "number", "is", "082", "313534", "call", "me"]
----------------------------------------------------------------------------------

其中,我們不難歸納出一些特性:

  • 正則表達式都會用/.../刮著
  • [a-z]指的是小寫字母a~z,[0-9]指的是數字0~9
  • 正則表達式後有g的話,每個字串都會被抓出來

----------------------------------------------------------------------------------

事實上,我們確實都有辦法透過觀察來潛移默化地了解正則表達式的一些特性。

在下方附上幾個最常用的模型參數,以便查閱(此處有一集合包含文本中所出現的字符):
  • [abcd]:含abcd字符的集合
  • [^abcd]:含abcd字符的集合的補集
  • [\u4e00-\u9fa5]含所有中文字的集合
  • (...)|(...):兩個子集的聯集
  • /g:全域比較,若是沒有加上g的話,match時只會抓到一個元素
  • /i:忽視大小寫
  • /m:多行比較
  • \d:全部數字的集合
  • \D:全部數字的集合的補集
  • \w:全部字符的集合
  • \W:全部字符的集合的補集
再介紹幾個常用的函數:
  • match(/parameter/+/g ):檢索符合正則表達式的字串或字符
  • replace(/parameter/, replacement):將符合正則表達式的字串或字符替換
  • split('x'):將原字串中的"x"刪除,並將所有'x'的左右兩邊字串分割
參見:維基百科

沒有留言:

張貼留言