正則表達式

     正則表達式是由一類特殊字符所編寫的模式,通過這些字符的使用,我們能檢索 查找文本中符合某些規則的內容。

正則表達式元字符的分類有:字符匹配,匹配次數,位置錨定,分組等。

     字符匹配

     . : 匹配任意單個字符

     [] : 匹配指定范圍內的任意單個字符

     [^] : 匹配指定范圍外的任意單個字符

    [:alnum:] 數字和字符

   [:alpha:] 英文大小寫字符 a-z A-Z
   [:lower:] 小寫字母
   [ :upper:] 大寫字母
   [:space:] 專門匹配空格

 注意:這幾個使用頻率相對較高。


   [:cntrl:] 不可打印的控制字符(退格、刪除、警鈴…)
  [:digit:] 十進制數字 [:xdigit:]十六進制數字
  [:graph:] 可打印的非空白字符
  [:print:] 可打印字符
  [:punct:] 標點符號

 注意:這幾個使用頻率相對較低。

   匹配次數

* 匹配前面的字符任意次,0 到無窮
.* 任意字符出現任意次,比如說 123 456 abc (這個使用頻率很高,很重要)
a* a字符出現任意次   aaaa aa
[[:lower:]]* 任意小寫字母出現任意次
\? 匹配前面的字符出現0次或者1次  
a\? 出現0次或者1次
\+ 匹配前面的字符至少1次  
    a\+ a至少出現1次
\{n\} 前面的字符出現n次 
   [0-9]\{3\} 000-999

\{m,n\}匹配前面的字符出現m到n次,m,n是一個范圍
  [0-9]\{1,3\} 0-999
\{,n\}匹配前面的字符最多出現n
   [0-9]\{,3\} 最大匹配是999
 \{m,\}匹配前的字符至少出現m次
   [0-9]\{3,\} 000 無窮


     位置錨定
      ^ 錨定行首
      $ 錨定行尾
     ^$ 匹配空行的
     ^[[:space:]] 行首是空白的字符
     ^[[:space:]]*$ 也是 空行
     ^a  以a開頭的行
     b$  以b結束的行
     ^a.*b$ 以a開頭 中間任意字符 以b結尾的行
     ^a.*[[:space:]]\{3\}.*b$ a開頭跟任意字符,中間出現三次空格再跟任意字符 以b結尾的行
     ^# 以#開頭的行
     例子:cat /etc/profile | grep -v “^#” | grep -v “^$”
      例子: cat /etc/httpd/conf/httpd.conf  | grep -v “^#” | grep -v “^$” 

    \b  \b 匹配詞首和詞尾 
   \<  \> 匹配詞首和詞尾
   例子: \broot\b  \<root\>  錨定root這個單詞,不會匹配例如root123之類的單詞


      分組 
 將匹配規則分成不同的組 使用 1 2 3..等數字去標識,便于后面使用同樣規則的時候可以直接飲用
   \(root\)\+\1 注意:這種使用方法比較常用

   \(string1\+\(string2\)*\) 
   \1  string1\+\(string2\)*
   \2  string2

 或者 |
  a \| b
  C \| cat

原創文章,作者:fsy,如若轉載,請注明出處:http://www.www58058.com/72664

(0)
fsyfsy
上一篇 2017-04-06 19:27
下一篇 2017-04-06 21:49

相關推薦

  • LAMP基于編譯安裝方式實現(httpd與php以fastcgi方式結合)3

    概述     在某些現有rpm包不能滿足需求的時候,可能需要編譯安裝LAMP環境,本篇就介紹下php與httpd結合方式為fastcgi方式結合時的編譯安裝,同時,由于httpd與php以module方式結合時,僅是編譯選項有所差別,故也會簡單說明下編譯選項的差異 環境     CentOS7系統,…

    Linux干貨 2016-10-17
  • 第十六周作業

    1、源碼編譯安裝LNMP架構環境;     安裝nginx:      1)安裝依賴包 ]# yum groupinstall “Development Tools” “Development Libraries” -y ]# yum install wget openssl-devel ncurses-de…

    2017-05-02
  • 從新開始,堅持記錄

    從新開始,從心開始,記錄自己的學習,不逼自己一把,永遠不知道自己的潛力。

    Linux干貨 2016-12-05
  • Shell腳本編程—函數

    函數:     把一段獨立功能的代碼當作一個整體,并命名一個名字;命名的代碼段,此即為函數     由若干條shell命令組成的語句塊,實現代碼重用和模式化編程 函數的作用:     在某些場景下,我們可以將獨立功能的一段代碼定義為一個函數…

    Linux干貨 2016-08-24
  • 第一周的作業

    1、描述計算機的組成及其功能。 主要分為五個部分: 控制器:計算機的中樞神經,控制總線使用權限、尋址、管理各類資源的分配。 運算器:對數據進行各種算數運算和邏輯運算。 存儲器:通常指內存RAM,CPU需要運行的程序以及數據都存放在存儲器中供CPU調用處理。 (以上三者為計算機核心的三大部件,依靠這三大部件即可完成核心工作。) 輸入設備:比如鼠標、鍵盤,使用戶…

    Linux干貨 2016-11-02
  • N25-第8周博客作業

    第八周 1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態; 在線的主機使用綠色顯示; 不在線的主使用紅色顯示; #!/bin/bash # ip=172.16.250. for i in {1..254}; do if ping -w 1 -c 1 $ip$i &> /dev/n…

    Linux干貨 2017-03-10
欧美性久久久久