Linux正規表示式 POSIX字元類

2021-07-02 23:35:25 字數 1234 閱讀 1943

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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...