Regular Expression

關於Regular Expression(中譯:正則表達式)

  • 簡易敘述:

在撰寫程式或是網頁時會需要用來尋找某些複雜卻有一定規則的字串(如:E-MAIL),通常這類的字串會有一定的格式,正則表達式通常是使用在這些地方。

Regular Expression符號彙整

  • 常用符號:
    1. 字元:若輸入字元則在該處出現字元,如輸入exp則出現exp
    2. ^:限制該字串必須出現在開頭,如:^exp則表示exp必須在行首處出現
    3. $:限制開字串必須出現在結尾,如:exp$則表示exp必須在結尾處出現
    4. \:還原符號本身的意義,如:.、()、[],此類在Regular Expression有特殊意義的符號,如: C:\\Program files可以找到C:\Program files
    5. -:區間符號,如:[a-z]表示英文a到z所有英文字、[0-9]表示數字0到9
    6. .:表示除了換行符號以外的所有字元
    7. \w:除了空白以外的任何字元、數字、中文字
    8. \s:空白
    9. \d:數字
    10. \b:字串的開始、結束
    11. \t:TAB
  • 表示次數:
    1. +:表示一個或一個以上,如:a+表示出現1個以上的a
    2. ?:表示出現0次或1次,如:a?表示出現0次或1次的a都是成立
    3. *:可以是出現0次或更多,如:a*表示a可以有也可以沒有
    4. {n}:出現n次,如:a{2}表示a出現2次,但不能多也不能少
    5. {n,}:至少出現n次,如:a{2,}代表aa,aaa,aaaa甚至更多都符合
    6. {n,m}:表示出現n~m次,如a{2,6}表示a最少要出現2次,最多6次
  • 集合符號:
    1. (…):表示一個集合
    2. […]:表示在其中出現任何一個字都是可以的,如:[abc],無論出現a或b或c都是成立的
    3. |:或,如:a|b表示a或b
  • 反義符
    1. /S:所有空白以外的字元
    2. /W:任何不是英文、數字、底線、中文字的字元
    3. /D:任何不是數字的字元
    4. /B:不是字元開頭或結束的位置(或許說明非常抽象,接下來會詳細舉例說明)
    5. [^exp]:尋找e、x、p以外的字元

正則表達式的使用方法
舉個簡易的例子來說,想要找hollow world時可以使用正則表達式:hollow world
若還不明白,以下會繼續依著上述的特殊符號舉例。

使用的規則
對於正則表示式來說,單一的符號只能尋找到一個符合該符號定義的字元
若要尋找更多的字元(一個字串)則必須加入次數的敘述
當然關於正則表示式的撰寫規則不止以上敘述的部分,更多的規則將在接下來的舉例當中出現。

  • 簡單舉例:

若想要查找台、金、澎地區的電話號碼
假設電話號碼是01-2345-6789可以使用正則表示式:\d{2,}+-\d{4}-\d{4}
\d{2,}:01是兩個數字(正則表達式:\d ),重複2次以上(正則表達式:{2,}
然後接著是符號"-"

  • 反義符的使用:

若想尋找一個字串,首先我們不知道裡面包括了多少字、是否有空白、是不是根本什麼都沒有,單單只使用[\w]+是找不到的
以hollow world為例,若只使用[\w]+只能找出hollow與world兩個字,空白會被忽略
若使用[\w\W]+則可使找出整個完整的hollow world字串