0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

你還不會(huì)gvim正則表達(dá)式?一文搞懂!

sanyue7758 ? 來源:芯片設(shè)計(jì)驗(yàn)證 ? 2024-01-19 16:47 ? 次閱讀

gvim正則表達(dá)式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。

典型的替換命令格式:

%s/正則表達(dá)式/要替換的字符串/g”

典型刪除命令格式:

%g/正則表達(dá)式/d

我們先講元字符,接著講述一些基本的應(yīng)用例子,最后講一些更高階的應(yīng)用例子,一文搞懂正則表達(dá)式!

一. 元字符

先搞清幾個(gè)基本的概念,普通元字符,特殊元字符,數(shù)量元字符,位置元字符。

1. 普通元字符:

通常用來表示數(shù)字、單詞、空格等。

[abc] 匹配a,b,c任意字符
[^abc] 匹配除abc以外的字符
d 匹配阿拉伯?dāng)?shù)字,等同于[0~9],decimal十進(jìn)制
D 匹配阿拉伯?dāng)?shù)字之外的任意字符,等同于[^0~9]
x 匹配十六進(jìn)制數(shù)字,等同于[0-9A-Fa-f],heximal十六進(jìn)制
X 匹配十六進(jìn)制數(shù)字之外的任意字符,等同于[^0-9A-Fa-f]
w 匹配單詞字母,等同于[0-9A-Za-z],正則表達(dá)式中一般用"w+"表示一個(gè)單詞
W 匹配單詞字母之外的任意字符,等同于[0-9A-Za-z]
s 匹配空白符,等同于[ ]
t? 匹配Tab字符
. 匹配任意字符

2. 特殊字符:

特殊字符通常用來表示一些特殊的符號(hào),用轉(zhuǎn)義。

