初學正則表達式


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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章