Linux 工具箱
正規表示式
什麼是正規表示式?正規表示式只是一個字元模板,用來在搜尋中匹配相同的字元,在大多數程式中,正規表示式是括在正斜線中間的。例如,/love/就是一個以正斜槓為分割符的正規表示式,其中的模板love將用在搜尋所有行中於它匹配的字元。
:1,$s//David/g
這行命令的意思是“從檔案的第一行到檔案的最後一行(1,$)替換(s)單詞Tom或者tom為David”。g(global)標誌表示這個命令對全文有效。正規表示式元字元<和>/分別界定單詞的開始和結束。
正規表示式有兩套字符集,一套是基本元字符集,另一套是擴充套件元字符集。
正則表達是的元字符集
元字元 | 功能 | 例子 | 匹配什麼 |
^ | 錨定行的開始 | /^love/ | 匹配所有以love開頭的行 |
$ | 錨定行的結束 | /love$/ | 匹配所有以love 結束的行 |
. | 匹配一個字元 | /l..e/ | 匹配這樣的行,這些行包含這樣的字元:第一個字元是l,緊跟著兩個字元,然後是e |
* | 代表0個或多個先前字元 | /*love/ | 匹配所有這樣的行,有0個或多個空格,空格後跟著love |
[] | 匹配字元組中的一個字元 | /[Ll]ove/ | 匹配所有包含love或者Love的行 |
[x-y] | 匹配以字元範圍組成的組中的一個字元 | /[A-Z]ove/ | 匹配這樣的行,這些行中包含如下字元,第一個字元是從A到Z中間的一個,後面跟著ove |
[^] | 匹配一個不在範圍內的字元 | /[^A-Z]ove/ | |
用來轉義一個元字元 | /love./ | 匹配所有這樣的行,這些行包含如下字元:love後面跟著一個點。通常點是表示任何字元的萬用字元 |
許多使用RE元字符集的UNIX程式都支援附加元字符集。
< | 錨定單詞的開始 | / | 匹配所有這樣的行,這些行包含以love開頭的單詞(vi和grep支援這個功能) |
> | 錨定單詞的結束 | /love>/ | 匹配所有這樣的行,這些行包含以love結束的單詞(vi和grep支援這個功能) |
(..) | 標記後面用到的匹配字元(傳) | /(love)able1rs/ | 最多可以使用9個標籤。第一個標籤是模板最左邊的部分。在本例子中,模板love儲存的標籤為1,後面的1指得就是love;本例子搜尋的是這樣的行,這些行包含這樣的字元,在Loveabel後面跟著lovers |
x{m}or | M次複製字元x | | |
x{m,}or | 至少m次複製字元x | | |
x{m,n} | 至少m次,至多n次複製字x | o{5,10} | 匹配所有這樣的行,包含的o的數量在5到10個之間。(vi和grep支援這個功能) |
幾個例子:
/^[A-Z]..$/
需要在每一行中尋找的字串是這樣的:這個字串是一行的開始且的第一個字元是一個大寫字母,後面緊跟著兩個任意字元,然後是新的一行。
/^[A-Z][a-z ]*[0-5]/
需要在每一行中尋找的字串是這樣的:這個字串是一行的開始,第一個字元是一個大寫字母,緊跟著0個和多個小寫字母,然後是數字3,再後面是一個介於0和5之間的數字。
/[a-z]*./
0個和多個小寫字母,後面緊跟著一個點號。
/^*[A-Z][a-z][a-z]$/
這個字串是一行的開始,它首先是0個或者多個空格(注意,製表符不算是一個空格),然後是一個大寫字母和兩個小寫字母,緊跟著是新的一行。
/^[A-Za-z]*[^,][A-Za-z]*$/
這個字串是一行的開始,字串的開頭是0個或多個大寫字母或(和)小寫字母,緊跟著一個只要不是逗號的字元,然後是0個和多個大寫字母或者小寫字母,以及新的一行。
/
搜尋的是所有包含單詞fourth的行
/
搜尋的字串是這樣的:以字母f開頭,緊跟著0個或多個任意字元(.*),最終以th結束。
/5{2}2{3}./
首先是2個5,緊跟著是3個2,最後是一個點(.)。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-245419/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux後臺開發工具箱Linux
- 高顏值!一款基於 Flutter 開發的 Linux 伺服器工具箱FlutterLinux伺服器
- Python工具箱系列(五十二)Python
- Python工具箱系列(五十一)Python
- 視訊處理工具箱
- Parallels Toolbox for mac 工具箱合集ParallelMac
- Kilohearts Toolbox Ultimate for MacKilohearts工具箱Mac
- Parallels Toolbox for mac(pd工具箱)ParallelMac
- 星雲 Android 開發工具箱Android
- 【原始碼】Ogive優化工具箱原始碼優化
- go微服務開發工具箱Go微服務
- 技術文件畫圖工具箱
- Kilohearts Toolbox Ultimate for Mac(Kilohearts工具箱)Mac
- 中年男程式設計師的幽默工具箱《讀書自李誕池子的幽默工具箱》程式設計師
- MATLAB模糊資料工具箱的使用Matlab
- TensorFlow 框架的開源工具箱 Ludwig框架開源工具
- 十四、神經網路工具箱nn神經網路
- 多功能iPhone工具箱Omni Toolbox for MaciPhoneMac
- 揭秘你不曾瞭解的看板工具箱
- 跨學科工具箱(1)-系統論
- 分享一個好用的線上工具箱
- U盤製作微pe工具箱(實戰)
- Mac網路監測工具箱:Network Kit XMac
- Xcode:Mac上的全功能開發工具箱XCodeMac
- MATLAB神經網路工具箱使用介紹Matlab神經網路
- PDF Squeezer - PDF Toolbox for Mac(PDF檔案工具箱)Mac
- Kilohearts Toolbox Ultimate for Mac(Kilohearts工具箱) v1.8.24Mac
- 實現工具自由,開源的桌面工具箱
- SpringBoot極簡工具箱終於開源了Spring Boot
- now擴充套件-go的時間工具箱套件Go
- PHP工具箱:PHPStan —— PHP 靜態程式碼分析工具PHP
- 開源的外掛化桌面端效率工具箱
- 超實用的全方位工具箱:Omni Toolbox for MacMac
- 機器學習可解釋性工具箱XAI機器學習AI
- dmntk:Rust的決策模型和符號工具箱Rust模型符號
- 工具箱之 IKVM.NET 專案新進展
- 【MATLAB生信分析】MATLAB生物資訊分析工具箱(二)Matlab
- MATLAB神經網路工具箱(簡單操作介紹)Matlab神經網路
- 8.7K+ Star!快速搭建個人線上工具箱