linux中的正則表達式知識梳理

1. 正則表達式

1.1 正則表達式使用

  正則表達式是開發者爲了處理大量的字符串和文本而定義的一套規則和方法,使用正則表達式能夠提升效率,快速獲取想要的內容.linux

  正則表達式經常使用於linux三劍客grep,sed,awk,用來處理文本數據,也適用於普通命令.正則表達式

  三劍客中使用正則表達式處理文本時,是以行爲單位的.spa

1.2 基本的正則表達式及擴展的正則表達式

  正則表達式及擴展的正則表達式及其含義,以下表:blog

######字符匹配(僅僅匹配單個字符)
. 匹配任意單個字符(通配符的 ? 表明單個字符)
[abc] 匹配集合內任意單個字符
[^abc] 匹配集合外的任意單個字符(非,正則表達式不支持!,!會被當作一個字符)
.* 匹配任意長度的任意字符,即匹配全部內容
######匹配次數(僅僅是次數,不是表示字符)
*

匹配前一個字符任意次(連續出現多少次的意思,前面的字符能夠沒有,開發

匹配0次,即空,則匹配了全部內容)字符串

\? 匹配前一個字符0次或1次(至多1次,前面的字符無關緊要),反斜線是轉義
\+ 匹配前面的字符至少1次(1次或屢次),反斜線是轉義
a\{m\} 匹配前一個字符a,m次(具體的次數),反斜線是轉義
a\{m,n\} 匹配前一個字符a至少m次,至多n次,反斜線是轉義
a\{0,n\} 匹配前一個字符a至多n次,能夠沒有,0能夠省略不寫,反斜線是轉義
a\{1,n\} 匹配前一個字符a至少1次,至多n次,反斜線是轉義
a\{m,\} 匹配前一個字符a至少m次,多則不限制,反斜線是轉義
######位置錨定
^ 行首錨定
$ 行尾錨定
^PATTERN$ 模式匹配整行(具體的字符串匹配整行)
^$ 匹配 空行
^[[:space:]]*$ 匹配空白(空白能夠沒有)或空行
\< 或 \b 詞首錨定(單詞模式的左側,單詞能夠是字符串或者數字,不能是特殊符號)
\> 或 \b 詞尾錨定(單詞模式的右側,單詞能夠是字符串或者數字,不能是特殊符號)
\<PATTERN>\ 匹配整個單詞
######分組及引用
\(\)

將一個或者多個字符捆綁在一塊兒,當作一個總體來處理,如\(xy\)*匹配前面table

的xy任意次class

\(ab\+\(xy\)*\) \1:  ab+\(xy\)*
\2:  xy

1.3 重複1.2

###基本的正則表達式:
^		#<===用法 ^keyword,匹配以keyword開頭的行
$		#<===用法 keyword$,匹配以keyword結尾的行
^$		#<===匹配空行
.		#<===表示任意單個字符
\		#<===轉義字符,還原字符本來的意思
*		#<===匹配前一個字符0次或屢次(前一個字符0次時,匹配全部內容)
.*		#<===匹配全部內容
^.*		#<===匹配以任意多個字符開頭的內容
.*$		#<===匹配以任意多個字符結尾的內容
[abc]	        #<===匹配集合內任意單個字符
[^abc]	        #<===匹配集合外的任意單個字符
###擴展的正則表達式(使用egrep無需加\轉義):
\+		#<===匹配前一個字符1次或1次以上(至少1次)	
\[:/\]+	        #<===匹配[]內:/(或其餘特殊符號)的字符1次或1次以上(至少1次)
\?		#<===匹配前一個字符0次或1次
|		#<===同時過濾多個字符串,使用到的分隔符(在通配符中表示管道)
\(\)	        #<===括號中的內容被當作一個總體,能夠被後面的 \n 引用(n爲數字)
\n 		#<===引用 () 中的內容(n爲數字)
a\{m,n\}	#<===匹配前一個子符a至少m次,至多n次
a\{n,\}		#<===匹配前一個字符a至少n次,多則不限
a\{n\}		#<===匹配前一個字符n次
a\{,m\}		#<===匹配前一個字符至多m次,能夠沒有    
相關文章
相關標籤/搜索