萬用字元和正規表示式的區別

2021-07-30 15:46:29 字數 2084 閱讀 5994

一概念

1.萬用字元:英文wildcard,

萬用字元是一種特殊語句,主要有星號(*)和問號(?),用來模糊搜尋檔案。當查詢檔案夾時,可以使用它來代替乙個或多個真正

字元。

2.正規表示式

,又稱規則表示式

。(英語:

regular expression,在**中常簡寫為regex、regexp或re),電腦科學的乙個概念。正則表通常被用來檢索、替換那些符合某個模式(規則)的文字。

萬用字元與正規表示式很容易混淆,首先要明白二者是不同的,個人感覺萬用字元用於

linux

的shell命令(如檔名相關操作)中,而正規表示式用於文字內容中的字串搜尋和替換等。萬用字元是linux系統本身就支援的,而正規表示式用於vim編輯器或awk程式,這些文字處理工具正是由於支援正規表示式才變得強大。

二型別

1.萬用字元

星號(*)

可以使用星號代替0個或多個字元。如果正在查詢以aew開頭的乙個檔案,但不記得檔名其餘部分,可以輸入aew*,查詢以aew開頭的所有檔案型別的檔案,如aewt.txt、aewu.exe、aewi.dll等。要縮小範圍可以輸入aew*.txt,查詢以aew開頭的所有檔案型別並.txt為副檔名的檔案如aewip.txt、aewdf.txt。

問號(?)

可以使用問號代替乙個字元。如果輸入love?,查詢以love開頭的乙個字元結尾檔案型別的檔案,如lovey、lovei等。要縮小範圍可以輸入love?.doc,查詢以love開頭的乙個字元結尾檔案型別並.doc為副檔名的檔案如lovey.doc、loveh.doc。

萬用字元包括星號「*」和問號「?」

星號表示匹配的數量不受限制,而後者的匹配字元數則受到限制。這個技巧主要用於英文搜尋中,如輸入「「computer*」,就可以找到「computer、computers、computerised、computerized」等單詞,而輸入「comp?ter」,則只能找到「computer、compater、competer」等單詞。  

2.正規表示式

元字元作用

*前乙個字元匹配0次或任意多次

.匹配除了換行符以外任意乙個字元

^匹配行首。例如:^helloworld會匹配以helloworld開頭的行

$匹配行尾。例如:helloworld$會匹配以helloworld結尾的行

匹配中括號裡的任意指定的乙個字元,但只匹配乙個字元

[^]匹配除中括號以外的任意乙個字元

\轉義符,取消特殊含義

表示其前面的字元恰好出現n次

表示其前面的字元出現不小於n次

表示其前面的字元至少出現n次,最多出現m次

三.舉例

1.正規表示式

^   匹配行首

$   匹配行尾

.   匹配任意字元

*   匹配*之前的字元0次或者多次

ls | grep 「^h.n」

匹配的是以h開頭的第二個字元為任意字元,第三個字元為n的所有檔案

ls | grep "^h.n*"

匹配的是以h開頭的第二個字元為任意字元,第三個字元為n的0次和2次

因為,hjkkk這個檔案的第三個字元為k不為n,*匹配的時候將n匹配0次的時候也就是第三個字元不為n也將之匹配並輸出,至於hrnkkk和hungss第三個字元都出現一次,所有grep順利將其匹配輸出

2.萬用字元

?代表匹配任意單個字元

* 代表匹配任意字元的組合也也可以匹配單個字元

特別注意的是*在正規表示式中個萬用字元中使用的不同

正規表示式和萬用字元的區別

正規表示式和萬用字元有許多相似的地方,但它們作用 用法 格式有許多差別。符號 正規表示式 萬用字元 匹配前面符號任意的字元 匹配零個或多個字元 centered 匹配任何單個字元 a z 包含大小寫 不包含大小寫 任意長度字元 以點號開頭的任意字元 轉義 行首 行尾 當前使用者家目錄 任意單一字元 ...

正規表示式 和 萬用字元

正規表示式 正規表示式主要是用來描述乙個句法規則的模式。其實說的通俗一點,就是利用字元和元字元的組合,對一些符合既定句法的模式進行模糊匹配。它的主要功能是文字查詢和字串操作。正規表示式的基本元素包括普通字元和元字元,在linux shell裡面,常用的正規表示式元字符集為 s 每乙個元字元都有自己在...

萬用字元和正規表示式

1.like操作符 2.百分號萬用字元 在搜尋串中,表示任何字元出現的任意次數。不能匹配null,如like jet 表示以jet開頭的後面不管多少字元的匹配。如果區分大小寫查詢,使用binary select from test where binary name test 3.下劃線萬用字元 下...