正則表達式基礎

一、正則表達式:

元字符是用來闡釋字符表達式意義的字符,簡言之,就是用來描述字符的字符。

正則表達式RE(Regular Expression)是由一串字符和元字符構成的字符串。

正則表達式的主要功能是文本查詢和字符串操作,它可以匹配文本的一個字符或字符集合。實際上正則表達式完成了數據的過濾,將不滿足正則表達式定義的數據拒絕掉,剩下與正則表達式匹配的數據。

 

                        基本的正則表達式元字符集合及其意義

符號 意義
* 0個或多個在*字符之前的那個普通字符
. 匹配任意字符
^ 匹配行首,或后面字符的非
$ 匹配行尾
[] 匹配字符集合
\ 轉義符,屏蔽一個元字符的特殊意義
\<\> 精確匹配符號
\{n\} 匹配前面字符出現n次  P.43
\{n,\} 匹配前面字符至少出現n次
\{n,m\} 匹配前面字符出現n~m次

1.“*”符號

  zha*ng  :“*”前面的普通字符是a,就表示匹配a字符0次或多次,如:zhng、zhang、zhaaaang

  (根據測試可以不包括前面的字符,即匹配0次

2.匹配空行

  匹配行首的^和匹配行尾的$組合起來“^$”可以用來匹配空行,如果需要匹配只包含一個字符的行,可以用“^.$”

3.”[]”符號

  匹配字符集合,支持窮舉方法列出字符集合的所有元素,也支持使用“-”符號表示字符集合范圍

  [12345] 等價于 [1-5]

  我們知道“^”符號表示匹配行首,但是,“^”符號放到“[]”符號中就不再表示匹配行首了,而是表示取反符號。

  [^b-d]  :表示不再b~d范圍內的字符

  [A-Za-z] [A-Za-z]*  :匹配任意英文單詞

二、正則表達式的擴展:

                擴展的正則表達式元字符及其意義

符號 意義
? 匹配0個或一個在其之前的那個普通字符
+ 匹配一個或多個在其之前的那個普通字符
() 表示一個字符集合或用在expr中
| 表示“或”,匹配一組可選的字符

1.“?”符號

  (根據測試可以不包括前面的字符,即匹配0次

2.”()”符號和“|”符號

  “()”符號和“|”符號通常結合使用,表示一組可選字符的集合。

  re(a|b|c)d  等價于  re[abc]d

  “|”符號也可以表示多個正則表達式的“或”關系。

  grep -E “zha?ng|zhi”  文件

三、通配符:

bash shell本身不支持正則表達式,使用正則表達式的是shell命令和工具,如grep,sed,awk。

bash shell可以使用正則表達式中的一些元字符實現通配(Globbing)功能。

通配是把一個包含通配符的非具體文件名擴展存儲在計算機,服務器或者網絡上的一批具體文件名的過程。(可以看出通配主要應用匹配文件名上,而正則主要應用于字符串上

最常用的通配符包括正則表達式元字符:?、*、[]、{}、^等。

符號 意義
* 任意位的任意字符
? 一個任意字符
^ 取反

1.“{}”符號

  表示一組表達式的集合。如:{[a-h]*.awk ,a?.txt}

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

(0)
sunhaosunhao
上一篇 2017-06-04 14:11
下一篇 2017-06-04 17:52

相關推薦

  • Linux基礎知識之命令的語法通用格式

    #COMMAND OPTIONS ARGUMENTS 1.COMMAND:   (1)發起一命令:請求內核將某個二進制程序運行為一個進程: 程序–>進程 靜態–>動態 (有聲明周期)   (2)命令本身是一個可執行的程序文件:二進制格式的文件,有時候會調用共享庫文件 多數系統程序文件都存放在:/bin,…

    Linux干貨 2016-07-07
  • Nginx 代理和緩存

    一 實驗環境 Nginx 版本:nginx-1.8.1 Nginx代理服務器WAN:192.168.1.5 LAN:172.16.2.1 Web1:172.16.2.2 Web2:172.16.2.3 1.  配置好IP、DNS 、網關,確保使用遠程連接工具能夠連接服務器 2.      …

    Linux干貨 2016-12-05
  • GRUB

    GRUB(Boot Loader):  grub: GRand Unified Bootloader grub 0.x: grub legacy grub 1.x: grub2 grub legacy: stage1: mbr stage1_5: mbr之后的扇區,讓stage1中的bootloader能識別stage2所在的分區上的文件系統; s…

    Linux干貨 2016-04-12
  • Linux程序包管理rpm、yum、源碼編譯

    概述:     眾所周知,Linux操作系統本身,必須要借助額外的一些軟件,才能完成某些應用的,操作系統如果沒有應用程序的填充,就無法創造出生產力,這樣即使再完美的操作系統,也毫無用處。那么本章就簡要介紹一下Linux系統上對程序包的管理,分為以下三個部分:     1、程序包的…

    Linux干貨 2016-08-24
  • Linux系統啟動流程與內管管理(上)

    在講linux系統啟動流程之前,來講講linux的組成,這樣能能幫助我們深入了解系統的啟動流程,廢話不多說直接上系統啟動流程圖 linux組成 linux:kernel+rootfs kenrel的作用:進程管理、內存管理、網絡管理、驅動程序、文件系統、安全管理等   rootfs:程序和glibc 庫:函數結合,function,調用接口(頭文件…

    系統運維 2016-09-14
  • MongoDB

    Edit MongoDB 手冊 MongoDB 手冊 第一章 Introduction MongoDB入門學習目錄(建議) Databases Collections Documents 第二章 部署安裝 1. Import the MongoDB public key 2. Configure the package management system (…

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