标签:正则表达 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