三. 正規表示式基本語法描述:
linux shell環境下提供了兩種正規表示式規則,乙個是基本正規表示式(bre),另乙個是擴充套件正規表示式(ere)。
下面是這兩種表示式的語法列表,需要注意的是,如果沒有明確指出的meta字元,其將可同時用於bre和ere,否則將盡適用於指定的模式。
正則元字元
模式含義
用例
\通常用於關閉其後續字元的特殊意義,恢復其原意。
\(...\),這裡的括號僅僅表示括號。 .
匹配任何單個字元。
a.b,將匹配abb、acb等 *
匹配它之前的0-n個的單個字元。
a*b,將匹配ab、aab、aaab等。 ^
匹配緊接著的正規表示式,在行的起始處。
^ab,將匹配abc、abd等,但是不匹配cab。 $
匹配緊接著的正規表示式,在行的結尾處。
ab$,將匹配ab、cab等,但是不匹配abc。
[...]
方括號表示式,匹配其內部任何字元。其中-表示連續字元的範圍,^符號置於方括號裡第乙個字元則有反向的含義,即匹配不在列表內(方括號)的任何字元。如果
想讓]和-表示其原意,需要將其放置在方括號的首字元位置,如ab]或[-ab],如這兩個字元同時存在,則將]放置在首字元位置,-放置在最尾部,
如ab-]。
[a-ba-z0-9!]表示所有的大小寫字母,數字和感嘆號。[^abc]表示a、b、c之外的所有字元。[tt]om,可以匹配tom和tom。 \
區間表示式,匹配在它前面的單個字元重複出現的次數區間,\表示重複n次;\表示至少重複n次;\表示重複n到m次。
ab\表示abb;ab\表示abb、abbb等。ab\表示abb、abbb和abbbb。
\(...\)
將圓括號之間的模式儲存在特殊「保留空間」。最多可以將9個獨立的子模式儲存在單個模式中。匹配於子模式的文字,可以通過轉義序列\1到\9,被重複使用在相同模式裡。
\(ab\).*\1表示ab組合出現兩次,兩次之間可存在任何數目的任何字元,如abcdab、abab等。
(ere)
其功能等同於上面的\,只是不再寫\轉義符了。
ab+匹配ab、abbb等,但是不匹配a。
+(ere)
和前面的星號相比,+匹配的是前面正規表示式的1-n個例項。
?(ere)
匹配前面正規表示式的0個或1個。
ab?僅匹配a或ab。
|(ere)
匹配於|符號前後的正規表示式。
(ab|cd)匹配ab或cd。
[:alpha:]
匹配字母字元。
[[:alpha:]!]ab$匹配cab、dab和!ab。
[:alnum:]
匹配字母和數字字元。
[[:alnum:]]ab$匹配1ab、aab。
[:blank:]
匹配空格(space)和tab字元。
[[:alnum:]]ab$匹配1ab、aab。
[:cntrl:]
匹配控制字元。
[:digit:]
匹配數字字元。
[:graph:]
匹配非空格字元。
[:lower:]
匹配小寫字母字元。
[:upper:]
匹配大寫字母字元。
[:punct:]
匹配標點字元。
[:space:]
匹配空白(whitespace)字元。
[:xdigit:]
匹配十六進製制數字。
\w匹配任何字母和數字組成的字元,等同於[[:alnum:]_]
\w匹配任何非字母和數字組成的字元,等同於[^[:alnum:]_]
\<\>
匹配單詞的起始和結尾。
\匹配readme。
下面的列表給出了linux shell中常用的工具或命令分別支援的正規表示式的型別。
grep
sed
vi
egrep
awk
bre**
*ere**
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...
正規表示式 Linux
主要內容 1 正規表示式2 基礎3 擴充套件4 通配5 grep命令 正規表示式基礎 1 元字元 metacharacters 是用來闡釋字元表示式意義的字元,簡言之,元字元就是描述字元的字元,它用於對字元表示式的內容 轉換及各種操作資訊進行描述。正規表示式是由一串字元和元字元構成的字串,簡稱re ...
Linux正規表示式
正規表示式是一種符號表示法,用於識別文字模式。linux處理正規表示式的主要程式是grep。grep搜尋與正規表示式匹配的行,並將結果輸送至標準輸出。1.grep匹配模式 grep按下述方式接受選項和引數 其中,regex表示正規表示式 1 grep options regex files 其中op...