加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

通配符和正则表达式的区别

发布时间:2020-12-14 00:41:55 所属栏目:百科 来源:网络整理
导读:而通配符多用在文件名上,比如查找find,ls,cp,等等 下表是鸟哥给的Linux下的通配符 符? ?热? * ?f用字元,代表 0 ??或多??字元(或?底郑? ? ?f用字元,代表『一定有』一??字母 # ?]解,?@??最常被使用在 script ??中,??檎f明! / 跳?符?,??『特殊字元或

而通配符多用在文件名上,比如查找find,ls,cp,等等

下表是鸟哥给的Linux下的通配符

符? ?热?
* ?f用字元,代表 0 ??或多??字元(或?底郑?
? ?f用字元,代表『一定有』一??字母
# ?]解,?@??最常被使用在 script ??中,??檎f明!
/ 跳?符?,??『特殊字元或?f用字元』?原成一般字元
| 分隔???管?命令的界定;
; ?B?m性命令的界定(注意!?c管?命令?K不相同)
~ 使用者的家目?
$ 亦即是??抵?前需要加的??等〈?值
& ?⒅噶钭?成背景下工作
! ???算意?x上的『非』 not 的意思!
/ 路?椒指舻姆??
>,>> ?出??向,分?e是『取代』?c『累加』
' ?我??,不具有??抵?Q的功能
" 具有??抵?Q的功能!
` ` ???『 ` 』中?g?榭梢韵?绦械闹噶睿?
( ) 在中?g?樽? shell 的起始?c?Y束
[ ] 在中?g?樽衷?的?M合
{ } 在中?g?槊?令?^?K的?M合!

下表是鸟哥总结的正则表达式的字符

RE 字符 意?x?c?例
^word 待搜?さ淖执?(word)在行首!
?例:grep -n '^#' regular_express.txt
搜?ば惺?? # ?_始的那一行!
word$ 待搜?さ淖执?(word)在行尾!
?例:grep -n '!$' regular_express.txt
?⑿形?? ! 的那一行列印出?恚?
. 代表『任意一??』字符,一定是一??任意字符!
?例:grep -n 'e.e' regular_express.txt
搜?さ淖执?可以是 (eve) (eae) (eee) (e e), 但不能?H有 (ee) !亦即 e ?c e 中?g『一定』?H有一??字元,而空白字元也是字元!
/ 跳?字符,?⑻厥夥??的特殊意?x去除!
?例:grep -n /' regular_express.txt
搜?ず?有?我?? ' 的那一行!
* 重?}零??或多??的前一?? RE 字符
?例:grep -n 'ess*' regular_express.txt
找出含有 (es) (ess) (esss) 等等的字串,注意,因?? * 可以是 0 ??,所以 es 也是符合??搜?ぷ执?。另外,因?? * ?橹匮}『前一?? RE 字符』的符?, 因此,在 * 之前必?要?o接著一?? RE 字符喔!例如任意字元?t?? 『.*』 !
/{n,m/} ?B?m n 到 m ??的『前一?? RE 字符』
若?? /{n/} ?t是?B?m n ??的前一?? RE 字符,
若是 /{n,/} ?t是?B?m n ??以上的前一?? RE 字符!
?例:grep -n 'Go/{2,3/}g' regular_express.txt
在 g ?c g 之?g有 2 ??到 3 ??的 o 存在的字串,亦即 (goog)(gooog)
[] 字元集合的 RE 特殊字符的符?
[list]
?例:grep -n 'g[ld]' regular_express.txt
搜?ず?有 (gl) 或 (gd) 的那一行~
需要特?e留意的是,在 [] ??中『?代表一??待搜?さ淖衷?』,
例如: a[afl]y 代表搜?さ淖执?可以是 aay,afy,aly
亦即 [afl] 代表 a 或 f 或 l 的意思!


[ch1-ch2]
?例:grep -n '[0-9]' regular_express.txt
搜?ず?有任意?底值哪且恍校⌒杼?e留意,在字元集合 [] 中的?p? - 是有特殊意?x的,他代表???字元之?g的所有?B?m字元!但?@???B?m?c否?c ASCII ??a有?P, 因此,您的??a需要?O定正?_(在 bash ??中,需要?_定 LANG ?c LANGUAGE 的??凳欠裾??_!) 例如所有大??字元?t?? [A-Z]

[^]
?例:grep -n 'oo[^t]' regular_express.txt
搜?さ淖执?可以是 (oog) (ood) 但不能是 (oot) ,那?? ^ 在 [] ??r, 代表的意?x是『反向?x?瘛坏囊馑肌?例如,我不要大??字元,?t?? [^A-Z] ~ 但是,需要特?e注意的是,如果以 grep -n [^A-Z] regular_express.txt ?硭?ぃ? ?s?l?F??n案?鹊乃?有行都被列出,?槭颤N?因?檫@?? [^A-Z] 是『非大??字元』的意思, 因?槊恳恍芯?有非大??字元,例如第一行的 "Open Source" 就有 p,e,n,o.... 等等的小??字元, 以及?p引? (") 等字元,所以??然符合 [^A-Z] 的搜?ぃ?

基本上解释就是通配符是系统命令使用,一般用来匹配文件名或者什么的用在系统命令中。而正则表达式是操作字符串,以行尾单位来匹配字符串使用的。

还有一点需要注意的是:*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个字符,不能独立使用的。比如通配符可以用*来匹配任意字符,而正则表达式不行,他只匹配任意长度的前面的字符。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读