通配符的使用方法
1.通配符的使用方法
通配符是一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。 实际上用“*Not?paOd”可以对应Notpad\MyNotpad【*可以代表任何文字】;Notpad\Notepad【?仅代表单个文字】;Notepad\Notepod【ao代表a与o里二选一】,其余以此类推。
通配符优先级
对于使用通配符模式的各种资源,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 * *
当两个模式之间的唯一差别是字符集合中指定的字符时,将通过逐字比较包含模式的两个字符串来确定优先级。仅在要匹配的字符集包含一些相同字符时才必须考虑这一点。如果在两个集合中没有公共字符,则任一给定的字符串最多只能匹配这两个模式中的一个。
2.泛型类型的子类及通配符如何使用?
(1) 子类及替换原则; (2) 使用extends关键字的通配符; (3) 使用super关键字的通配符; (1) 子类及替换原则 在java语言中,我们通俗讲一个类是另一个类的子类型,是通过使用extends关键字去继承某一个类或者使用implements关键字去实现某些接口。
这样我们在编程时就可以面向接口或基类进行编程,如: Number num1 = new Integer (1); Number num2 = new Double(2。1d); 这个就是所谓的替换原则,替换原则的定义是: Substitution Principle: a variable of a given type may be assigned a value of any subtype of that type, and a method with a parameter of a given type may be invoked with an argument of any subtype of that type。
大概的意思是说某种类型的变量可以被该类型的任何子类所赋值,一个方法中的参数也可以被该参数的任何子类进行调用。 现在我们再来看看泛型中替换原则的适用性: Example2。
1 List listNums = new ArrayList(); nums。 add (10); nums。
add(8。88); 在example2。
1 中,可以看出替换原则被很好地应用在这里,ArrayList是List的子类,我们提供给listNums变量的类型参数为Number,往 listNums中添加元素时,10被封箱为Integer类型,而Integer是Number的子类,第三行的情况类似。 Example2。
2 List intList = new ArrayList(); List numList = intList; //compile error … numList。add(1。
35); // can't do that 根据替换原则,我们会很容易想到,既然Integer是Number的子类,则我们应该可以将List的变量赋给 List的变量,但从实际情况表明,List并不是List的子类。 我们不妨试想想,若果List类型的变量可以成功赋值给List类型的变量,会出现什么情况?我们可能在程序的某个位置添加一个double类型的元素进去numList中,而实质上在numList中其它元素都是Integer 的类型的元素,这样就违背了泛型的初衷了。
有时,我们确实希望将形如List的List对象赋给List的变量,这时就要使用extends关键字的通配符。 (2) 使用extends关键字的通配符 Example2。
3 List intList = new ArrayList(); List numList = intList(); … numList。 add(1。
35); //compile error (can't do that) 从Example2。3看到numList这个变量,我们可以将类型参数为Number及其Number子类的List赋给它。
记住一条规则如果你使用了“? extends T”,一般情况下,你不能往该数据结构中put元素,而你可以做的就是get元素。 如果要往内put元素,就需要使用下面提到的super关键字的通配符。
3.通配符的使用方法.
通配符的使用 在使用文件时,主文件名和扩展名中还可以使用通配符“*”“?”。
其中“*”代表从它所在位置直到“.”(主文件名中为到“.”前,扩展名为“.”后)的所有字符;“?”代表它所在位置的任意字符。 实例: A.?? 表示文件主名为A,扩展名不超过两个字符的文件 ???.com 表示文件名不超过三个字符,扩展名为COM的文件 *.* 表示所有文件 ABC.* 表示文件名为ABC,具有任意扩展名的文件 *.EXE 表示以EXE为扩展名的所有文件 A*.* 表示以字符A开头的所有文件 例如: ABC.txt ABD.com等 A??.* 表示文件主名以A开头且不超过三个字符,具有任意扩展名 的文件 tabs) %x 匹配任何数量的非空格 [range] 匹配任何数量的在[range]中列出的字符 ^ 强制从一行的开始进行匹配 $ 强制匹配到一行的结束 (pattern) 保存匹配的式样到参数%1~%9 ~ 包括其中的字符不会被解释为特殊字符 {val1|val2|val3|。
} 匹配其中列出的任何特殊的串 {^string} 不匹配其中包括的串 使用[range]时,你可以在其中列出需要的字符例如 [abc] 或使用范围 [a-c] 。 为了匹配特殊字符本身,可以使用~将特殊字符括住,例如:~[test~] 将匹配字符串 [test] 而不是作为 [range] 来匹配。
只使用$可以匹配一个空行。 别名中使用参数的例子 我们在解谜过程中向npc提出的问题通常是以: ask npc about here ask npc about rumors ask npc about name 这样三个命令开始的,把他们定义成别名可以节省一些时间,像这样: #al askn {ask %1 about here;ask %1 about here;ask %1 about name} 可如果npc的名字有两个单词,或一堆同名的npc中你要问其中第二个,就需要把别名 中的参数改为%-1,此时执行askn bing 2或askn tian bing就不会出错了。
为了更好的理解参数的作用,试试执行下面的命令: #al tt test1 %1 test2 %2 test3 %-1 test4 %-2 看看执行{tt a1 a2 a3 a4 a5}的结果,一切都清楚了吧? 表达式 当执行运算时,如果所有参数均为数字,则执行数学运算,否则执行字符串操作。以 下是一些常用的表达式(v1和v2代表变量或另外的表达式): v1+v2 如果v1或v2不是数字,则执行字符串相加 v1-v2 从v1中减去v2 v1*v2 相乘 v1/v2 v1除v2,结果不含小数 v1\v2 取模 v1&v2 逻辑运算and v1 and v2 同上 v1 | v2 逻辑运算or v1 or v2 同上 v1 xor v2 逻辑运算xor v1 = v2 如果v1等于v2返回真 v1 > v2 如果v1大于v2返回真 v1 = v2 如果v1大于等于v2返回真 v1 v2 如果v1不等于v2返回真 v1 != v2 同上 v1 =~ v2 如果表达式v1中的pattern包含v2,返回真 v1 ~= v2 同上 -v1 返回v1的负值 !v1 逻辑运算非 命令: number] Syntax:牋?#number command 这个命令向MUD重复发送number次命令,number必须是一个常数,如果要使用变量,请 使用loop命令。
当前已经重复的计数保存在系统变量%repeatnum中。 实例: #4 fight bing %i 命令将被解释成{fight bing 1;fight bing 2;。
;fight bing 4}发往MUD10 abort Syntax:牋?#AB 停止分析处理当前的命令行中#ab以后的部分 实例: get all corpse;#ABORT;split 在这个例子中,split将被忽略 action Syntax:牋?#AC pattern command [classname] Related:牋?#TRIGGER #T+ #T- #IGNORE 这是zMUD中最有用的特性之一。当从MUD中收到一条匹配的文本时,预先定义的命令将 被执行。
这条命令的第一个参数是被匹配的文本,如果文本中包含空格,你需要将它 用括号{}括起来。pattern中能够包含特殊的pattern matching symbols 和通配符。
第二个参数是将要被执行的命令,超过一个单词的命令也需要使用括号{}。第三个参 数用于给不同的触发动作命名分类,便于管理。
高级的触发设置必须使用参数 (Preferences)对话框,在对话框中,你可以决定触发的动作是紧跟在匹配的文本之 后还是在新的一行中执行。 一个简单的例子: #AC {你买下一件藤甲} {wear jia} 这样,无论何时只要你买了藤甲,立刻可以自动穿上。
自动登录的例子: #AC {^您的英文名字:} {river} #AC {^请输入相应密码:} {12345} 然后在参数对话框中关闭 Trigger on Newline 设置并且打开 Trigger on Prompt 这 样名字和密码将紧接着提示行输入而不会等待换行。注意,字符 ^ 将强制从一行的头 部开始匹配。
触发中的参数 #AC {^You get (%d) coins} {chat I get %1coin } rich 当你看到一行“You get [number] coins”时,其中的数值将被存放在变量%1中,其 后执行的命令可以使用这个数值。在这个例子中用到了类(class)名rich,这样你就 能够使用t+和t-命令来打开或关闭这个触发。
add Syntax:牋?#AD variable amount 这个例子允许你做一个简单的算术计算。amount可以是数值或变量。
如果要做减法, 可以使用负值。复杂一些的算术计算,请使用 #math 命令。
实例: #AD moves 1 给变量@moves加一 #ACTION {You get (%d) coins} {#AD gold %1} 当捡到钱时,把捡钱的数量加到 @gold 变量中 alarm Syntax:牋?#ALA timepattern command Related:牋?#TRIGGER 建立一个基于时间的触发,而不是根据从MUD中获得的信息触发。timepattern可以是 特定的时间或包括通配符。
如果在minus前加上(-),则表示连线时间而不。
4.通配符的应用举例
使用 % 通配符
例子 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
5.请问什么是通配符,如何使用
什么是通配符?通配符包括星号“*”和问号“?”,星号表示匹配的数量不受限制,而后者的匹配字符数则受到限制。这个技巧主要用于英文搜索中,如输入““computer*”,就可以找到“computer、computers、computerised、computerized”等单词,而输入“comp?ter”,则只能找到“computer、compater、competer”等单词。
使用一个通配符包括所有传输协议使用特定的 Web 地址,请使用以下步骤:
单击开始指向设置、控制面板,单击然后双击 Internet。
单击安全选项卡,单击受信任的站点区域或在区域框中的受限的站点区域,然后单击添加站点 (或网站)。
在“向区域添加此 Web 站点“框中键入星号代替相应的传输协议。 例如,您可以键入“*: / / “(不带引号)。
单击确定,单击确定,然后关闭控制面板。
将网站添加到受限的站点区域或 Internet Explorer 中的受信任站点区域,并使用一个通配符包括特定的域中的所有该域,请使用以下步骤:
单击开始指向设置、控制面板,单击然后双击 Internet。
单击安全选项卡,单击受信任的站点区域或在区域框中的受限的站点区域,然后单击添加网站。
特定域在“向区域添加此网站“框中,请键入域的位置的星号。 是