posix標準對正規表示式字元和操作符的含義進行了形式化。這種標準定義了兩類正規表示式:基本的正規表示式(bre) , grep和sed使用這種正規表示式;擴充套件的正規表示式,egrep和awk使用這種正規表示式。
為了適應非英文的環境, posix標準增強了匹配不在英文本母表中的字元的字元類的功能。例如,法文è是乙個字母字元,但是使用典型的字元類[a-z]不匹配它。該標準提供了附加的字母序列,當匹配和整理(排序)字串資料時,這些字串行應該被作為單個單元看待。
posix還改變了常用的術語,我們一直稱為"字元類"的東西在posix標準中稱為"括號表示式"。在括號表示式中,除了字元(例如a,!等等)以外,還可以由其他標記。如下:
• 字元類。由[:和:]包圍的關鍵字組成的posix字元類。關鍵字描述了不同的字元類,例如,文字字元,控制字元等等。
• 整理符合。整理符合是多字元的序列。表示這些字元應該被看做是乙個單元,它由[,和.]包圍的字元組成。
• 等價類。等價類列出了應該看做是等價的字符集,例如e和è。它由地區化的字元元素(由[=和=]包圍)組成。
所有的這3種結果都必須出現在括號表示式的方括號中。例如[[: alpha :]!]匹配任意單個字母字元或感嘆號, [[.ch.]]匹配整理元素ch,但不只匹配字母c或字母h。在法語地區中, [[=e=]] 可以匹配任意e、è或é。下表列出了類及其匹配字元。
括號類含義
[:alnum:]
字母數字字元
[:alpha:]
字母字元
[:cntrl:]
控制字元
[:digit:]
數字字元
[:graph:]
非空白字元(非空格、控制字元等)
[:lower:]
小寫字母
[:print:]
與[:graph:]相似,但是包含空格字元
[:punct:]
標點字元
[:space:]
所有的空白字元(換行符、空格、製表符)
[:upper:]
大寫字母
[:xdigit:]
允許十六進製制的數字(0-9a-fa-f)
當廠商完全實現了posix標準時,這些特徵逐漸向sed和awk的商業版接近。gnu awk和gnu sed支援字元類符號,但不支援另外兩個括號符號。可以檢查本地系統文件來檢視它們是否可用。
因為這些特徵還不能被廣泛地應用,本站的指令碼不依賴它們,而且我們要繼續使用術語"字元類"來表示方括號中的字元表。
參考資料:
正規表示式 POSIX字元類
一 posix字元類 字元類說明 digit 任何數字 xdigit 任何十六進製制數字 alpha 任何字母 lower 任何小寫字母 upper 任何大寫字母 alnum 任何字母或數字 cntrl ascii控制字元 ascii 0 31 和 ascii 127 punct 不屬於 alnum...
POSIX擴充套件正規表示式函式
1 ereg 函式和eregi 函式 函式語法 bool ereg eregi string pattern,string string array regs 函式功能 在字串string中匹配表示式pattern,如果匹配成功返回true,否則返回false。如果有第3個引數regs,則將成功匹配...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...