shell study-18day--正則表達式介紹

1、正則表達式的使用

正則表達式,又稱規則表達式。在代碼中常簡寫爲 regex、regexp 或 RE),計算機科學的一個概念。正則表達式一般被用來檢索、替換那些符合某個模式(規則)的文本,能夠用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等。正則表達式

構造正則表達式的方法和建立數學表達式的方法同樣。也就是用多種元字符與運算符能夠將小的表達式結合在一塊兒來建立更大的表達式。正則表達式的組件能夠是單個的字符、字符集合、字符範圍、字符間的選擇或者全部這些組件的任意組合。正則表達式是由普通字符(例如字符 a 到 z)以及特殊字符(稱爲"元字符")組成的文字模式。模式描述在搜索文本時要匹配的一個或多個字符串。正則表達式做爲一個模板,將某個字符模式與所搜索的字符串進行匹配。shell

一、Shell 正則表達式的組成

1)普通字符

普通字符包括沒有顯式指定爲元字符的全部可打印和不可打印字符。這包括全部大寫和小寫字母、全部數字、全部標點符號和一些其餘符號。ide

字符spa

含義regexp

[abc]字符串

匹配 [...] 中的全部字符,例如 [se] 匹配字符串 "test shell" 中全部的 s e字母數學

[^abc]it

匹配除了 [...] 中的其餘字符例如 [^se] 匹配字符串 "test shell" 中 s e的字母table

[A-Z]模板

[A-Z] 表示一個區間,匹配全部大寫字母,[a-z] 表示全部小寫字母

[\s\S]

匹配全部。\s 是匹配全部空白符,包括換行,\S 非空白符,包括換行

\w

匹配字母、數字、下劃線。等價於 [A-Za-z0-9]

2)非打印字符

字符

含義

\cx

匹配由x指明的控制字符。\cM 匹配一個ctrl-M或回車符。x的值必須爲A-Z或a-z之一。

\f

匹配一個換頁符。等價於 \x0c 和 \cL

\n

匹配一個換行符。等價於 \x0a 和 \cJ

\r

匹配一個回車符。等價於 \x0d 和 \cM

\s

匹配任何空白字符,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]

\S

匹配任何非空白字符。等價於 [^ \f\n\r\t\v]

\t

匹配一個製表符。等價於 \x09 和 \cI

\v

匹配一個垂直製表符。等價於 \x0b 和 \cK

3)特殊字符

字符

含義

$

匹配字符串結尾位置,使用\$,匹配$自己

()

標記一個子表達式的開始和結束位置。要匹配這些字符,請使用 \( 和 \)

*

匹配前面的子表達式零次或屢次。要匹配 * 字符,請使用 \*

+

匹配前面的子表達式一次或屢次。要匹配 + 字符,請使用 \+

.

匹配除換行符 \n 以外的任何單字符。要匹配 . ,請使用 \. 

[

標記一箇中括號表達式的開始。要匹配 [,請使用 \[。

?

匹配前面的子表達式零次或一次。要匹配 ? 字符,請使用 \?。

\

將下一個字符標記爲或特殊字符、或原義字符、或向後引用、或八進制轉義符。例如, 'n' 匹配字符 'n'。'\n' 匹配換行符。序列 '\\' 匹配 "\",而 '\(' 則匹配 "("

^

匹配輸入字符串的開始位置,除非在方括號表達式中使用,當該符號在方括號表達式中使用時,表示不匹配該方括號表達式中的字符集合。要匹配^ 字符自己,請使用 \^

{

標記限定符表達式的開始。要匹配 {,請使用 \{。

|

指明兩項之間的一個選擇。要匹配 |,請使用 \|。

4)限定符

限定符用來指定正則表達式的一個給定組件必需要出現多少次才能知足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6種

字符

含義

*

匹配前面的子表達式零次或屢次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。

+

匹配前面的子表達式一次或屢次。'zo+'匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。

匹配前面的子表達式零次或一次。例如,"do(es)?" 能夠匹配 "do" 、 "does" 中的 "does" 、 "doxy" 中的 "do" 。? 等價於 {0,1}

{n}

n 是一個非負整數。匹配肯定的n次。'o{2}'不能匹配"Bob"中的'o',可是能匹配 "food" 中的兩個 o

{n,}

n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 至少匹配o兩次,不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的全部 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。

{n,m}

m 和 n 均爲非負整數,其中n <= m。最少匹配 n 次且最多匹配 m次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。

我的公衆號:

image.png

相關文章
相關標籤/搜索