元字符与通配符
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里面將這些工具軟件的對正則表達式的支持分類,因此也就有了“基礎正則表達式”和“擴展正則表達式”。
正則表達式語言由兩種基本字符類型組成:原義(正常)文本字符和元字符。元字符使正則表達式具有處理能力。所謂元字符就是指那些在正則表達式中具有特殊意義的專用字符,可以用來規定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。
?. 匹配除\n以外的任意符號
?^ 從字符串開始位置進行匹配
?$ 從字符串結尾進行匹配
?* 前導字符的0-∞
?+ 前導字符的1-∞
?? 前導字符的0-1
?{2,3} 前導字符的2-3
?| 或
?\ 轉義
?[] 字符組內的任一字符
?() 分組
轉載于:https://www.cnblogs.com/liuguniang/p/6861215.html
總結
- 上一篇: 将webstorm设置为eclipse风
- 下一篇: 优化学习笔记2