正則表達式是一個神器,但初學linux時候還有文件名通配這樣的東東。今天就總結一下文件名通配,正則表達式,擴展正則表達式之間有什麼異同。可能寫的不全,求指教。linux
使用方面:git
正則多用來匹配過濾文本內容。正則表達式
文件名通配符則用來匹配文件名較多。vim
支持命令:ide
文件處理,查看cp find ls rm mv touch 等一系列的文件匹配查找命令。(和上面說的是一個意思)工具
正則表達式則用在文本內容處理的各類工具grep,awk,sed,vim末行模式等。spa
匹配功能上正則規矩多,天然能力更強大,因此就這的區別多點。orm
匹配規則上相同點:it
一.字符匹配:class
[:digit:]數字、[:lower:]小寫、[:upper:]大寫、[:alpha:]字母、[:alnum:]字母數字、[:punct:]標點、[:space:]空格 [xdigit]16進制 二者相同。
[^]括號內除外。[]括號內任一字符匹配。[]內的- ,的使用 二者規則也相同。
二. 次數匹配
在正則中支持次數匹配且分爲精確次數和模糊次數,在文件名通配中只支持*。
文件名通配中 ?表示任意單個字符且這個字符會出現一次。 *表示任意字符出現任意次。
正則中 .在表示任意字符,*表示*前面的字符出現任意次。.*表示任意字符出現任意次。?表示前面的字符出現1次或0次,即表示前面的字符無關緊要。?須要轉義。
三. 位置錨定。
正則支持,通配符不支持。
匹配由非特殊字符組成的單詞。正則匹配,文件名通配不支持。
內容分組及引用。正則支持,文件名通配不支持。
由於擴展正則和文件名通配的區別和上面的一致,就(同上)。
擴展正則和正則的區別。
擴展正則中次數匹配中? + {} 不在須要\ 轉義符 。
位置錨定中的單詞總體錨定<>都還須要\轉義符。
內容分組()也不須要\轉義符。
擴展正則中提供了新的匹配規則,或者|。
寫完了。