第四章 正則表達式 4.2 正則表達式的元字符和量詞 正則表達式的代碼編寫非常簡單,而且近乎格式化模式,千篇一律。其功能強大的原因主要在于通過它的元字符和量詞的組合,從一堆雜亂無章的字符中找出符合規(guī)則的字符串來。元字符和量詞就是正則表達式用來描述要找的字符串的特征的。 4.2.1 元字符 \d 匹配一個數字 \D 匹配一個非數字字符(包括字母、漢字、空格、下劃線、各類符號) \w 匹配單個字母、漢字、數字和_。 \W 匹配任何非單詞字符(包括空格、各類符號,不包括下劃線) \s 匹配任何空白字符(包括空格、制表符、換行符等,也就是眼睛看不到的字符) \S 匹配任何非空白字符(也就是眼睛能看到的字符) \n 匹配一個換行符 \r 匹配一個回車符 \t 匹配一個制表符(Tab鍵) \b 匹配一個單詞邊界,也就是指單詞和空格間的位置(不支持漢字) \B 匹配非單詞邊界(跟\b相反) . 匹配除“\n”之外的任何單個字符 *** 在VBA里,.是一個元字符,\.表示其本身,也就是說,要想表示.,就必須在它前面加上\,否則系統(tǒng)會把它當作一個元字符來對待。 [一-龢]或[\u4e00-\u9fa5] 匹配漢字 4.2.2 元字符量詞 *:匹配零次或多次 +:匹配一次或多次 ?:匹配零次或一次 上下限:{下限,上限} {n} 匹配n次 {n,} 匹配至少n次,無上限 {n,y} 匹配n次到y(tǒng)次,y>n 4.2.3 連接符 |表示or,如“工程|結算”,表示匹配“工程”或者“結算”均可。如果有多個或者條件,在語句執(zhí)行時,會按照順序先匹配前面的條件,再匹配后面的條件。 []表示匹配中括號中的任意一個字符。 如:[abc],表示匹配字母abc中的任意一個均可 [a-zA-Z],表示匹配任意一個大小寫字母均可 [0-6],表示匹配0到6的任意一個數字 4.2.4 用正則表達式測試工具查看匹配結果 我們通過元字符和量詞的組合來描述要找的字符串的特征,然后用這個組合去文本中查找,查找到的內容就是匹配結果。下面我們通過一些例子來說明元字符和量詞的應用,通過正則表達式測試工具來匹配。 4.2.4.1 在“買牛肉3斤,115元”里匹配數字: 表達式:\d+,匹配一個或多個數字 匹配結果: 匹配到兩個結果:3、115 如果想匹配帶小數點的數字,如“買牛肉3斤,115.56元”,表達式可以修改為:\d+\.?\d*,小數點匹配0次或1次,小數點后面的數字匹配0次或多次。 4.2.4.2 在55,76,1000,357,2500,12380中匹配4位數字:\d{4},有三個匹配結果:1000,2500,1238 匹配所有大于等于1000的數字:\d{4,},有三個匹配結果:1000,2500,12380 關于\d{4}表達式想匹配4位數,卻匹配到12380里的1238,造成匹配結果不準確的情況,我們會在以后的章節(jié)里解決。 4.2.4.3 在下面一段話里匹配“工程”或者“結算”: 施工過程結算是指工程項目實施過程中,發(fā)承包雙方依據施工合同,對約定結算周期內已完工程價款進行結算的活動,其結算文件經發(fā)承包雙方簽署認可后,作為工程竣工結算文件的組成部分。 表達式:工程|結算 匹配結果: 匹配到8個結果。 4.2.5 常用的正則表達式 1、數字:[0-9]* 2、n位的數字:\d{n} 3、至少n位的數字:\d{n,} 4、x-y位的數字:\d{x,y} 5、帶1-2位小數的數字:\d+(\.\d{1,2})? 8、非負整數:^\d+$ 9、漢字:[一-龢]+ 10、英文和數字:[A-Za-z0-9]+ 11、由英文字母組成的字符串:[A-Za-z]+ 12、由大寫英文字母組成的字符串:[A-Z]+ 13、由小寫英文字母組成的字符串:[a-z]+ 14、由漢字、數字、字母或者下劃線組成的字符串:\w+ 15、漢字、數字、字母組成的字符串:[一-龢A-Za-z0-9]+ 16、身份證號(15位、18位數字):\d{15}|\d{18} 17、密碼(以字母開頭,長度在6~8之間,只能包含字母、數字和下劃線):^[a-zA-Z][a-zA-Z0-9_]{5,7}$ 18、日期格式:\d{4}-\d{1,2}-\d{1,2} |
|