标签:正则表达 grep
/* 规则表达式使用 * 注:使用的工具是egrep windows下面可以使用grep工具安装及使用看另外一个博客,地址在本文的尾部:
* 注:一些常用的院子符及作用可以看文章尾部的截图(内容来自《精通正则表达式》第三版)<a target=_blank href="http://pan.baidu.com/s/1hq3S64O">下载地址百度网盘</a></a>
* 在字符组内部原字符的定义是不一样的。例如:. 点号在字符组外部是元字符,在字符组内部则是普通的字符。
* - 连字符只有在字符组内部才是元字符在外部则不是。
* 不要混淆多选项和字符组。字符组[abc]和多选项(a|b|c)有不同的意义,字符组只能匹配一个字符,多选项可以匹配任意长度的字符。
* 例如:(ab|ac|ad)
* 排除型字符组,表示所有未列出的字符。[^x]的意思表示匹配一个不是x的字符并不包括空行。
*
* -i 在匹配时忽略大小写。
*
* 可选项(optional) ? 把他放在一个字符的后面表示测出允许出现该字符,也可以不出现。
* 例如: colou?r u可以出现也可以不出现。
* 改进:(July|Jul).(fourth|4th|4)
* July?.(fourth|4(th)?)
* + 号表示与之紧邻的元素出现一次或多次
* * 号表示与之紧邻的元素出现任意多次或不出现
* 例子:<HR SIZE = 14>
* 表达式 <HR +SIZE *= *14 *>
* 解析:在HR和SIZE之间至少有一个空格,在等号两端可以有也可以没有空格,在14后面可以有任意数的空格
* 再进一步:SIZE的大小不一定是14可以是任意的大小
* <HR +SIZE *= *[0-9]+ *>
* 再进一步:HR和SIZE的大小写也不一定
* 我们可以使用-i参数
* 再进一步:如果尺寸的参数是可选的,就是说可以没有尺寸只有<HR>,当然HR后面也可能有空格
* <HR( +SIZE *= *[0-9]+)? *>
* 好了这个例子到此结束
*
* 区间量词(interval quantifier): {min,max} 问好对应的区间量词是{0,1}
* 括号及反向引用:例子如果我们先匹配重复的单词如:the the
* 方案:\<the +the\>
* 再进一步匹配任意字符:\<([A-Za-z]+) +\1\>
* 注:支持反向引用的工具中,括号能记忆其中的子表达式匹配的文本,不论这些文本是什么,元子符\1都能记住它
* 在一个表达式中可以使用\1 \2 \3 分别表示第1 2 3个括号中的内容
*
* 转义:使用反斜杠\ 把元字符转换普通的字符 www.opengg.cn www\.opengg\.cn
* 注:转义在字符组内部无效
* 匹配引号内的字符串 "[^"]*" 两端的引号开头和结尾的引号,[]中间的^"表示匹配出"外的所有字符 *表示任意多的非字符
* 如果要匹配双引号中的引号,我们可以使用反斜杠\"来实现
*
* 匹配HTTP/HTML URL
* 例如:http://www.baidu.com/path.html
* 分析:http://部分不变 .html可能存在 www.baidu.com部分可以这样匹配[-a-z0-9_.]+
* path部分[-a-zA-Z0-9_:@#%&*?=+,.!/~$]* .html这样\.html?
* 写在一起就是这样 \<http:[-a-z0-9_.]+/[-a-zA-Z0-9_:@#%&*?=+,.!/~$]*\.html?\>
*
* 匹配时间:9:17 am 12:12 pm (十二小时制)
* 简单匹配:[0-9]?[0-9]:[0-9]?[0-9] (am|pm)
* 进一步细化:当小时是两位数的时候1[012]当小时是一位数的时候[0-9] 所以小时部分可以这样写(1[012]|[0-9])
* 分钟数:[0-5][0-9]
* 综合起来:(1[012]|[0-9]):[0-5][0-9] (am|pm)
* 匹配时间(24小时制)
* 小时部分:当第一位是0或1的时候[01][0-9]当小时部分是2的时候2[0-3]
* 分钟部分不变和12进制一样
* 综合起来:([01]?[0-9]|2[0-3]):[0-5][0-9]
*
* */
标签:正则表达 grep
原文地址:http://blog.csdn.net/sunfeilong1993/article/details/41907497