VBScript: 正则表达式(RegExp对象)
RegExp對象是VBScript中用于提供簡單地正則表達式支持的對象。VBScript中所有和正則表達式有關的屬性和方法都有這個對象有關聯。
一、RegExp對象的屬性和方法(三個屬性,三個方法)
屬性:
1. Global屬性: True or False, 指明模式是匹配整個字符串中所有與之相符的地方還是只匹配第一次出現的地方。默認值是False(表示只匹配第一次出現的地方)。
2. IgnoreCase屬性: True or False, 指明模式匹配是否大小寫敏感。默認是False(表示搜索為大小寫敏感)。
3. Pattern屬性:設置或返回用于搜索的正則表達式。
方法:
1. Execute方法:將正則表達式應用到字符串上并返回Matches集合。
2. Replace方法:替換在正則表達式搜索中找到的文本。
3. Test方法:對字符串執行正則表達式搜索,并返回一個布爾值說明匹配是否成功(True:匹配成功, False:匹配不成功)。
二、VBScript中的正則表達式字符
| 字符 | 描述 |
| \ | 表示下一個字符是特殊字符或文字常量 |
| ^ | 匹配輸入的開頭 |
| $ | 匹配輸入的結尾 |
| * | 匹配前一個字符零次或多次 |
| + | 匹配前一個字符一次或多次 |
| ? | 匹配前一個字符零次或一次 |
| . | 匹配除換行符以外的任何單個字符 |
| (pattern) | 匹配并記住這個模式。可以用[0]…[n]從結果的matches集合中獲取匹配到的字符串。要匹配括號本身,在前面加上斜杠-用"\("或"\)" |
| (?:pattern) | 匹配但不捕獲模式,也就是不會存儲匹配結果供以后使用。這可以用于使用"or"字符(|)合并模式的不同部分。例如,"anomal(?:y|ies)"比"anomaly|anomalies"要劃算得多 |
| (?=pattern) | 當所要搜索的字符串匹配了模式的開頭部分時就接著匹配這一部分。非捕獲匹配,也就是說不會保存匹配結果供以后使用。例如,"Windows (?=95|98|NT|2000|XP|Vista)"能匹配"Windows Vista"中的Windows而不能匹配"Windows 3.1"中的Windows |
| (?!pattern) | 與上一個相反,這會匹配模式中沒有出現的內容。非捕獲匹配。例如,"Windows (?!95|98|NT|2000|XP|Vista)"能匹配"Windows 3.1"中的Windows而不能匹配"Windows Vista"中的Windows |
| x|y | 匹配x或y |
| {n} | 準確地匹配n次(n必須是一個非負整數) |
| {n,} | 至少匹配n次(n必須是一個非負整數-注意結尾的逗號) |
| {n,m} | 至少匹配n次,最多匹配m次(m和n必須都是非負整數) |
| [xyz] | 匹配其中包括的任一個字符(xyz表示一個字符集) |
| [^xyz] | 匹配其中不包括的字符(^xyz表示一個字符集的補集) |
| [a-z] | 匹配指定范圍內的字符(a-z表示字符的范圍) |
| [^m-z] | 匹配指定范圍以外的字符(^m-z表示指定范圍的補集) |
| \b | 匹配一個單詞邊界,這個位置在單詞和空格之間 |
| \B | 匹配一個非單詞邊界 |
| \d | 匹配數字。等價于[0-9] |
| \D | 匹配非數字。等價于[^0-9] |
| \f | 匹配換頁符 |
| \n | 匹配換行符 |
| \r | 匹配回車符 |
| \s | 匹配空白,包括空格、制表符、換頁符等。等價于"[\f\n\r\t\v]" |
| \S | 匹配非空白的字符。等價于"[^\f\n\r\t\v]" |
| \t | 匹配制表符 |
| \v | 匹配縱向制表符 |
| \w | 匹配字母、數字,以及下劃線。等價于"[A-Za-z0-9_]" |
| \W | 匹配非字符數字。等價于"[^A-Za-z0-9\_]" |
| \. | 匹配. |
| \| | 匹配| |
| \{ | 匹配{ |
| \} | 匹配} |
| \[ | 匹配[ |
| \] | 匹配] |
| \( | 匹配( |
| \) | 匹配) |
| $num | 匹配num,其中num是正整數。返回匹配結果的引用 |
| \n | 匹配n,其中n是八進制轉義符。八進制轉義符的長度應為1、2或3 |
| \uxxxx | 匹配UNICODE形式的ASCII字符 |
| \xn | 匹配n,其中n是十六進制轉義符。十六進制轉義符必須是兩位長度 |
| \\ | 匹配\ |
三、實例
1、驗證電話號碼輸入:
Dim re, s, objMatch, colMatches Set re = New RegExp re.Pattern = "\([0-9]{3}\)[0-9]{4}-[0-9]{4}" re.Global = True re.IgnoreCase = True s = InputBox("Enter your phone number in the following Format (XXX)XXXX-XXXX:") If re.Test(s) Then MsgBox "Thank you!" Else MsgBox "Sorry but that number is not in a valid format." End If2、分解URI:將URI分解成協議(如ftp、http等)、域名地址、頁面和路徑四個部分。
Dim re, s Set re = New RegExp re.Pattern = "(\w+):\/\/([^/:]+)(:\d*)?([^#]*)" re.Global = True re.IgnoreCase = True s = "http://www.wrox.com:80/misc-pages/support.shtml" MsgBox re.Replace(s, "$1") MsgBox re.Replace(s, "$2") MsgBox re.Replace(s, "$3") MsgBox re.Replace(s, "$4")3. 檢查HTML元素: "<(.*)>.*<\/\1>"
4. 匹配空白: "^[\t]*$"
5. 匹配HTML注釋標簽: "^.*<!--.*—>.*$"
將上述匹配模式稍作修改,匹配HTML注釋標簽并清除HTML注釋:
Dim re, s Set re = New RegExp re.Pattern = "(^.*)(<!--.*-->)(.*$)" re.Global = True s= "<title>A Title</title><!-- a title tag -->" If re.Test(s) Then MsgBox "HTML comment tags found." Else MsgBox "No HTML comment tags found." End If MsgBox re.Replace(s,"$1" & "$3")?
參考資料:《VBScript程序員參考手冊》
轉載于:https://www.cnblogs.com/ITGirlXiaoXiao/p/3173651.html
總結
以上是生活随笔為你收集整理的VBScript: 正则表达式(RegExp对象)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB之傅里叶展开(五)
- 下一篇: 辗转相除法的原理