吴忠躺衫网络科技有限公司

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

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

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

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

jf_SMr56CbK ? 來源:集成電路設(shè)計(jì) ? 2023-12-18 15:09 ? 次閱讀

作者|清洬

編輯|清洬

GVIM正則表達(dá)式

1 正則表達(dá)式介紹
2 基本命令
3 元字符
4 特殊字符
5 表示數(shù)量的元字符
6 表示位置的元字符
7 示例

01:正則表達(dá)式介紹

20世紀(jì)50年代,一位名叫Stephen Cole Kleene的美國數(shù)學(xué)家發(fā)表了規(guī)則的語言(regular language)的定義。規(guī)則的表達(dá)式就是用來描述規(guī)則的語言的表達(dá)式。后來發(fā)明UNIX的Ken Thompson借用這個(gè)概念并將它應(yīng)用到了文本編輯器中。后面正則表達(dá)式的說法進(jìn)入到了大家常用的vi、vim、gvim當(dāng)中。

正則表達(dá)式在gvim、perl以及sed等情況中都可以使用。它可以幫助我們完成以下幾類工作:

①確認(rèn)字符串是否匹配了某種模式

②把字符串中匹配了某種模式的內(nèi)容捕獲出來

③把字符串中匹配的內(nèi)容替換成指定的內(nèi)容

下面進(jìn)入正則表達(dá)式的世界中吧!掌握了它并能熟練運(yùn)用的話,能完成很多難以想象的工作的哦!

02:基本命令

/ 搜索命令(例如 /正則表達(dá)式)

/ab 即為搜索字母組合ab

:s 替換命令

:s/正則表達(dá)式/替換字符串/選項(xiàng)

03:元字符

. 匹配任意一個(gè)字符
[abc] 匹配方括號(hào)中的任意一個(gè)字符,可以使用-表示字符范圍。如[a-z0-9]匹配小寫字母和0-9數(shù)字
[^abc] 在括號(hào)內(nèi)開頭使用^符號(hào),表示匹配除方括號(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)制以外的任意字符,等同于[^0-9A-Fa-f]
w 匹配單詞字母,等同于[0-9A-Za-z_]
W 匹配單詞字母之外的任意字符,等同于[^0-9A-Za-z_]
匹配字符
s 匹配空白字符,等同于[ ]
S 匹配非空白字符,等同于[^ ]
匹配回車符

04:特殊字符

* 匹配 * 字符
. 匹配 . 字符(注意與.的區(qū)別)
/ 匹配 / 字符
\ 匹配 字符
[ 匹配 [ 字符

05:表示數(shù)量的元字符

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

06:表示位置的元字符

$ 匹配 行尾
^ 匹配 行首(區(qū)分[^abc],這個(gè)hat符號(hào)是在方括號(hào)里面)
< 匹配 單詞詞首
> 匹配 單詞詞尾

07:示例

:%s/[Aa]sic/ASIC/g

把所有單詞asic或者Asic都替換為ASIC。如圖

5db53894-9d74-11ee-8b88-92fbcf53809c.png

注意使用該命令后,只有第一行發(fā)生了變化。因?yàn)橹挥械谝恍蟹掀ヅ錀l件[Aa]sic。所以只有第一行被替換成了ASIC。

命令解讀:%s(substitute)為全局替換;[Aa]sic為匹配的內(nèi)容;ASIC為替換的內(nèi)容;g為global。

:%s/ +/ /g

使用單個(gè)空格替換一個(gè)或多個(gè)空格。如下圖

5dd15f74-9d74-11ee-8b88-92fbcf53809c.png

使用命令后第一行的3個(gè)空格和第二行的2個(gè)空格均被1個(gè)空格所取代。

命令解讀:%s為全局替換;“+"為匹配1個(gè)或多個(gè)空格;‘’為替換的內(nèi)容。g為global。代表空格。

:[range]global/{pattern}/{command}

global命令在[range]指定的文本范圍內(nèi)(缺省時(shí)為整個(gè)文件)查找{pattern},然后匹配到的行執(zhí)行命令{command},如果希望對(duì)沒匹配上的執(zhí)行命令,則使用global!vglobal命令。

:g/^[ ]*$/d

刪除所有的空行(沒有任何字符,除了一個(gè)回車符),如圖所示。

5de2e406-9d74-11ee-8b88-92fbcf53809c.png

命令使用后,所有只有一個(gè)換行符的行都被刪掉。注意如果使用:g/^[ ]$/d則達(dá)不到效果。

:g/asic/d

刪除含有asic字符的行,如下圖

5decf19e-9d74-11ee-8b88-92fbcf53809c.png

因?yàn)橹挥械谝恍杏衋sic,所以第一行被刪掉了。

