通配符是系统命令使用,一般用来匹配文件名或者什么的用在系统命令中。而正则表达式是操作字符串,以行尾单位来匹配字符串使用的。
注意:*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用*来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。
目标 |
表达式 |
示例 |
---|---|---|
与任何单个字符匹配(换行符除外)。 |
. |
a.o 匹配“around”中的“aro”及“about”中的“abo”,但不匹配“across”中的“acro”。 |
零次或多次匹配前面的表达式(前面的字符) (匹配尽可能多的字符)(贪婪匹配) |
* |
a*r 匹配 "rack" 中的 "r", "ark" 中的 "ar" 和 "aardvark" 中的 "aar" ( 零个a, 一个a 2个a ) |
零次或多次匹配任何字符 (匹配尽可能多的字符)(贪婪匹配) |
.* |
c.*e 匹配“racket”中的“cke”,“comment”中的“comme”,和“code”中的“code”。 e.*e匹配“enterprise”中的“enterprisse”和“erprise” 但不匹配“ente” |
一次或多次匹配前面的表达式 (匹配尽可能多的字符) (贪婪匹配) |
+ |
e+e 匹配“feeder”中的“ee”。 |
一次或多次匹配任意字符 (匹配尽可能多的字符) (贪婪匹配) |
.+ |
e.+e 匹配字符串"feeder"中的"eede"和“ede”,但是不匹配"ee" f.+e匹配“feeder”中的“feede”,不是“fee” |
最少、零个或更多个 (匹配尽可能少的字符) (非贪婪匹配) |
@ |
e.@e匹配“enterprise”中的“ente”和“erprise” 但不匹配完整的单词“enterprisse” |
最少、一个或更多个 (匹配尽可能少的字符) (非贪婪匹配) |
# | f.#e匹配“feeder”中的“fee”,不是“feede” |
例子:
e.*e 匹配字符串"feeder"中的"eede"和“ede”,
e.@e 匹配字符串"feeder"中的"ee"和“ede”,