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

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

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

GVIM正則表達式介紹和使用示例

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

作者|清洬

編輯|清洬

GVIM正則表達式

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

01:正則表達式介紹

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

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

①確認字符串是否匹配了某種模式

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

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

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

02:基本命令

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

/ab 即為搜索字母組合ab

:s 替換命令

:s/正則表達式/替換字符串/選項

03:元字符

. 匹配任意一個字符
[abc] 匹配方括號中的任意一個字符,可以使用-表示字符范圍。如[a-z0-9]匹配小寫字母和0-9數(shù)字
[^abc] 在括號內(nèi)開頭使用^符號,表示匹配除方括號中字符之外的任意字符
d 匹配阿拉伯?dāng)?shù)字,等同于[0-9]
D 匹配阿拉伯?dāng)?shù)字之外的任意字符,等同于[^0-9]
x 匹配十六進制數(shù)字,等同于[0-9A-Fa-f]
X 匹配十六進制以外的任意字符,等同于[^0-9A-Fa-f]
w 匹配單詞字母,等同于[0-9A-Za-z_]
W 匹配單詞字母之外的任意字符,等同于[^0-9A-Za-z_]
匹配字符
s 匹配空白字符,等同于[ ]
S 匹配非空白字符,等同于[^ ]
匹配回車符

04:特殊字符

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

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

* 匹配 0-任意個
+ 匹配 1-任意個
匹配 0-1個
{n,m} 匹配n-m個
{n} 匹配 n個
{n,} 匹配 n-任意個
{,m} 匹配 0-m個

06:表示位置的元字符

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

07:示例

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

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

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

注意使用該命令后,只有第一行發(fā)生了變化。因為只有第一行符合匹配條件[Aa]sic。所以只有第一行被替換成了ASIC。

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

:%s/ +/ /g

使用單個空格替換一個或多個空格。如下圖

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

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

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

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

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

:g/^[ ]*$/d

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

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

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

:g/asic/d

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

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

因為只有第一行有asic,所以第一行被刪掉了。

:%s/^ *//g

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

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

每一行開頭的所有空格都會被刪掉。*表示匹配0-任意個數(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ù)字開頭的后兩行。.*組合表示匹配任意多個任意字符。比較常用!

:%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

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

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

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

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

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

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

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

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

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

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

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

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

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

審核編輯:湯梓紅

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

    關(guān)注

    0

    文章

    233

    瀏覽量

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

    關(guān)注

    5

    文章

    684

    瀏覽量

    22023
  • Gvim
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    2972
  • 正則表達式
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    3491

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

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

收藏 人收藏

    評論

    相關(guān)推薦

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

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

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

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

    深入淺出boost正則表達式

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

    精通正則表達式

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

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

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

    快速入門IPv6和正則表達式

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

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

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

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

    本文介紹了Python對于正則表達式的支持,包括正則表達式基礎(chǔ)以及Python正則表達式標(biāo)準(zhǔn)庫的完整介紹及使用
    發(fā)表于 09-15 08:00 ?0次下載
    Python<b class='flag-5'>正則表達式</b>的學(xué)習(xí)指南

    Python正則表達式指南

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

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

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

    Linux入門之正則表達式

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

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

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

    Python中的正則表達式

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

    linux正則表達式匹配字符串

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

    你還不會gvim正則表達式?一文搞懂!

    gvim正則表達式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。
    的頭像 發(fā)表于 01-19 16:47 ?1192次閱讀