正規表示式

2021-06-07 08:29:00 字數 1514 閱讀 7838

今天寫指令碼,刪除配置檔案中乙個配置項,內容如下:

# /home/ren/xiao/qiang = 100

/home/ren/xiao/qiang = 100

操作結果:刪除未注釋項,保留注釋專案

操作: sed '/^[^#] \/home\/ren\/xiao\/qiang = 100/d'  file.cfg

[^#]  表示非#號的任意字元,它最終要匹配乙個字元,因此它匹配行為在/home前必需要以一非#字元才可以匹配。

趁此機會,找篇正規表示式的文章一同學習下吧。

1.  每一種語言都有單詞表,只有記住了單詞,才能靈活造句,而正規表示式的單詞表就是其元資料,常用元資料如下:

1>  . 匹配除換行符以外的任意字元

2> ^ 匹配字串的開始

3> $ 匹配字串的結束

4> \b 匹配單詞的開始或者結束

\b 匹配非單詞邊界

5> \w 匹配字母或者數字或者下劃線或者漢字 , 等價於[a-za-z0-9_]

\w 匹配非字母或者非數字或者非下劃線或者非漢字,等價於[^a-za-z0-9_]

6> \d 匹配數字,等價於[0-9]

\d 匹配非數字,等價於[^0-9]

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

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

其中: \f 換頁符    \r 回車符     \n 換行符    \t 製表符       \v 垂直製表符

2. 字元轉義 ,通過在字元前加\ ,如想要輸出字元\ ,需要\\表示

3. 重複限定符: 

1>  * 重複0次或者更多次

2> + 重複一次或者更多次

3>  ? 重複0次或者一次

4> 重複n次

5> 重複m次或者更多次

6> 重複m到n次

4. 在中,特殊字元除^ -外將不再轉義,如[.?!]匹配標點符號( .或者?或者) 

5. 分支原則    |

6. 分組:( ) 

重複限定詞只能指定單個字元的重複,( )可以實現多個字元重複,通過()與重複限定詞結合,可以實現字表示式重複。

如:(\d\.)

7. 後向引用

在()分組後,缺省會為每乙個分組分配乙個組號,後面程序或者表示式可以通過這個組號對此表示式引用。

如:\b(\w+)\b\s+\1\b 這裡(\w+)會被預設分組為1,後面\1可以實現對其的引用

(?\w+) 或者(?'word'\w+)   可以把\w+ 的組名指定為word

8. 零寬斷言 <?=exp>  <?<=exp>

9. 負零寬斷言<?!exp>

10. 貪婪與懶惰

當正規表示式中包含能夠重複的限定詞時,通常的情況是匹配盡可能多的字元,比如: a.*b與字串aaabbbcb,將匹配aaabbbcb字串,這就成為貪婪。

但是,有時我們需要匹配盡量少的字元,及懶惰匹配,實現很簡單,只需要在貪婪匹配的後面加上乙個?即可。

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

非負整數 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正規表示式 編寫正規表示式

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