Explain 1:
1、正則表達式是用來匹配字符串的,這個就不解釋了
2、通配符是用來通配的,也就是shell在做Pathname Expansion時用到的
Explain 2:
通配符,說白了一般只用於文件名匹配, 它是由shell解析的。所謂的系統level的概念非常含糊,什么是系統level的?我們知道shell是一個命令解釋器,它是內核的外殼,用於完成 操作系統使用者與內核的溝通,因此,通配符實際上就是一個shell解釋器去解析的符號,它的特殊涵義是由shell這個命令解釋器賦予的。通配符的英文 名是wildcard,就是萬用牌的意思,它相當簡單,一般來說,*nix系統上面的shell大多將三個特殊符號當作通配符,它們是 * ? [...], 其中 * 表示匹配任意長度的任意字符; ? 表示匹配一個任意字符, 而[...]則表示匹配括號中列出的字符中的任意一個。
其次。什么是正則表達式(regular expression, 縮寫是regex.)?從簡單的角度去理解,你可以把正則表達式看成是一種字符串匹配模式標准。這里最重要的就是,它本身,只是一種業界流行的標准,或者 說,它是相當於對字符串匹配模式的一種規定。這種規定是隨着相關的工具軟件的發展而自稱體系的“不成文規矩”。
-- 舉個例子好了。假設首先有一種工具軟件能夠根據“模式(pattern)”搜索字符串,這個工具非常流行,以至於后續的工具軟件都效仿那個工具軟件定義的模式規則來匹配字符串 -- 慢慢的就形成標准,而且相對來說是一種不成文的規矩.
所以,正則表達式是什么? -- 它是一種對字符串匹配模式的描述和規定 -- 並且是一種標准。而不同的工具程序,也就是egrep、sed、awk這樣的程序,以各種程度來支持這種字符串搜索模式,它們就是標准的實現,你可以在這 種軟件中使用正則表達式這種“匹配模式標准”。 -- 明白?
所以,在什么地方使用通配符?答案是只要是shell命令行或者shell腳本中,你都可以使用通配符;
在什么地方使用正則表達式?當你使用能夠支持正則表達式的工具軟件進行字符串處理時你就可以使用正則表達式。你還可以在支持正則表達式的語言中使用正則表 達式,比如perl, java... C++中也有專門用於支持正則表達式的庫。正則表達式總是和“使用什么工具軟件或者語言”相關。相對來說,不同的工具和語言對正則表達式的支持程度不 同,*nix里面將這些工具軟件的對正則表達式的支持分類,因此也就有了“基礎正則表達式”和“擴展正則表達式”。
不同的工具對正則表達式的支持,其實有些許的微妙不同;但是總體來說,使用正則還是基本按照標准來的。這些不同的工具支持程度,被稱之為“正則流派”。而 工具軟件中支持這種匹配模式的那部分代碼,稱之為“正則引擎”。由於perl對正則表達式的支持非常到位,其正則引擎也比較優秀,因此perl語言算是正 則的一大流派,目前大部分對正則的支持都或多或少參考了perl語言中的標准。
1、正則表達式是用來匹配字符串的,這個就不解釋了
2、通配符是用來通配的,也就是shell在做Pathname Expansion時用到的
Explain 2:
通配符,說白了一般只用於文件名匹配, 它是由shell解析的。所謂的系統level的概念非常含糊,什么是系統level的?我們知道shell是一個命令解釋器,它是內核的外殼,用於完成 操作系統使用者與內核的溝通,因此,通配符實際上就是一個shell解釋器去解析的符號,它的特殊涵義是由shell這個命令解釋器賦予的。通配符的英文 名是wildcard,就是萬用牌的意思,它相當簡單,一般來說,*nix系統上面的shell大多將三個特殊符號當作通配符,它們是 * ? [...], 其中 * 表示匹配任意長度的任意字符; ? 表示匹配一個任意字符, 而[...]則表示匹配括號中列出的字符中的任意一個。
其次。什么是正則表達式(regular expression, 縮寫是regex.)?從簡單的角度去理解,你可以把正則表達式看成是一種字符串匹配模式標准。這里最重要的就是,它本身,只是一種業界流行的標准,或者 說,它是相當於對字符串匹配模式的一種規定。這種規定是隨着相關的工具軟件的發展而自稱體系的“不成文規矩”。
-- 舉個例子好了。假設首先有一種工具軟件能夠根據“模式(pattern)”搜索字符串,這個工具非常流行,以至於后續的工具軟件都效仿那個工具軟件定義的模式規則來匹配字符串 -- 慢慢的就形成標准,而且相對來說是一種不成文的規矩.
所以,正則表達式是什么? -- 它是一種對字符串匹配模式的描述和規定 -- 並且是一種標准。而不同的工具程序,也就是egrep、sed、awk這樣的程序,以各種程度來支持這種字符串搜索模式,它們就是標准的實現,你可以在這 種軟件中使用正則表達式這種“匹配模式標准”。 -- 明白?
所以,在什么地方使用通配符?答案是只要是shell命令行或者shell腳本中,你都可以使用通配符;
在什么地方使用正則表達式?當你使用能夠支持正則表達式的工具軟件進行字符串處理時你就可以使用正則表達式。你還可以在支持正則表達式的語言中使用正則表 達式,比如perl, java... C++中也有專門用於支持正則表達式的庫。正則表達式總是和“使用什么工具軟件或者語言”相關。相對來說,不同的工具和語言對正則表達式的支持程度不 同,*nix里面將這些工具軟件的對正則表達式的支持分類,因此也就有了“基礎正則表達式”和“擴展正則表達式”。
不同的工具對正則表達式的支持,其實有些許的微妙不同;但是總體來說,使用正則還是基本按照標准來的。這些不同的工具支持程度,被稱之為“正則流派”。而 工具軟件中支持這種匹配模式的那部分代碼,稱之為“正則引擎”。由於perl對正則表達式的支持非常到位,其正則引擎也比較優秀,因此perl語言算是正 則的一大流派,目前大部分對正則的支持都或多或少參考了perl語言中的標准。
原文 http://www.cnblogs.com/xiongyunqi/p/3735846.html