Linux 正則表達式

What

查找目標字符的一種規則,主要通過匹配和重複的組合方式來查找

  1. 全新的界面設計
  2. 在創作中心設置你喜愛的代碼高亮樣式,Markdown 將代碼片顯示選擇的高亮樣式 進行展示;
  3. 增加了 圖片拖拽 功能,你可以將本地的圖片直接拖拽到編輯區域直接展示;

How

1.通配符匹配單個字符的情況

通配符 * 表示0到多個任意字符,如 ls –l  s*
通配符 ? 任意單個佔位字符
通配符 [] 如 [a-z] [0-9] 單字符佔位 

2.正則表達式中

匹配操作符

		\                  轉義字符
		. 	                 匹配任意單個字符
		[1249a],[^12],[a-k]  字符序列單字符佔位
		^                 行首
		$                  行尾
		\<,\>:\<abc           單詞首尾邊界
		|                   連接操作符   左右兩邊是或的邏輯
		(,)              選擇操作符
		\n    	     反向引用

重複操作符

		?      	匹配0到1次。
		*      	匹配0到多次。
		+     	匹配1到多次。
		{n}   	匹配n次。
		{n,}  	匹配n到多次。
		{n,m}      匹配n到m次。
		與擴展正則表達式的區別:grep basic
		\?, \+, \{, \|, \(, and \)
		匹配任意字符
		.*  0到多個任意字符

3.Demo

找到 包含數字的行 grep “[0-9]” grep.txt
找到 包含34數字的行 grep “[34]” grep.txt
找到 包含連續4個數字的行 grep “[0-9]{4}” grep.txt
找到 只包含連續4個數字的行,前後不能再有數字了
測試數據:從尚學堂中get到的,有些複雜,在此記錄分享一下,如果問題,請指出
ooxx12121212ooxx
ooxx 12121212
oox 12121212
1212 ooxx 1212
oo3xx
oo1234xx
命令 :

	grep -E "^[0-9]{4}[^0-9]|[^0-9][0-9]{4}[^0-9]|[^0-9][0-9]{4}$|^[0-9]{4}$" grep.txt

註釋:
[]中的表示行首,$表示行尾
[^0-9] 中的 ^ 表示是取反,非0-9的字符
| 邏輯或連接
{4} 表示重複4次
命令描述
以數字做行首的連續4個數字,後面再接非數字的字符
| 以非數字做行首的字符,後面再接4個連續字符,後面再接非數字的字符
| 以非數字做行首的字符,後面再接4個連續字符,後面不接字符,結束
| 以數字做行首的連續4個數字,後面不接字符,結束
總結 行首數字的情況下,行尾有字符和無字符
行首是非字符的情況下,行尾有字符和無字符
所以還可以合併同類項

	grep   "\(^[0-9]\|[^0-9][0-9]\)[0-9]\{2\}\([0-9][^0-9]\|[0-9]$\)"  grep.txt

關於轉義

// 原始寫法
grep "aaa.*bbb.*aaa.*bbb" grep.txt
// 變成引用的方式寫法,此處的\1是一個變量,代表aaa,\2代表bbb
grep "\(aaa\).*\(bbb\).*\1.*\2" grep.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章