複製鏈接
請複製以下鏈接發送給好友

通配符

鎖定
通配符是一種特殊語句,主要有星號(*)和問號(?),用來模糊搜索文件。當查找文件夾時,可以使用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字符。 實際上用“*Not?pad”可以對應Notepad\MyNotepad【*可以代表任何字符串;?僅代表單個字符串,但此單字必須存在】;Notep[ao]d可以對應Notepad\Notepod【ao代表a與o裏二選一】,其餘以此類推。
通配符是競價排名廣告的一項高級功能,當我們在廣告創意中使用了這項功能之後,使用不同搜索字詞的用户將看到不同的廣告創意(雖然我們只製作了一個廣告)。這將大大提高我們廣告的相關性和實用性,從而提高廣告的點擊率,同時也大大提高了我們的工作效率
中文名
通配符
外文名
wildcard characters
包    括
星號(*)和問號(?)
作    用
代替一個或多個真正字符
屬    性
特殊語句

通配符類型

通配符是一類鍵盤字符。
當查找文件夾時;當不知道真正字符或者不想鍵入完整名字時,常常使用通配符代替一個或多個真正字符。
星號(*)
可以使用星號代替零個、單個或多個字符。如果正在查找以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通配符必須與LIKE運算符一起使用。
在SQL中,可使用以下通配符:
通配符
描述
%
替代零個或多個字符
_
僅替代一個字符
[charlist]
字符列中的任何單一字符
[^charlist]或者[。charlist]
不在字符列中的任何單一字符
原始的表
(用在例子中的):
Persons表:
Id
LastName
FirstName
Address
City
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%’結果集
Id
LastName
FirstName
Address
City
2
Bush
George
Fifth Avenue
New York
例子 2
接下來,我們希望從“Persons”表中選取居住在包含“lond”的城市裏的人:
我們可以使用下面的SELECT語句
SELECT * FROM PersonsWHERE City LIKE ’%lond%’結果集:
Id
LastName
FirstName
Address
City
1
Adams
John
Oxford Street
London
使用 _ 通配符
例子 1
我們希望從上面的“Persons”表中選取名字的第一個字符之後是“eorge”的人:
我們可以使用下面的SELECT語句:
SELECT * FROM PersonsWHERE FirstName LIKE ’_eorge’結果集:
Id
LastName
FirstName
Address
City
2
Bush
George
Fifth Avenue
New York
例子 2
接下來,我們希望從“Persons”表中選取的這條記錄的姓氏以“C”開頭,然後是一個任意字符,然後是“r",然後是任意字符,然後是“er":
我們可以使用下面的SELECT語句:
SELECT * FROM PersonsWHERE LastName LIKE ’C_r_er’結果集:
Id
LastName
FirstName
Address
City
3
Carter
Thomas
Changan Street
Beijing
使用 [charlist] 通配符
例子 1
我們希望從上面的“Persons”表中選取居住的城市以“A”或“L”或“N”開頭的人:
我們可以使用下面的SELECT語句:
SELECT * FROM PersonsWHERE City LIKE ’[ALN]%’結果集:
Id
LastName
FirstName
Address
City
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]%’結果集:
Id
LastName
FirstName
Address
City
3
Carter
Thomas
Changan Street
Beijing