正規表示式

2021-05-23 12:22:50 字數 2580 閱讀 9425

早就聽說了正規表示式的強大,於是花了一點點時間從網down了幾篇文件看了一下。

剛開始看到正規表示式時,感覺全是一堆稀奇古怪的字元,有點無從下手的感覺,看完了文件後。

仔細一想,不過如此。無賴一直感嘆無用武之地。近日,導師接一專案,要我改**。面對一堆

混亂不堪的**,我無比頭大。到專案要提交的時候,**已經被改得面目全非,由於是多人修改,

所以每個人在除錯的時候都留下了不同的注釋。但提交的**中不能有這些無用的注釋啊。於是乎,

我想到了用正規表示式。

由於**中的無用注釋都是以這樣的形式出現:

//sjdjfjla

// ldjsfpqij

//jsdlfjopw

於是只需要用正規表示式將這樣的**替換即可,經過一番嘗試:

:%s /^/t/.*/n//g

但是上面的**只能在乙個檔案中執行替換,如何把所有的檔案都替換掉呢?

:args *.c //只有一層目錄,如果有子目錄,使用args **/*.c

:argdo %s/^/t/.*/n//ge | update

輸入以上**,即可將這些無用的注釋清理掉,改起來又快又好。這下**看起來好多了。

在此總結一下常用的查詢和替換命令:

n關於查詢和替換

ø簡單替換表示式

替換命令可以在全文中用乙個單詞替換另乙個單詞:

:%s/four/4/g

"%" 範圍字首表示在所有行中執行替換。最後的"g" 標記表示替換行中的所有匹配點。如果僅僅對當前行進行操作,那麼只要去掉%即可

:%s//

顯然,這樣在處理"fourty" 的時候還是會出錯。用"/>" 來解決這個問題:

:%s///4/g

如果你在編碼,你可能只想替換注釋中的"four",而保留**中的。由於這很難指定,可以在替換命令中加乙個"c" 標記,這樣,vim 會在每次替換前提示你:

:%s///4/gc

ø刪除多餘的空格

要刪除這些每行後面多餘的空格,可以執行如下命令:

:%s//s/+$//

命令前面指明範圍是"%",所以這會作用於整個檔案。"substitute" 命令的匹配模式是

"/s/+$"。這表示行末($)前的乙個或者多個(/+)空格(/s)。替換命令的"to" 部分是空的:"//"。這樣就會刪除那些匹配的空白字元。

ø3,匹配重複性模式

星號項"*" 規定在它前面的項可以重複任意次。因此:

/a*匹配"a","aa","aaa",等等。但也匹配"" (空字串),因為零次也包含在內。星號"*" 僅僅應用於那個緊鄰在它前面的項。因此"ab*" 匹配"a","ab","abb","abbb",等等。如要多次重複整個字串,那麼該字串必須被組成乙個項。組成一項的方法就是在它前面加"/(",後面加"/)"。因此這個命令:

//(ab/)*

匹配: "ab","abab","ababab",等等。而且也匹配""。

要避免匹配空字串,使用"/+"。這表示前面一項可以被匹配一次或多次。

/ab/+

匹配"ab","abb","abbb",等等。它不匹配 後面沒有跟隨"b" 的"a"。

要匹配乙個可選項,用"/="。 例如:

/folders/=

匹配"folder" 和"folders"。

ø4,指定重複次數

要匹配某一項的特定次數重複,使用"/" 這樣的形式。其中"n" 和"m" 都是數字。在它前面的那個項將被重複"n" 到"m" 次(|inclusive| 包含"n" 和"m")。例如:

/ab/

匹配"abbb","abbbb" 以及"abbbbb"。

當"n" 省略時,被預設為零。當"m" 省略時,被預設為無限大。當",m" 省略時,就表示重複正好"n" 次。例如:

模式匹配次數

/           0,1,2,3 或4

/           3,4,5,等等

/          0 或1,同/=

/           0 或 更多,同*

/           1 或 更多,同/+

/            3

ø5,多選一匹配

在乙個查詢模式中,"或" 運算子是"/|"。例如:

/foo/|bar

這個命令匹配了"foo" 或"bar"。更多的抉擇可以連在後面:

/one/|two/|three

匹配"one","two" 或"three"。

如要匹配其多次重複,那麼整個抉擇結構須置於"/(" 和"/)" 之間:

//(foo/|bar/)/+

這個命令匹配"foo","foobar","foofoo","barfoobar",等等。

再舉個例子:

/end/(if/|while/|for/)

這個命令匹配"endif","endwhile" 和"endfor"。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...