:%s/^ *//g

刪除每行的所有的前導(dǎo)空格,如下圖

5dff7ac6-9d74-11ee-8b88-92fbcf53809c.png

每一行開頭的所有空格都會(huì)被刪掉。*表示匹配0-任意個(gè)數(shù)量。//表示不用內(nèi)容代替,即刪除的意思

:%s/^/*/g

在文件中的每一行的開始插入*字符,如下圖

5e070598-9d74-11ee-8b88-92fbcf53809c.png

如果想在特定行插入的話,可以改成下面形式

:18,20s/^/*/g 即在18-20行的開頭插入*字符。

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

刪除以數(shù)字開頭的行,如下圖

5e0dc6c6-9d74-11ee-8b88-92fbcf53809c.png

刪除效果,只保留了沒有數(shù)字開頭的后兩行。.*組合表示匹配任意多個(gè)任意字符。比較常用!

:%s/^[a|b|c].*$//g

刪除以a或者b或者c開頭的行,如下圖

5e1c0eac-9d74-11ee-8b88-92fbcf53809c.png

以a,b,c開頭的行被刪除掉。在區(qū)分大小寫的情況下。(set noic設(shè)置區(qū)分大小寫)

:%s/^abc.*$//g

刪除以abc開頭的行,如下圖

5e2b80ee-9d74-11ee-8b88-92fbcf53809c.png

這個(gè)命令只刪除了以abc開頭的行,區(qū)別于第9條命令。

:%s/^(.*) 1$/1/g

將兩行重復(fù)行壓縮成一行,如下圖

5e3d4216-9d74-11ee-8b88-92fbcf53809c.png

命令解讀:從行首(^)開始,匹配任意字符(.*),然后匹配換行符( ),第二行匹配與括號(hào)內(nèi)內(nèi)容相同(1),到行尾($)。替換的內(nèi)容為括號(hào)((.*))內(nèi)的內(nèi)容。

12 :%s/^(.*)(n1)+$/1/g

將多行重復(fù)行壓縮成一行,如下圖

5e47da14-9d74-11ee-8b88-92fbcf53809c.png

1代表紅色括號(hào)的內(nèi)容;如果有2則代表綠色括號(hào)中的內(nèi)容。

13.:%s/(.*):(.*)/2:1/g

交換列表中所有以:分割的字符的順序,如下圖

5e4ef29a-9d74-11ee-8b88-92fbcf53809c.png

以上就是正則表達(dá)式使用的一些例子。可以嘗試其他功能的正則表達(dá)式,比如大小寫替換,查找特定形式的字符等等。

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    234

    瀏覽量

    25262
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    696

    瀏覽量

    22109
  • Gvim
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    2981
  • 正則表達(dá)式
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    3538

原文標(biāo)題:GVIM正則表達(dá)式

