3 2 4 正規表示式的擴充套件

2022-08-12 04:54:10 字數 1240 閱讀 8013

很多程式提供正規表示式語法擴充套件。這類擴充套件大多採取反斜槓加乙個字元,以形成新的運算子。類似 posix bre 裡 \(   \)  與  \ 的反斜槓。

最常見的擴充套件為 \< 與 \> 運算子,分別匹配 「單詞 word」的開頭與結尾。單詞是由字母、數字、及下劃線組成的。我們稱這類字元為單詞組成。

單詞的開頭要麼出現在行的起始處,要麼出現在第乙個後面緊跟乙個非單詞組成字元的單詞組成字元。同樣的,單詞的結尾要麼出現在一行的結尾處,要麼出現在乙個非單詞組成字元之前的而最後乙個單詞組成字元。

實際上,單詞的匹配其實相當直接易懂。正規表示式 \則匹配於第二個字串,第乙個則不匹配。需要特別注意的一點是:在 \的表示式下,兩個字串都不匹配。

雖然 posix 標準化的只有 ex 編輯器,但在所有商用 unix 系統上,ed、ex 以及 vi 編輯器都支援單詞匹配,而且幾乎已是標準配備。 gnu/linux 與 bsd 系統上附帶的轉殖程式也支援單詞匹配,還有 emacs、vim 與 vile 也是。除此之外,通常 grep 與 sed 也會支援。

額外的 gnu 正規表示式運算子

運算子含義

\w匹配任何單詞組成字元,等同於[[:alnum:]_]

\w匹配任何非單詞組成字元,等同於[^[:alnum:]_]

\<   \>

匹配單詞的起始與結尾

\b匹配單詞的起始或結尾處所找到的空字串,這是\《與\>的結合

\b匹配兩個單詞組成字元之間的空字串

\'   \`

分別匹配 emacs 緩衝區的開始與結尾。gnu程式通常將它們視為與^及$同義

雖然 posix 明白表示了 nul 字元無須是可匹配的,但 gnu 程式則無須此限制。若 nul 字元出現在輸入資料裡,則它可以通過 . mata 字元或方括號表示式來匹配。

\b代表字與字中間那個看不見的東西,如

here is a word

那麼,這句中有好幾個\b, 每個單詞的前後都有乙個\b.

所以你用 \bhere\b 可以匹配上面這個here,但如果here 不是乙個單詞,而是乙個單詞的一部分,如 adheread, 這樣的話,用here 可以匹配,用\bhere\b就不能區配了,因為ad後面沒有\b. 所以 adhere 中的here 不會被匹配。

總結: \b 就是用在你匹配整個單詞的時候。 如果不是整個單詞就不匹配。 你想匹配 i 的話,你知道,很多單詞裡都有i的,但我只想匹配i,就是「我」,這個時候用 \bi\b

\b就是反過來,代表非字間。 類似\d代表數字, \d代表非數字。

擴充套件正規表示式

事實上,一般實驗者只需要熟悉基礎的正規表示式就足夠了。不過有時候為了簡化命令操作,了解一些使用範圍更廣的擴充套件表示式,會更加方便。正規表示法 grep v regular express.txt grep v 需要使用到管線命令來搜尋兩次!那麼如果使用延伸型的正規表示法,我們可以簡化為 egrep...

擴充套件正規表示式

使用egrep或者grep e 一般都是使用egrp 語法 擴充套件正規表示式 re字元 意義與範例 重複乙個或者乙個以上的前乙個字元 egrep n go d regular express.txt 零個或者乙個前乙個字元 egrep n go?d regular express.txt or的意...

擴充套件正規表示式

擴充套件正規表示式 1.顯示三個使用者root,cisco,ccnp的uid和預設shell 普通正規表示式與擴充套件正規表示式 17 27 08 root localhost data cat etc passwd grep root b ccnp b cisco b cut d f1,3,7 r...