通配符

通配符

通配符是一種特殊語句,主要有星號(*)和問號(?),用來模糊搜尋檔案。當查找資料夾時,可以使用它來代替一個或多個真正字元;當不知道真正字元或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字元。 實際上用“*Not?pad”可以對應Notepad\MyNotepad【*可以代表任何字元串;?僅代表單個字元串,但此單字必須存在】;Notep[ao]d可以對應Notepad\Notepod【ao代表a與o里二選一】,其餘以此類推。

通配符是競價排名廣告的一項高級功能,當我們在廣告創意中使用了這項功能之後,使用不同搜尋字詞的用戶將看到不同的廣告創意(雖然我們只製作了一個廣告)。這將大大提高我們廣告的相關性和實用性,從而提高廣告的點擊率,同時也大大提高了我們的工作效率。

基本介紹

  • 中文名:通配符
  • 包括:星號(*)和問號(?)
  • 作用:代替一個或多個真正字元
  • 屬性:特殊語句
類型,使用模式,套用舉例,

類型

通配符是一類鍵盤字元
當查找資料夾時;當不知道真正字元或者不想鍵入完整名字時,常常使用通配符代替一個或多個真正字元。
星號(*)
可以使用星號代替零個、單個或多個字元。如果正在查找以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”等單詞。

使用模式

通配符優先權
對於使用通配符模式的各種資源,Tivoli Access Manager for Operating Systems 必須確定將套用何種通配符模式。例如,假設有兩種模式:
/usr/local/*.log
/usr/local/user1/*.log
字元串 /usr/local/user1/x.log 與這兩種模式都匹配。
為了解決這種模稜兩可的情況,套用了優先權規則。模式越具體,其優先權也越高。根據這種原則,/usr/local/user1/x.log 在與 /usr/local/*.log 模式相匹配之前先與 /usr/local/user1/*.log 模式相匹配。由於找到一個匹配項,任何可套用於匹配此模式的對象的策略都將適用。
下表顯示了通配符元素的優先權。表中較高位置的元素優先於表中較低位置的元素。
表:通配符元素優先權規則
優先權 元素 示例
1 精確字元 a, \*, \\
2 字元範圍 [Aa], [[:digit:]]
3 任意字元 ?
4 重複的精確字元 a+
5 重複的字元範圍 [Aa]+, [[:digit:]]+
6 重複的任意字元 ?+
7 任意字元串 *
根據資源的種類,將通過從開始到結束(或者相反方向)逐個元素比較模式來確定優先權。匹配檔案名稱稱的模式是從開始比較到結束。匹配主機名稱的模式是從結束比較到開始。
除了認為相同的兩種模式之外,將認為較長的模式比較短的模式更具體,除非較長的字元串是由於星號(*)而較長。
通配符優先權的示例
表 4 顯示了按優先權從最高到最低排列的檔案名稱和主機名通配符模式。
表 4. 通配符模式優先權示例
優先權 檔案名稱稱模式 主機名稱模式
1 log/0[0-9]/error
2 log/0?/error
3 log/0*/error
4 log/[0-9]+/error.1
5 log/*/error.1
6 log*/error.1
7 log*/error
8 log*/error* *
9 log*
10 * *
當兩個模式之間的唯一差別是字元集合中指定的字元時,將通過逐字比較包含模式的兩個字元串來確定優先權。僅在要匹配的字元集包含一些相同字元時才必須考慮這一點。如果在兩個集合中沒有公共字元,則任一給定的字元串最多只能匹配這兩個模式中的一個。
路由配置中的通配符
路由器的配置中,經常出現通配符。和子網掩碼一樣,都是以“0”或“1”表示,不過與子網掩碼所表示的意思卻不一樣。
子網掩碼所表示的是IP的網路位和主機位,而通配符則表示與IP是否匹配。
通配符同樣是32位,和IP位址一一對應,“0”位代表精確匹配,而“1“位代表不許匹配。例如路由器EIGRP的配置中:
RouterA(config)#router eigrp 100
RouterA(config-router)#network 10.0.0.0 0.0.0.255
RouterA(config-router)#network 192.168.1.0 0.0.0.255
10.0.0.0 0.0.0.255說明只要接口的IP位址是以“10”開頭就參與EIGRP進程。同理的,192.168.1.0 0.0.0.255說明只要IP是以192.168.1開頭的IP就符合。
SQL 通配符
在搜尋資料庫中的數據時,SQL 通配符可以替代一個或多個字元。
SQL 通配符必須與 LIKE 運算符一起使用。
在 SQL 中,可使用以下通配符:
通配符描述
%
替代零個或多個字元
_
僅替代一個字元
[charlist]
字元列中的任何單一字元
[^charlist]
或者
[!charlist]
不在字元列中的任何單一字元
原始的表
(用在例子中的):
Persons 表:
IdLastNameFirstNameAddressCity
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
3
Carter
Thomas
Changan Street
Beijing

套用舉例

使用 % 通配符
例子 1
現在,我們希望從上面的 "Persons" 表中選取居住在以 "Ne" 開始的城市裡的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE 'Ne%'結果集
IdLastNameFirstNameAddressCity
2
Bush
George
Fifth Avenue
New York
例子 2
接下來,我們希望從 "Persons" 表中選取居住在包含 "lond" 的城市裡的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE '%lond%'結果集
IdLastNameFirstNameAddressCity
1
Adams
John
Oxford Street
London
使用 _ 通配符
例子 1
現在,我們希望從上面的 "Persons" 表中選取名字的第一個字元之後是 "eorge" 的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE FirstName LIKE '_eorge'結果集
IdLastNameFirstNameAddressCity
2
Bush
George
Fifth Avenue
New York
例子 2
接下來,我們希望從 "Persons" 表中選取的這條記錄的姓氏以 "C" 開頭,然後是一個任意字元,然後是 "r",然後是任意字元,然後是 "er":
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE LastName LIKE 'C_r_er'結果集
IdLastNameFirstNameAddressCity
3
Carter
Thomas
Changan Street
Beijing
使用 [charlist] 通配符
例子 1
現在,我們希望從上面的 "Persons" 表中選取居住的城市以 "A" 或 "L" 或 "N" 開頭的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE '[ALN]%'結果集
IdLastNameFirstNameAddressCity
1
Adams
John
Oxford Street
London
2
Bush
George
Fifth Avenue
New York
例子 2
現在,我們希望從上面的 "Persons" 表中選取居住的城市不以 "A" 或 "L" 或 "N" 開頭的人:
我們可以使用下面的 SELECT 語句:
SELECT * FROM PersonsWHERE City LIKE '[!ALN]%'結果集:
IdLastNameFirstNameAddressCity
3
Carter
Thomas
Changan Street
Beijing

相關詞條

熱門詞條

聯絡我們