麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > VBScript > 正文

VBS教程:正則表達式簡介 -后向引用

2020-07-26 12:14:31
字體:
來源:轉載
供稿:網友

后向引用

正則表達式一個最重要的特性就是將匹配成功的模式的某部分進行存儲供以后使用這一能力。請回想一下,對一個正則表達式模式或部分模式兩邊添加圓括號將導致這部分表達式存儲到一個臨時緩沖區中。可以使用非捕獲元字符 '?:', '?=', or '?!' 來忽略對這部分正則表達式的保存。

所捕獲的每個子匹配都按照在正則表達式模式中從左至右所遇到的內容存儲。存儲子匹配的緩沖區編號從 1 開始,連續編號直至最大 99 個子表達式。每個緩沖區都可以使用 '/n' 訪問,其中 n 為一個標識特定緩沖區的一位或兩位十進制數。

后向引用一個最簡單,最有用的應用是提供了確定文字中連續出現兩個相同單詞的位置的能力。請看下面的句子:

Is is the cost of of gasoline going up up?

根據所寫內容,上面的句子明顯存在單詞多次重復的問題。如果能有一種方法無需查找每個單詞的重復現象就能修改該句子就好了。下面的 Visual Basic Scripting Edition 正則表達式使用一個子表達式就可以實現這一功能。

//b([a-z]+) /1/b/gi

等價的 VBScript 表達式為:

"/b([a-z]+) /1/b"

在這個示例中,子表達式就是圓括號之間的每一項。所捕獲的表達式包括一個或多個字母字符,即由'[a-z]+' 所指定的。該正則表達式的第二部分是對前面所捕獲的子匹配的引用,也就是由附加表達式所匹配的第二次出現的單詞。'/1'用來指定第一個子匹配。單詞邊界元字符確保只檢測單獨的單詞。如果不這樣,則諸如 "is issued" 或 "this is" 這樣的短語都會被該表達式不正確地識別。

在 Visual Basic Scripting Edition 表達式中,正則表達式后面的全局標志 ('g') 表示該表達式將用來在輸入字符串中查找盡可能多的匹配。大小寫敏感性由表達式結束處的大小寫敏感性標記 ('i') 指定。多行標記指定可能出現在換行符的兩端的潛在匹配。對 VBScript 而言,在表達式中不能設置各種標記,但必須使用 RegExp 對象的屬性來顯式設置。

使用上面所示的正則表達式,下面的 Visual Basic Scripting Edition 代碼可以使用子匹配信息,在一個文字字符串中將連續出現兩次的相同單詞替換為一個相同的單詞:

var ss = "Is is the cost of of gasoline going up up?./n";var re = //b([a-z]+) /1/b/gim;       //創建正則表達式樣式.var rv = ss.replace(re,"$1");   //用一個單詞替代兩個單詞.

最接近的等價  VBScript 代碼如下:

Dim ss, re, rvss = "Is is the cost of of gasoline going up up?." & vbNewLineSet re = New RegExpre.Pattern = "/b([a-z]+) /1/b"re.Global = Truere.IgnoreCase = Truere.MultiLine = Truerv = re.Replace(ss,"$1")

請注意在 VBScript 代碼中,全局、大小寫敏感性以及多行標記都是使用 RegExp 對象的適當屬性來設置的。

replace 方法中使用 $1 來引用所保存的第一個子匹配。如果有多個子匹配,則可以用 $2, $3 等繼續引用。

后向引用的另一個用途是將一個通用資源指示符 (URI) 分解為組件部分。假定希望將下述的URI 分解為協議 (ftp, http, etc),域名地址以及頁面/路徑:

http://msdn.microsoft.com:80/scripting/default.htm

下面的正則表達式可以提供這個功能。對 Visual Basic Scripting Edition,為:

/(/w+):////([^/:]+)(:/d*)?([^# ]*)/

對 VBScript 為:

"(/w+):////([^/:]+)(:/d*)?([^# ]*)"

第一個附加子表達式是用來捕獲該 web 地址的協議部分。該子表達式匹配位于一個冒號和兩個正斜杠之前的任何單詞。第二個附加子表達式捕獲該地址的域名地址。該子表達式匹配不包括 '^'、 '/' 或 ':' 字符的任何字符序列。第三個附加子表達式捕獲網站端口號碼,如果指定了該端口號。該子表達式匹配后跟一個冒號的零或多個數字。最后,第四個附加子表達式捕獲由該 web 地址指定的路徑以及/或者頁面信息。該子表達式匹配一個和多個除'#' 或空格之外的字符。

將該正則表達式應用于上面所示的 URI 后,子匹配包含下述內容:

RegExp.$1 包含 "http"

RegExp.$2 包含 "msdn.microsoft.com"

RegExp.$3 包含 ":80"

RegExp.$4 包含 "/scripting/default.htm"

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 99这里精品 | 在线成人免费观看www | 5a级毛片 | 毛片免费视频观看 | 日本精品视频一区二区三区四区 | 欧美精品色精品一区二区三区 | 久久成人午夜视频 | 中文字幕欧美在线 | 91成人免费网站 | 久久久新 | 国产91精品亚洲精品日韩已满 | 在线日韩av电影 | 成人免费区| 亚洲午夜国产 | chengrenzaixian | 视频一区二区视频 | 欧美成人国产va精品日本一级 | 精品一区二区三区网站 | 国产手机av在线 | 日韩欧美电影在线观看 | 热re91久久精品国产99热 | 成人国产在线视频 | 午夜视频观看 | 久草视频手机在线观看 | 中午日产幕无线码1区 | 亚洲片在线观看 | av免费在线观看免费 | 青草视频在线观看视频 | a视频在线免费观看 | 福利免费在线 | 爱操视频 | 成人精品一区二区三区中文字幕 | 国产一区二区不卡视频 | 午夜视频国产 | 欧美一级黄色片免费观看 | 中文区永久区 | 91精品免费在线 | 91豆奶| 99re热视频这里只精品 | 麻豆传传媒久久久爱 | 极品一级片 |