正則表達式基礎

一、正則表達式:

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

正則表達式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
下一篇 2017-06-04

相關推薦

  • Linux基于OpenSSL實現私有CA構建

    前言 隨著互聯網的迅猛發展,網絡通信已經成為傳遞信息的主要途徑。而通信時的數據傳輸大部分卻是明文傳輸的,在網絡這個不安全的環境下,如果沒有一套數據加密機制,就會導致敏感信息和重要數據泄露,引起不可估量的損失。而OpenSSL正好彌補了這一缺憾,那什么是OpenSSL呢?OpenSSL是一套強大的具有加密功能的組件,它包含libcrypto(公共加密庫)、li…

    Linux干貨 2015-04-13
  • Linux的哲學思想第二篇

    Linux的哲學思想 一切皆文件 物理終端 物理終端指的是顯示器等硬件終端設備,文件存在于 /dev/console 這個路徑下 虛擬終端 虛擬終端指的是在linux命令行連接的終端,文件存在于 /dev/tty# [1,6] 這個路徑下 串行終端 指的是使用計算機串行端口連接的終端設備,文件存在于 /dev/ttyS# 這個路徑下 偽終端 指的是在Xshe…

    2018-02-26
  • Unix發展與現狀

    Unix 簡史 1965年時,貝爾實驗室(Bell Labs)加入一項由奇異電子(General Electric)和麻省理工學院(MIT)合作的計劃;該計劃要建立一套多使用者、多任務、多層次(multi-user、multi- processor、multi-level)的MULTICS操作系統。直到1969年,因MULTICS計劃的工作進度太慢,該計劃就…

    Linux干貨 2015-09-22
  • 網絡班N22期第七周博客作業

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;     [root@bogon ~]# fdisk /dev/sde   &nb…

    Linux干貨 2016-10-17
  • VSFTPD+PAM+[基于文件虛擬用戶認證 | 基于MYSQL虛擬用戶認證]

    VSFTPD+PAM+[基于文件虛擬用戶認證 | 基于MYSQL虛擬用戶認證] VSFTPD+PAM+[基于文件虛擬用戶認證 | 基于MYSQL虛擬用戶認證] 一、實驗環境 二、實驗步驟 1、通過mysql數據庫方式虛擬用戶認證 1.1數據庫配置 1.2FTP配置 1.3測試 2、通過文件方式進行虛擬用戶認證 一、實驗環境 CentOS 6.7+vsftpd…

    Linux干貨 2016-04-18
  • 如何在Linux上創建文件系統

        談到如何創建文件系統,在這里就不得不提一下什么是文件系統,在百度上搜索得到的定義是這樣的:操作系統中負責管理和存儲文件信息的軟件機構稱為文件管理系統,簡稱文件系統,簡單的看這個概念可能感覺還是有點茫茫然,其實簡單的說,就是定義磁盤存取數據的一種邏輯組織,我們都知道磁盤是一種存儲數據的硬件,首先但這個硬件的工作當…

    Linux干貨 2016-01-18
欧美性久久久久