/* 規則表達式使用
* 注:使用的工具是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]
*
* */
windows下egrep的下載使用