* 匹配 * 字符
. 匹配 . 字符
/ 匹配 / 字符
匹配 字符
[ 匹配 [ 字符

3. 數(shù)量元字符:

通常用來表示普通字符(數(shù)字、單詞、空格)的數(shù)量。

* 匹配0~任意個(gè)
+ 匹配1~任意個(gè)
? 匹配0~1個(gè)
{n,m} 匹配n ~ m個(gè)
{n} 匹配 n個(gè)
{n,} 匹配 n ~ 任意個(gè)
{,m} 匹配 0 ~ m 個(gè)

4. 位置元字符

$ 匹配行尾
v 匹配行首
< 匹配單詞詞首
> 匹配單詞詞尾

幾個(gè)例子:

[abc]表示匹配 a,b,c中的任意一個(gè)字符;

abc表示匹配abc,abc為一個(gè)整體;

[^abc]表示匹配除 a,b,c 以外的任意任意字符

^abc表示匹配以abc為開頭的字符串,abc為一整體

表示匹配固定單詞abc

w+表示匹配任意單詞

二. 基礎(chǔ)應(yīng)用

替換與刪除示例:

1. 把所有的abc或者Abc都替換為大寫的ABC;

命令: %s/[Aa]bc/ABC/g

2. 刪除所有空行(空行中無任何字符)

命令: %g/ ^ $/d

3.刪除所有空行(空行中可以包含空白符、Tab鍵等)

命令:%g/^ s * $/d

4. 刪除含有abc字符的行

命令1: g/abc/d

命令2: %s/.*abc. *$//g (替換命令實(shí)現(xiàn)刪除)

5. 刪除每行開頭的空格

命令 :%s/^ *//g——通過替換命令實(shí)現(xiàn)刪除效果

6. 在文件中的每一行的開始插入abc字符

命令 ——:%s/^/abc/g

7. 在每一行尾部都加上abc字符

命令: %s/$/abc/g

8. 刪除以數(shù)字開頭的行

命令: %s/^d . *$ //g

三. 高階應(yīng)用-分組

所謂分組,即使用 ( 和 )符號(hào)括起來的正則表達(dá)式,即可在其后面使用1 ,2等變量來訪問 ( 和 )符號(hào)括起來的內(nèi)容。

1.交換順序:ABC:XYZ改為XYZ:ABC

命令:%s/ (. ):(. )/2:1/g

2.abc開頭的后面為一個(gè)或多個(gè)空格,然后為一個(gè)單詞,將abc和該單詞交換位置

命令: %s/^(abc)s+ (w+) /2 1/g

3.刪除重復(fù)行

命令 :%s/^ (.*)( 1){2,}/1/g (將2行及以上重復(fù)行壓縮成一行)

解釋:^(. * )表示以任意字符開頭的行, 表示換行符, ( 1){2,}表示^(.* )換行后重復(fù)2次以上,替換成一行。

4. 給各行開頭加上行號(hào)+: (123: )

命令: %s/^/=line('.').':'

解釋:^代表行首,line('.')代表獲取行號(hào)的函數(shù),.':'代表拼接:號(hào),最終格式為:"行號(hào):"。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Gvim
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    2953

原文標(biāo)題:你還不會(huì)gvim正則表達(dá)式???來,一文搞懂!

文章出處:【微信號(hào):處芯積律,微信公眾號(hào):處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    什么是正則表達(dá)式?正則表達(dá)式如何工作?哪些語法規(guī)則適用正則表達(dá)式

    正則表達(dá)式又稱規(guī)則表達(dá)式(Regular Expression,在代碼中常簡寫為 regex、regexp 或 RE),是種用于匹配、查找、替換文本的強(qiáng)大工具。它能夠以特定的模式匹配字符串,從而
    的頭像 發(fā)表于 11-03 14:41 ?2739次閱讀
    什么是<b class='flag-5'>正則表達(dá)式</b>?<b class='flag-5'>正則表達(dá)式</b>如何工作?哪些語法規(guī)則適用<b class='flag-5'>正則表達(dá)式</b>?

    GVIM正則表達(dá)式介紹和使用示例

    的Ken Thompson借用這個(gè)概念并將它應(yīng)用到了文本編輯器中。后面正則表達(dá)式的說法進(jìn)入到了大家常用的vi、vim、gvim當(dāng)中。
    的頭像 發(fā)表于 12-18 15:09 ?1113次閱讀
    <b class='flag-5'>GVIM</b><b class='flag-5'>正則表達(dá)式</b>介紹和使用示例

    shell正則表達(dá)式學(xué)習(xí)

    正則表達(dá)式在計(jì)算機(jī)科學(xué)中,是指個(gè)用來描述或者匹配系列符合某個(gè)句法規(guī)則的字符串的單個(gè)字符串。在很多文本編輯器或其他工具里,正則表達(dá)式通常被用來檢索和/或替換那些符合某個(gè)模式的文本內(nèi)容
    發(fā)表于 07-25 17:18

    解析go語言正則表達(dá)式

    ]+)g", "11golang11") //true fmt.Println(match)上面我們直接使用了字符串匹配的正則表達(dá)式,但是對(duì)于其他的正則匹配任務(wù),需要使用個(gè)優(yōu)化過
    發(fā)表于 10-17 17:25

    深入淺出boost正則表達(dá)式

    什么是正則表達(dá)式?正則表達(dá)式種用來描述定數(shù)量文本的模式。Regex代表Regular Express. 如果您不知道什么是正則表達(dá)式
    發(fā)表于 09-08 18:09 ?9次下載

    精通正則表達(dá)式

    詳細(xì)的快速正則表達(dá)式的查詢電子書,簡單而豐富
    發(fā)表于 05-16 18:04 ?5次下載

    關(guān)于java正則表達(dá)式的用法詳解

    正則表達(dá)式 個(gè)正則表達(dá)式個(gè)用于文本搜索的文本模式。換句話說,在文本中搜索出現(xiàn)的模式。例如,可以用
    發(fā)表于 09-27 14:24 ?0次下載

    快速入門IPv6和正則表達(dá)式

    對(duì)于日常開發(fā)中只接觸IPv4,并沒有深入研究過正則表達(dá)式的開發(fā)者,面對(duì)IPv6和正則表達(dá)式,容易產(chǎn)生畏懼心理,覺得是兩座難以翻越的大山。本文通過些表格整理對(duì)IPv6的表示方法,以及正則表達(dá)式
    的頭像 發(fā)表于 03-30 09:31 ?8889次閱讀
    快速入門IPv6和<b class='flag-5'>正則表達(dá)式</b>

    Python正則表達(dá)式的學(xué)習(xí)指南

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達(dá)式、如何優(yōu)化
    發(fā)表于 09-15 08:00 ?0次下載
    Python<b class='flag-5'>正則表達(dá)式</b>的學(xué)習(xí)指南

    Python正則表達(dá)式指南

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達(dá)式、如何優(yōu)化
    發(fā)表于 03-26 09:13 ?10次下載
    Python<b class='flag-5'>正則表達(dá)式</b>指南

    C語言如何使用正則表達(dá)式

    C語言的正則表達(dá)式規(guī)則,特此跟大家分享。
    的頭像 發(fā)表于 03-16 08:41 ?4863次閱讀

    python正則表達(dá)式中的常用函數(shù)

    編譯正則表達(dá)式模式,返回個(gè)正則對(duì)象的模式。(可以把那些常用的正則表達(dá)式編譯成正則表達(dá)式對(duì)象,這樣可以提高
    的頭像 發(fā)表于 03-18 16:12 ?1756次閱讀

    Linux入門之正則表達(dá)式

    些約定好的匹配規(guī)則,但由于規(guī)則較多,可能比較容易忘記。 本文會(huì)先整理出所有的正則表達(dá)式以及其含義,接下來會(huì)利用grep命令,詳細(xì)介紹每種正則表達(dá)式的使用方式,并給出案例。
    的頭像 發(fā)表于 05-12 15:31 ?821次閱讀
    Linux入門之<b class='flag-5'>正則表達(dá)式</b>

    shell腳本基礎(chǔ):正則表達(dá)式grep

    在Linux上有許多命令可以使用正則表達(dá)式,其中最常見的是grep命令和sed命令。正則表達(dá)式有多種類型,每種類型中可以使用的元字符類型不同。最常見的是基本正則表達(dá)式和擴(kuò)展正則表達(dá)式。
    的頭像 發(fā)表于 05-29 09:29 ?1194次閱讀
    shell腳本基礎(chǔ):<b class='flag-5'>正則表達(dá)式</b>grep

    Python中的正則表達(dá)式

    哈嘍大家好,我是了不起,今天給大家講Python中的正則表達(dá)式 在Python中,正則表達(dá)式種強(qiáng)大的文本處理工具,它可以用來匹配、搜索、替換文本。正則表達(dá)式
    的頭像 發(fā)表于 06-21 16:52 ?946次閱讀