正则表达式 (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,如需转载请自行联系原作者