Vim中查找替換及正則表達(dá)式的使用詳解
前言
正則表達(dá)式是文本處理領(lǐng)域中的一個(gè)強(qiáng)大的工具,它可以讓文本處理的能力呈指數(shù)級(jí)的提升,如果一款文本編輯器不支持正則表達(dá)式,那么它就算不上是一個(gè)現(xiàn)代化的編輯器,這絕非虛言。
下面這篇文章主要跟大家介紹了關(guān)于Vim查找替換及正則表達(dá)式使用的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面來(lái)一起看看吧。
簡(jiǎn)單替換表達(dá)式
:[range]s/from/to/[flags]
range:搜索范圍,如果沒(méi)有指定范圍,則作用于但前行。
- :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之間搜索替換;
- :10s/from/to/ 表示只在第10行搜索替換;
- :%s/from/to/ 表示在所有行中搜索替換;
- 1,$s/from/to/ 同上。
flags 有如下四個(gè)選項(xiàng):
- c confirm,每次替換前詢問(wèn);
- e error, 不顯示錯(cuò)誤;
- g globle,不詢問(wèn),整行替換。如果不加g選項(xiàng),則只替換每行的第一個(gè)匹配到的字符串;
- i ignore,忽略大小寫(xiě)。
這些選項(xiàng)可以合并使用,如cgi表示不區(qū)分大小寫(xiě),整行替換,替換前詢問(wèn)。
正則表達(dá)式
1、元字符
元字符
元字符 | 說(shuō)明 |
---|---|
. | 匹配任意字符 |
[abc] | 匹配方括號(hào)中的任意一個(gè)字符,可用-表示字符范圍。如[a-z0-9]匹配小寫(xiě)字母和數(shù)字 |
[^abc] | 匹配除方括號(hào)中字符之外的任意字符 |
\d | 匹配阿拉伯?dāng)?shù)字,等同于[0-9] |
\D | 匹配阿拉伯?dāng)?shù)字之外的任意字符,等同于[^0-9] |
\x | 匹配十六進(jìn)制數(shù)字,等同于[0-9A-Fa-f] |
\X | 匹配十六進(jìn)制數(shù)字之外的任意字符,等同于[^0-9A-Fa-f] |
\l | 匹配[a-z] |
\L | 匹配[^a-z] |
\u | 匹配[A-Z] |
\U | 匹配[^A-Z] |
\w | 匹配單詞字母,等同于[0-9A-Za-z_] |
\W | 匹配單詞字母之外的任意字符,等同于[^0-9A-Za-z_] |
\t | 匹配<TAB>字符 |
\s | 匹配空白字符,等同于[\t] |
\S | 匹配非空白字符,等同于[^\t] |
一些普通字符需轉(zhuǎn)意
元字符 | 說(shuō)明 |
---|---|
\* | 匹配* 字符 |
. | 匹配. 字符 |
\/ | 匹配 / 字符 |
\ | 匹配 \ 字符 |
\[ | 匹配 [ 字符 |
\] | 匹配 ] 字符 |
表示數(shù)量的元字符
元字符 | 說(shuō)明 |
---|---|
* | 匹配0-任意個(gè) |
\+ | 匹配1-任意個(gè) |
\? | 匹配0-1個(gè) |
\{n,m} | 匹配n-m個(gè) |
\{n} | 匹配n個(gè) |
\{n,} | 匹配n-任意個(gè) |
\{,m} | 匹配0-m個(gè) |
表示位置的元字符
元字符 | 說(shuō)明 |
---|---|
$ | 匹配行尾 |
^ | 匹配行首 |
\< | 匹配單詞詞首 |
\> | 匹配單詞詞尾 |
2、替換變量
在正則式中以\(和\)括起來(lái)的正則表達(dá)式,在后面使用的時(shí)候可以用\1、\2等變量來(lái)訪問(wèn)\(和\)中的內(nèi)容。
例子
- 刪除行尾空格::%s/\s+$//g
- 刪除行首多余空格:%s/^\s*// 或者 %s/^ *//
- 刪除沒(méi)有內(nèi)容的空行:%s/^$// 或者 g/^$/d
- 刪除包含有空格組成的空行:%s/^\s*$// 或者 g/^\s*$/d
- 刪除以空格或TAB開(kāi)頭到結(jié)尾的空行:%s/^[ |\t]*$// 或者 g/^[ |\t]*$/d
- 把文中的所有字符串“abc……xyz”替換為“xyz……abc”可以有下列寫(xiě)法
:%s/abc\(.*\)xyz/xyz\1abc/g :%s/\(abc\)\(.*\)\(xyz\)/\3\2\1/g
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Python正則表達(dá)式字符串的匹配、替換、分割、查找方式
- python正則表達(dá)式查找和替換內(nèi)容的實(shí)例詳解
- Python 實(shí)用技巧之正則表達(dá)式查找和替換文本的操作方法
- swift 3.0 正則表達(dá)式查找/替換字符的實(shí)現(xiàn)代碼
- Go語(yǔ)言正則表達(dá)式用法實(shí)例小結(jié)【查找、匹配、替換等】
- 在VS2008中使用正則表達(dá)式進(jìn)行查找和替換
- 正則表達(dá)式匹配,替換,查找
- JAVA中正則表達(dá)式匹配,替換,查找,切割的方法
- Xcode 正則表達(dá)式實(shí)現(xiàn)查找替換功能
相關(guān)文章
ubuntu開(kāi)機(jī)后ROS程序自啟動(dòng)問(wèn)題
這篇文章主要介紹了ubuntu開(kāi)機(jī)后ROS程序自啟動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12Xshell連接centOS7并與CentOS7聯(lián)網(wǎng)
本文主要介紹了Xshell連接centOS7并與CentOS7聯(lián)網(wǎng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08Windows上安裝Apache2、PHP5、MySQL5及與Resin配合實(shí)現(xiàn)多系統(tǒng)之整合
筆者之前一直使用Resin作為WEB應(yīng)用服務(wù)器,近來(lái)有項(xiàng)目需要在已有的JSP系統(tǒng)中整合phpwind系統(tǒng),因此首次嘗試在電腦中配置PHP的運(yùn)行環(huán)境。2010-03-03ubuntu15.10下hadoop2.7.2的安裝與配置詳解
今天小編就為大家分享一篇關(guān)于ubuntu15.10下hadoop2.7.2的安裝與配置詳解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02linux后臺(tái)執(zhí)行命令&和nohup的具體使用方法
這篇文章主要介紹了linux后臺(tái)執(zhí)行命令&和nohup的具體使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Linux printf如何將十進(jìn)制轉(zhuǎn)換為十六進(jìn)制
文章總結(jié):介紹了十進(jìn)制、十六進(jìn)制和八進(jìn)制之間的轉(zhuǎn)換方法,包括使用\b命令和bc工具進(jìn)行轉(zhuǎn)換的技巧2024-12-12