2007-11-05

Regular Expression的表示法說明

原文來源

Regular Expression的表示法說明

  • Regular Expression 的表示字串的內容主要可以分成兩大類:
    1. Characters:一般字元(文數字元),所代表的意義與原字面的意義相同。
    2. Operators:特殊字元(非文數字字元),代表某種特殊規則的意義。若要取消其代表意義,必須使用「\」跳脫字元。
  • 例如:
    1. "foo" 的 RE 表示字串 "foo" 的意思。
    2. "[Ff]oo" 的 RE 表示字串 "Foo" 或字串 "foo" 的意思。
    3. "F*"的 RE 表示F這個字元會出現0次或多次。
    4. "F\*"的 RE 表示字串 "F*"的意思。

RE 的特殊字元-1

  • 「.」句號(period) 代表任意一個字元,如 /.at/ 可符合 bat, cat, rat等任何字開頭,結尾是at的單字。
  • 「^」(carat),表示位置在開頭,如 /^Mary/ ,代表以 Mary 開頭。
  • 「$」(dollor-sign),表示位置在結尾,如 /Mary$/ ,代表以 Mary 結尾。
  • 「[ ]」中括號(brackets)代表集合中的任一字元,如/[01256]/ 代表0,1,2,5,6這個集合中的任何一個字元。
  • 「-」連字號(dash)在中括號內表示「範圍」,如/[0-9]/代表0到9的任一個單一的數字。
  • 「^」(carat)在中括號內表示「否定」,/[^aeiou]/ 代表除了a,e,i,o,u這幾個母音之外的字元。

RE的特殊字元-2

  • 「|」(pipe)表示可選擇的,如/cat|dog|bird/代表cat, dog, bird 其中之一皆可(or的概念)。
  • 「?」問號(question mark) 表示前面的字元或集合出現0次或1次,如/colou?r / 代表u這個字可出現也可不出現。
  • 「+」加號(plus) 表示前面的字元或集合出現1次或多次,如/ap+le / 代表p這個字至少出現1次。
  • 「*」星號(asterisk)表示前面的字元或集合出現0次或多次,如/section [0-9]*/ 代表數字可出現也可不出現。
  • 「{}」大括號(curly-braces)表示前面的字元或集合出現的次數,如/c{5,8} / 代表c這個字重複出現5到8次。
----另外有人整理出下面這些.可以參考看看--- from: http://www.brad.tw/regularexpressions
  • 描述出組成字串的元素
    • 直接列出字元
    • [] : 字元集合任取一個元素.
      • [ - ] : 字元的範圍區間
      • [^ ] : 字元集合之反集合任取一個元素.
    • . : 表示任一字元
    • * : 表示前一個字元或是前一個RE出現 0 或多次
    • ? : 表示前一個字元或是前一個RE出現 0 或 1 次 (延伸)
    • + : 表示前一個字元或是前一個RE出現 1 或 多次 (延伸)
    • \{n\} : 表示前一個字元或是前一個RE出現 n 次 (延伸)
    • \{n,m\} : 表示前一個字元或是前一個RE出現 n 到 m 次 (延伸)
    • \{n,\} : 表示前一個字元或是前一個RE至少出現 n 次 (延伸)
    • \<word\> : 表示一個英文字, 凡是以 tab, 逗點, 據點等標點符號, 空白字原所分開的英文字為單位.
    • \<word: 表示一個英文字, 字首為 word.
    • word\>: 表示一個英文字, 字尾為 word.
    • word: 表示一個元素, 通常搭配後面表示法使用 (延伸)
    • | : 或, 兩個元素其中一個皆可 (延伸)
      • egrep '^(Linux|Windows)' test2
      • egrep -v '^#|^$' /etc/squid/squid.conf
  • 描述字串出現的位置
    • ^ : 每列的列首位置
    • $ : 每列的列尾位置
  • Escape Character 跳脫字元(\), 表示其後的特殊符號視作普通文字
  • ^^ : 表示 ^ 字元
  • $$ : 表示 $ 字元

沒有留言:

張貼留言