正則表達式入門

正則表達式入門

談到正則表達式,我們就得先了解一下POSIX。POSIX的全稱是Portable Operating System Interface for
uniX
,它由一系列規范構成,定義了UNIX,linux操作系統應當支持的功能,它定義了BREBasic Regular Expression,基本型正則表達式)和EREExtended Regular Express,擴展型正則表達式)兩大流派。

正則表達式由只代表自身的字面值和代表特定含義的元字符組成,除非特別說明,正則表達式嚴格區分大小寫。正則表達式的大致匹配過程是:

1.依次拿出表達式和文本中的字符比較,

2.如果每一個字符都能匹配,則匹配成功;一旦有匹配不成功的字符則匹配失敗。

3.如果表達式中有量詞或邊界,遵循量詞或邊界指定的規則來匹配。

正則表達式入門

基礎正則表達式中,如果你想使用? + () {},因為他們表示特殊含義,所以你需要將他們轉義

而擴展正則表達式中,如果你想使用? + () {} ,就沒必要加“\”了,進化版的正則表達式在這方面給我們提供了很大的便利正則表達式入門

所謂特殊含義,就是正則表達式中的含義。非特殊含義,就是這個符號本身。

+,*中大家會遇到貪婪模式的說法,也有稱最長匹配原則,本質就是趨向于最大長度匹配。”.*”這個組合幾乎可以匹配所有,貪婪性赤裸裸的暴露出來了。

基本正則表達式(BRE

字符匹配

(匹配的時候需要使用兩個方括號,如[[ :alpha:]])
    .  表示任意單個字符,.會匹配除了換行符的任意字符
    [ ]   表示匹配范圍內的任意單個字符
    [^ ]  表示匹配范圍外的任意單個字符
    [:alpha:]   任意一個字母(相當于a-zA-Z)
    [:upper:]  任意一個大寫字母(相當于A-Z)
    [:lower:]  任意一個小寫字母(相當于a-z)
    [:digit:]   任意一個數字(相當于0-9)
    [:space:]  水平和垂直的空白字符(比blank包含的更多)
    [:blank:]   空白字符(空格和制表符)
    [:punct:]  標點符號
    [:alnum:]   任意字母和數字(相當于0-9a-zA-Z)
    [:print:]   可打印字符

匹配次數

    *   表示*號前面的一個字符的0-N次(它有一個貪婪模式,會盡量匹配最長)
    .*   表示任意多個長度的字符
    \?    表示\?符號前的字符0-1次
    \+     匹配\+前的字符至少1次
    \{m,n\}    表示\{m,n\}符號前的字符的m-n次
    \{m\}     表示{m\}符號前的字符m次
    \{n,\}     表示匹配前面字符至少n次
    \{,n}      表示匹配前面字符最多n次

位置錨定

    ^ 之后接字符    表示^ 之后的字符出現在行首
    $ 之前接字符    表示$之前的字符出現在行尾
    \> 表示\> 符號之后的字符出現在單詞的尾部
    \< 表示\< 之前的字符出現在單詞的首部
    \<字符 \>      表示只有小于號和大于號之間的字符

分組

    分組 : \(\) 將一個或多個字符捆綁在一起,當作一個整體進行處理,如 : \(root\)+
    后向引用 : 引用前面的分組括號中的模式所匹配字符,而非模式本身
 
    或者 : \|

拓展正則表達式(ERE

字符匹配

    .  表示任意單個字符,.會匹配除了換行符的任意字符
    []   匹配指定范圍內的任意單個字符
    [^]  匹配指定范圍外的任意單個字符
    [ :alnum : ]   字母和數字
    [ :alpha : ]   代表任何英文大小寫字符,亦即 A-Z, a-z
    [ :lower : ]   小寫字母
    [ :upper : ]   大寫字母
    [ :blank : ]   空白字符(空格和制表符)
    [ :digit : ]   十進制數字
    [ :xdigit : ]  十六進制數字
    [ : graph :]   可打印的非空白字符
    [ :print :]   可打印字符
    [ :punct :]   標點符號

 

匹配次數

    * 匹配前面字符任意次,包括0次
    ? 0或1次
    +: 1次或多次
    {n}   匹配前面的字符n次
    {m,n} 匹配前面的字符至少m次,至多n次
    {,n}  匹配前面的字符至多n次
    {n,}  匹配前面的字符至少n次

位置錨定

    ^   行首錨定,用于模式的最左側
 
    $   行尾錨定,用于模式的最右側
 
    \< 或 \b     詞首錨定,用于單詞模式的左側
 
    \> 或 \b     詞尾錨定;用于單詞模式的右側
 
    \<PATTERN\> 匹配整個單詞

分組

    ():分組,后面可以使用1 ,2 ,3...引用前面的分組
    a|b : a或b

優先級

優先級

符號

1

\

2

( )(?: )、(?= )[ ]

3

*、+?、{n}、{n,}、{m,n}

4

^、$

5

|

實戰正則表達式入門

(思考的出發點不同,過程也就不盡相同,過程和結果同樣重要

1找出/etc/rc.d/init.d/functions的基名(basename可以直接獲?。?。

正則表達式入門

2 找出/etc/rc.d/init.d/functions的目錄名(dirname可以直接獲?。?。

正則表達式入門

3 統計last命令中以root用戶登錄的每個主機IP登錄次數。

正則表達式入門

4 顯示ifconfig命令中所有的IPV4地址。

正則表達式入門

5顯示/etc/passwd中以/bin/bash結尾的行。

正則表達式入門

        基于最近的學習整理的資料,尚有諸多不足之處,還望大佬們多多指點!

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

(0)
LinuxWalkerLinuxWalker
上一篇 2017-07-29
下一篇 2017-07-29

相關推薦

  • N26-第一周博客作業

    1、計算機的組成及功能     CPU: Central Processing Unit 運算與管理控制功能        包括:          &nbsp…

    Linux干貨 2017-01-10
  • zabbix表分區(適用于zabbix2.0.x,zabbix2.2.x和zabbix2.4.x)

    本文主要介紹了zabbix進行數據庫表分區的方法:         在系統監控中,zabbix已經代替了nagios+cacti,zabbix以其良好的圖形展示和高度自定義贏得了很多運維人員的喜愛。但是由于在工作中,zabbix跑的時間過長(我們公司跑了將近3年),web頁面經??D,監控…

    Linux干貨 2015-10-27
  • linux三劍客之grep

    linux三劍客之grep        所謂三劍客的工具有“grep”、“sed” 、“awk”,他們都是不謀而合的文本搜索查找處理的強大工具。grep 是 Ken Thompson 寫的,他也是 Unix 的創造者。 gerp及正則表達式    grep全稱(GLobal search Regu…

    Linux干貨 2016-08-08
  • 了解 linux

    計算機組成     CPU  ——> central processing unit, 運算器&控制器             主要工作管理和運算;   &…

    Linux干貨 2016-09-17
  • DNS服務和搭建

    DNS服務:        名字解析        DNS 服務        實現主從服務器        實現子域        實現view  …

    2017-04-16
  • mogilefs部署

    mogilefs實驗環境: 1.需要兩臺tracker主機 2.一臺mariadb 3.nginx_mogilefs_module模塊要編譯安裝 在tracker主機: 1.上下載rpm包 mkdir mogilefs/ cd mogilefs lftp 172.16.0.1 get MogileFS-Server-2.46-2.el7.centos.noa…

    Linux干貨 2017-08-08
欧美性久久久久