<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

作者|清洬

編輯|清洬

GVIM正則表達式

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

01:正則表達式介紹

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

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

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

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

③把字符串中匹配的內容替換成指定的內容

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

02:基本命令

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

/ab 即為搜索字母組合ab

:s 替換命令

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

03:元字符

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

04:特殊字符

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

05:表示數量的元字符

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

06:表示位置的元字符

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

07:示例

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

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

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

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

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

:%s/ +/ /g

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

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

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

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

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

global命令在[range]指定的文本范圍內(缺省時為整個文件)查找{pattern},然后匹配到的行執行命令{command},如果希望對沒匹配上的執行命令,則使用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

刪除每行的所有的前導空格,如下圖

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

每一行開頭的所有空格都會被刪掉。*表示匹配0-任意個數量。//表示不用內容代替,即刪除的意思

:%s/^/*/g

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

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

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

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

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

刪除以數字開頭的行,如下圖

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

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

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

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

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

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

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

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

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

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

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

將兩行重復行壓縮成一行,如下圖

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

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

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

將多行重復行壓縮成一行,如下圖

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

1代表紅色括號的內容;如果有2則代表綠色括號中的內容。

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

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

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 字符
    +關注

    關注

    0

    文章

    229

    瀏覽量

    24962
  • 命令
    +關注

    關注

    5

    文章

    638

    瀏覽量

    21858
  • Gvim
    +關注

    關注

    0

    文章

    8

    瀏覽量

    2911
  • 正則表達式
    +關注

    關注

    0

    文章

    25

    瀏覽量

    3439

原文標題:GVIM正則表達式

文章出處:【微信號:集成電路設計,微信公眾號:集成電路設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    shell正則表達式學習

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

    正則表達式在Vivado約束文件中的應用

    文件中匹配目標的時候,在可行的情況下更傾向于使用正則表達式。本文就介紹一下我常使用的正則表達式和一些在Vivado中應用的特殊之處,同時也有個別自己尚未解決的問題。
    發表于 01-26 07:03

    初識 Python 正則表達式

    正則表達式是一個特殊的字符序列,用于判斷一個字符串是否與我們所設定的字符序列是否匹配,也就是說檢查一個字符串是否與某種模式匹配。Python 自 1.5 版本起增加了re 模塊,它提供 Perl
    發表于 03-17 16:44

    深入淺出boost正則表達式

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

    關于java正則表達式的用法詳解

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

    Python正則表達式教程之標準庫的完整介紹及使用示例說明

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

    Python正則表達式的學習指南

    本文介紹了Python對于正則表達式的支持,包括正則表達式基礎以及Python正則表達式標準庫的完整介紹及使用
    發表于 09-15 08:00 ?0次下載
    Python<b class='flag-5'>正則表達式</b>的學習指南

    Python正則表達式指南

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

    C語言如何使用正則表達式

    C語言的正則表達式規則,特此跟大家分享。
    的頭像 發表于 03-16 08:41 ?4362次閱讀

    python正則表達式中的常用函數

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

    Linux入門之正則表達式

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

    Python中的正則表達式

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

    linux正則表達式匹配字符串

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

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

    gvim正則表達式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。
    的頭像 發表于 01-19 16:47 ?407次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>