文章出處:【微信號(hào):集成電路設(shè)計(jì),微信公眾號(hào):集成電路設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

    什么是正則表達(dá)式?正則表達(dá)式是一種用來描述一定數(shù)量文本的模式。Regex代表Regular Express. 如果您不知道什么是正則表達(dá)式,請(qǐng)看這篇文章:深入淺出之正則表達(dá)式
    發(fā)表于 09-08 18:09 ?9次下載

    精通正則表達(dá)式

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

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

    正則表達(dá)式 一個(gè)正則表達(dá)式是一個(gè)用于文本搜索的文本模式。換句話說,在文本中搜索出現(xiàn)的模式。例如,你可以用正則表達(dá)式搜索網(wǎng)頁中的郵箱地址或超鏈接。 正則表達(dá)式
    發(fā)表于 09-27 14:24 ?0次下載

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

    對(duì)于日常開發(fā)中只接觸IPv4,并沒有深入研究過正則表達(dá)式的開發(fā)者,面對(duì)IPv6和正則表達(dá)式,容易產(chǎn)生畏懼心理,覺得是兩座難以翻越的大山。本文通過一些表格整理對(duì)IPv6的表示方法,以及正則表達(dá)式的特殊符號(hào)進(jìn)行了分類和說明,帶領(lǐng)大家
    的頭像 發(fā)表于 03-30 09:31 ?9069次閱讀
    快速入門IPv6和<b class='flag-5'>正則表達(dá)式</b>

    Python正則表達(dá)式教程之標(biāo)準(zhǔn)庫的完整介紹及使用示例說明

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用
    發(fā)表于 01-23 16:00 ?3次下載
    Python<b class='flag-5'>正則表達(dá)式</b>教程之標(biāo)準(zhǔn)庫的完整<b class='flag-5'>介紹</b>及使用<b class='flag-5'>示例</b>說明

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

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫的完整介紹及使用
    發(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)庫的完整介紹及使用
    發(fā)表于 03-26 09:13 ?10次下載
    Python<b class='flag-5'>正則表達(dá)式</b>指南

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

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

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

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

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

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

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

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

    linux正則表達(dá)式匹配字符串

    是非常重要的。本文將詳細(xì)介紹Linux正則表達(dá)式的基本語法和常見用法,幫助讀者深入了解并靈活運(yùn)用正則表達(dá)式。 第一部分:正則表達(dá)式的基本語法 元字符的使用 在
    的頭像 發(fā)表于 11-23 10:26 ?783次閱讀

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

    gvim正則表達(dá)式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。
    的頭像 發(fā)表于 01-19 16:47 ?1297次閱讀
    线上百家乐官网平玩法| 大发888娱乐场 17| 百家乐官网有免费玩| 百家乐最新产品| 百家乐官网双面数字筹码| 百家乐可以作假吗| 赌博百家乐官网技术| 大发888网页打不开| 24山向方位| 百家乐官网实战技术| 实战百家乐十大取胜原因百分百战胜百家乐不买币不吹牛只你能做到按我说的.百家乐基本规则 | 真人百家乐官网作假视频| 威尼斯人娱乐注册网址| 大家旺百家乐官网的玩法技巧和规则 | 百家乐龙虎台布价格| 百家乐官网赌的是心态吗| 大发888客服电话| 免费下百家乐赌博软件| 申博百家乐官网公式软件| bet365提款| 百家乐时时彩网站| 百家乐官网赌博代理合作| 国际娱乐中心| 百家乐投注方法多不多| 玩百家乐官网澳门皇宫娱乐城| 百家乐破解赌戏玩| 24楼层风水好吗| 太阳城在线娱乐网| 金榜百家乐的玩法技巧和规则| 百家乐官网真人游戏| 百家乐官网博彩平台| 六合彩开奖号码| 百家乐桌布动物| 百家乐庄闲机率| 职业赌百家乐官网技巧| 优博在线娱乐| 威尼斯人娱乐项目| 优博家百家乐娱乐城| 娱乐百家乐官网的玩法技巧和规则 | bet365 金融| 累积式百家乐的玩法技巧和规则|