grep
-i 不區分大小寫
-v --invert-match 反選
-c --count 匹配次數
-l --files-with-matches 列印檔案名
-l --files-without-match 列印出不匹配的檔名
-n --line-number 列印出匹配行的行號
-h --no-filename 不列印檔案名
. 代表任意字元
^ 匹配行首
$ 匹配行尾
^& 匹配空行
裡邊的字元,是要匹配的字符集,元字元在裡邊代表字面意義。但是^代表否,-代表範圍。
但是 grep -h '[a-z]' dirlist*.txt 代表a-z的所有字元, grep -h '[-az]' dirlist*.txt 代表-、a、z三個字元。
[a-z] 可能存在字典序/ascii序的問題,所以有一種替代的方案,不會存在這種問題。
[:alnum:] 大寫字母+小寫字母+數字
[:word:] 大寫字母+小寫字母+數字+下劃線(_)
[:alpha:] 大寫字母+小寫字母
[:blank:] 空格和tab鍵
[:digit:] 數字[0-9]
[:lower:] 小寫字母
[:space:] [ \t\r\n\v\f]
[:upper:] 大寫字母
[:xdigit:] 16進製制,[0-9a-fa-f]
用法:要放在內,
ls /usr/sbin/[[:upper:]]*
基礎的支援 ^ $ . [ ]* ,除此之外都認為是字面值,擴充套件的還支援:( ) ?+|
egrep 或者 grep -e 支援擴充套件正則。
基礎正則裡邊,(, ), 前面加上反斜線\,也會視為元字元。
| 表示或邏輯
() 表示乙個作用域
?匹配乙個字元0或1次
* 匹配乙個字元0或多次
+ 匹配乙個字元1或多次
匹配乙個字元指定次
匹配指定n次
匹配[n,m]次
匹配》=n次
匹配<=m次
vim的查詢支援正則,只不過只支援基本正則,擴充套件的元字元前需要加反斜線,例如:
/([0-9]\) [0-9]\-[0-9]\
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
劍指 19 正規表示式匹配
題目描述 演算法分析 1.如果字串第乙個字元和模式中的第乙個字元相匹配,那麼字串和模式都後移乙個字元,然後匹配剩餘的。2.如果字串第乙個字元和模式中的第乙個字元相不匹配,直接返回false。如果字串第乙個字元跟模式第乙個字元不匹配,則模式後移2個字元,繼續匹配。如果字串第乙個字元跟模式第乙個字元匹配...