正規表示式

2022-03-15 12:43:08 字數 2583 閱讀 8091

一 正規表示式概述

正規表示式:又稱規則表示式。(英語:regular expression,在**中常簡寫為regex、regexp或

re),是電腦科學的乙個概念。正規表示式由元字元組成,通常被用來檢索、替換那些符合某個模式

(規則)的文字(許多程式語言都支援利用正規表示式進行字串操作)。

元字元:是一類可以表達出超越其字面本身含義的特殊字元

shell元字元(也稱為萬用字元): 由shell直譯器來解析,如rm -rf *.pdf,元字元*shell將其解析為任

意多個字元

正規表示式元字元 : 由各種執行模式匹配操作的程式來解析,比如vi、grep、sed、awk

例如:vim示例:

:1,$ s/tom/egon/g # 如anatomy、tomatoes及tomorrow中的「tom」被替換了,而tom確沒

被替換

:1,$ s/\<[tt]om\>/egon/g

二 正規表示式元字元

2.1 基本正則元字符集

元字元      功能

^ # 行首

$ # 行尾

. # 除了換行符以外的任意單個字元

* # 前導字元的零個或多個

.* # 所有字元

# 字元組內的任一字元

[^] # 對字元組內的每個字元取反(不匹配字元組內的每個字元)

^[^] # 非字元組內的字元開頭的行

[a-z] # 小寫字母

[a-z] # 大寫字母

[a-z] # 小寫和大寫字母

[0-9] # 數字

\ # 用來轉義元字元

\< # 詞首定位符 單詞一般以空格或特殊字元做分隔、連續的字元組成

\> # 詞尾定位符

\(..\) # 匹配稍後將要使用的字元的標籤

x\ # 字元x重複出現m次

x\ # 字元x重複出現m次以上

x\ # 字元x重複出現m到n次

$'a\tb' # 匹配換行符和製表符

[root@web ~]# echo -e "a\nb" |grep $'a\nb'

ab

2.2 擴充套件正則元字符集
# 擴充套件正則元字元

+ # 匹配乙個或多個前導字元

? # 匹配零個或乙個前導字元

a|b # 匹配a或b

() # 組字元

(..)(..)\1\2 # 標籤匹配字元

x # x 出現n次

x # x出現n次至無窮次

x # x出現n次至m次

# 若想使用擴充套件正則

grep加-e 或 egrep 或轉義\

sed 加 -r 引數 或轉義

awk 直接支援大多數擴充套件正則,更多支援需要加選項--posix選項

三 grep使用元字元總結
grep: 使用基本元字符集 ^, $, ., *, , [^], \< \>,\(\),\

egrep(或grep -e): 使用擴充套件元字符集 ?, +, , |, ( )

# 注:grep也可以使用擴充套件集中的元字元,僅需要對這些元字元前置乙個反斜線

\w 所有字母與數字,稱為字元[a-za-z0-9] 'l[a-za-z0-9]*ve' 'l\w*ve'

\w 所有字母與數字之外的字元,稱為非字元 'love[^a-za-z0-9]+' 'love\w+'

\b 詞邊界 '\blove\b' '\'

四 計算機定義的字元分類(posix)
# 表示式       功能                   示例

[:alnum:] 字母與數字字元 [[:alnum:]]+

[:alpha:] 字母字元(包括大小寫字母) [[:alpha:]]

[:blank:] 空格與製表符 [[:blank:]]*

[:digit:] 數字字母 [[:digit:]]?

[:lower:] 小寫字母 [[:lower:]]

[:upper:] 大寫字母 [[:upper:]]+

[:punct:] 標點符號 [[:punct:]]

[:space:] 包括換行符,回車等在內的所有空白 [[:space:]]+

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

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