正則表達式?(grep)
grep (global search regular expression(RE) and print out the line,全面搜索正則表達式并把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,并把匹配的行打印出來。搜索的結果被送到屏幕,不影響原文件內容。Unix的grep家族包括grep、?egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的擴展,支持更多的re元字符,
一:語法
grep -aceinv ‘字符串' filename
參數說明:
-a | 當對binary文件搜索時使用 |
-c | 計算次數 |
-e | 兩個表達式連到一起 |
-i | 忽略大小寫的不同 |
-n | 輸出行號 |
-v | 反向選擇 |
??字符串
????^word??搜索行首為(word)的行
??? word$??搜索行尾為(word)的行
????.?????代表任意一個字符,一定是一個任意字符
????\???????將特殊符號的特殊意義去除
????*??????重復零個或多個的前一個?RE?字符
[ ]?????代表一個待搜索的字符
[ - ]?????中的減號?-代表兩個字符之間的所有連續字符
[^abc ]??代表不包括abc?如grep -n [^A-Z]不搜索大寫
????\{n,m\}??連續?n?到?m?個的(前一個?RE?字符)
\{n\}????連續?n?個的前一個?RE?字符
\{n,\}???連續?n?個以上的前一個?RE?字符
? ??\(..\)???一個字符單位,如'\(love\)',love被標記為1。
?
????egrep?是?grep –E
????+????重復零個或多個的前一個?RE?字符
?????????零個或一個前一個?RE?字符
??? |????用或( or )的方式找出數個字符串
????( )???一個字符單位
二:在線驗證
http://www.rubular.com

三:常用正則表達式
1.常用的正則表達式
[\u4e00-\u9fa5]??????//匹配中文字符
[^\x00-\xff]????? ??????//匹配雙字節字符(包括漢字在內)
\n\s*\r?????????????????????//匹配空白行的正則表達式
^\s*|\s*$?????? ?????????//匹配首尾空白字符
[a-zA-z]+://[^\s]*????//匹配網址URL
^[a-zA-Z][a-zA-Z0-9_]{4,15}$??//匹配帳號是否合法(字母開頭,允許5-16字節,允許字母數字下劃線)
\d{3}-\d{8}|\d{4}-\d{7}????????//匹配國內電話號碼
[1-9][0-9]{4,}???????????? ???????????//匹配騰訊QQ號
[1-9]\d{5}(?!\d)?????????????????????//匹配中國郵政編碼
\d{15}|\d{18}????????????????????????//匹配身份證
\d+\.\d+\.\d+\.\d+???????????????????//匹配ip地址
<(\S*?)[^>]*>.*?</\1>|<.*? />?????????????//匹配HTML標記的正則表達式
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*???//匹配Email地址
2.匹配特定數字
^[1-9]\d*$???? ?//匹配正整數
^-[1-9]\d*$? ??//匹配負整數
^-?[1-9]\d*$ ??//匹配整數
^[1-9]\d*|0$ ??//匹配非負整數(正整數?+ 0)
^-[1-9]\d*|0$ ?//匹配非正整數(負整數?+ 0)
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ ?//匹配正浮點數
^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ ?//匹配負浮點數
^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ ?????//匹配浮點數
^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ ?????//匹配非負浮點數+ 0
^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ //匹配非正浮點數+0
3.匹配特定字符串
3.匹配特定字符串
^[A-Za-z]+$ ??//匹配由26個英文字母組成的字符串
^[A-Z]+$ ??????//匹配由26個英文字母的大寫組成的字符串
^[a-z]+$ ???????//匹配由26個英文字母的小寫組成的字符串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字符串
????^\w+$ ??????????? ?//匹配由數字、26個英文字母或者下劃線組成的字符串本文轉自 vfast_chenxy 51CTO博客,原文鏈接:http://blog.51cto.com/chenxy/178738,如需轉載請自行聯系原作者