您好,登錄后才能下訂單哦!
何謂正則表達式
正則表達式,又稱正規表示法、常規表示法(Regular Expression,在代碼中常簡寫為regex、regexp或RE),是一類字符所書寫的模式,其中許多字符不表示其字面意義,而是表達控制或通配等功能。正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。在很多文本編輯器里,正則表達式通常被用來檢索、替換那些符合某個模式的文本。許多程序設計語言都支持利用正則表達式進行字符串操作。
正則表達式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。元字符使正則表達式具有處理能力。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,不表示其字面意義,而用于額外功能性描述。
正則表達式分類
正則表達式根據元字符的數量及功能不同又分為基本正則表達式(grep)和拓展正則表達式(egrep)。而grep和egrep同屬于文本搜索工具,可根據用戶指定的文本模式(搜索條件)對目標文件進行逐行搜索,顯示能匹配到的行。用法上grep –E等同于egrep,與grep和egrep相似的文本搜索工具還有fgrep,因不支持使用正則表達式,所以不再單獨介紹。
基本正則表達式(grep)
語法格式:grep[option]... 'PATTERN' FILE...
基本正則表達式元字符:
1.字符匹配:
.:任意單個字符[ ]:匹配指定范圍內的任意單個字符
[0-9]:匹配單個數字
[a-z]:匹配單個小寫字母
[A-Z]:匹配單個大寫字母
[[:digit:]]:匹配單個數字
[[:lower:]]:匹配單個小寫字母
[[:upper:]]:匹配單個大寫字母
[[:space:]]:匹配單個空白字符
[[:punct:]]:匹配單個標點符號
[[:alnum:]]:匹配單個字母或數字
[[:alpha:]]:匹配單個字母(不分大小寫)
[^]:匹配范圍外的任意單個字符
2.次數匹配:
*:任意次(前面字符出現任意次)
\?:0次或1次(前面字符可有可無)
\{m\}: m次(前面字符出現m次)
\{m,n\}:至少m次,至多n次
\{m,\}:至少m次
\{0,n\}:至多n次
.*:任意長度的任意字符
3.位置錨定:
^:行首錨定(寫在模式最左側)
$:行尾錨定(寫在模式最右側)
^$:空白行
\<,/b:詞首錨定(出現于單詞左側)
\>,/b:詞尾錨定(出現于單詞右側)
(注:不包含特殊字符的連續字符組成的串叫單詞)
4.分組
\( \):如\(ab\)*
(分組中的模式匹配到的內容,可由正則表達式引擎記憶在內存中,之后可被引用)
5.引用
\n:引用前面的第n個左括號以及與之對應的右括號中的模式所匹配到的內容
拓展正則表達式(egrep)
語法格式:egrep [option] 'PATTERN' FILE...
拓展正則表達式元字符:
1.字符匹配:
.:任意單個字符
[ ]:匹配范圍內的任意單個字符
[^]:匹配范圍外的任意單個字符
2.次數匹配:
*:任意次
?: 0或1次
+:至少1次
{m}: m次
{m,n}:至少m次,至多n次
{m,}:至少m次
{0,n}:至多n次
3.位置錨定:
^:行首錨定
$:行尾錨定
\<,\b:詞首錨定
\>,\b:詞尾錨定
^$,^[[:space:]]*$:空白行
4.分組:
( ):分組
|:或
5.引用:
\n:引用前面的第n個左括號以及與之對應的右括號中的模式所匹配到的內容
grep及egrep命令選項
-v: 反向選取
-o:僅顯示匹配的字串,而非字串所在的行
-i:ignore-case,忽略字符大小寫
-A:顯示之后兩行
-B:顯示之前兩行
-C:顯示上下兩行
牛刀小試
顯示/proc/meminfo文件中以大寫或小寫S開頭的行
顯示/etc/passwd文件中其默認shell為非/sbin/nologin的用戶
顯示/etc/passwd文件中其默認shell為/bin/bash的用戶中ID號最大的用戶
找出/etc/passwd文件中的一位數或兩位數
顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行
顯示/etc/rc.d/rc.sysinit文件中,以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行
找出netstat -tan命令執行結果中以'LISTEN'結尾的行
找出當前系統上其用戶名和默認shell相同的用戶
顯示當前系統上root或scholar用戶的默認shell
找出/etc/rc.d/init.d/functions文件中某單詞后跟一組小括號“()”行
使用echo命令輸出一個路徑,而后使用grep取出其基名
找出ifconfig命令結果中的1-255之間的數字
The End
好了總結到這里,常用的正則表達式用法就整理的差不多了,以上都是個人學習總結,如有錯漏,大
神勿噴~~~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。