跳到內容

正則表示式/簡單正則表示式

來自華夏公益教科書,開放的書籍,開放的世界

簡單正則表示式 語法在基於 Unix 的系統中廣泛使用,用於向後相容的目的。大多數支援正則表示式的 Unix 實用程式,如 grepsed,預設使用它,同時提供對擴充套件正則表示式的支援(使用命令列引數,見下文)。這種語法在 POSIX 相容系統中已過時,新實用程式不應使用它。

使用簡單正則表示式語法時,大多數字符(元字元除外)都被視為字面字元,只匹配自身(例如,“a” 匹配 “a”,“(bc” 匹配 “(bc” 等)。

運算子
運算子 效果
. 點運算子匹配任何單個字元。
[ ] 方括號允許將單個字元與字元列表或字元範圍進行匹配。
[^ ] 補碼方括號允許匹配不在字元列表或字元範圍內的單個字元。
^ 脫字元(^)錨匹配行的開頭(或在多行模式下匹配任何行)
$ 美元符($)錨匹配行的結尾(或在多行模式下匹配任何行)
( ) 圓括號用於定義標記的子表示式。匹配的文字部分可以在以後呼叫。
\n 其中 n 是 1 到 9 之間的數字;匹配第 n 個標記的子表示式匹配的內容。這種不規則的結構在擴充套件正則表示式語法中沒有被採用。
* 單個字元表示式後跟 "*" 匹配該表示式的零個或多個副本。例如,“ab*c” 匹配 “ac”,“abc”,“abbbc” 等。“[xyz]*” 匹配 “”,“x”,“y”,“zx”,“zyx” 等等。
  • \n*,其中 n 是 1 到 9 之間的數字,匹配第 n 個標記的子表示式匹配內容的零個或多個迭代。例如,“(a.)c\1*” 匹配 “abcab” 和 “abcabab”,但不匹配 “abcac”。
  • 用 “\(" 和 "\)” 括起來的表示式後跟 "*" 被認為是無效的。在某些情況下(例如,SunOS 5.8 的 /usr/bin/xpg4/grep),它匹配括起來的表示式匹配的字串的零個或多個迭代。在其他情況下(例如,SunOS 5.8 的 /usr/bin/grep),它匹配括起來的表示式匹配的內容,後跟一個字面上的 "*”。

示例

  • "^[hc]at"
    • 匹配 hatcat,但只匹配行的開頭。
  • "[hc]at$"
    • 匹配 hatcat,但只匹配行的結尾。

在工具中的使用

[編輯 | 編輯原始碼]

使用這種正則表示式語法的工具和語言包括

華夏公益教科書