本篇內(nèi)容介紹了“VBS正則表達式后向引用的詳細介紹”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
正則表達式一個最重要的特性就是將匹配成功的模式的某部分進行存儲供以后使用這一能力。請回想一下,對一個正則表達式模式或部分模式兩邊添加圓括號將導致這部分表達式存儲到一個臨時緩沖區(qū)中??梢允褂梅遣东@元字符 '?:', '?=', or '?!' 來忽略對這部分正則表達式的保存。
所捕獲的每個子匹配都按照在正則表達式模式中從左至右所遇到的內(nèi)容存儲。存儲子匹配的緩沖區(qū)編號從 1 開始,連續(xù)編號直至較大 99 個子表達式。每個緩沖區(qū)都可以使用 '\n' 訪問,其中n 為一個標識特定緩沖區(qū)的一位或兩位十進制數(shù)。
后向引用一個最簡單,最有用的應用是提供了確定文字中連續(xù)出現(xiàn)兩個相同單詞的位置的能力。請看下面的句子:
Is is the cost of of gasoline going up up?
根據(jù)所寫內(nèi)容,上面的句子明顯存在單詞多次重復的問題。如果能有一種方法無需查找每個單詞的重復現(xiàn)象就能修改該句子就好了。下面的 Visual Basic Scripting Edition 正則表達式使用一個子表達式就可以實現(xiàn)這一功能。
/\b([a-z]+) \1\b/gi
等價的 VBScript 表達式為:
"\b([a-z]+) \1\b"
在這個示例中,子表達式就是圓括號之間的每一項。所捕獲的表達式包括一個或多個字母字符,即由'[a-z]+' 所指定的。該正則表達式的第二部分是對前面所捕獲的子匹配的引用,也就是由附加表達式所匹配的第二次出現(xiàn)的單詞。'\1'用來指定第一個子匹配。單詞邊界元字符確保只檢測單獨的單詞。如果不這樣,則諸如 "is issued" 或 "this is" 這樣的短語都會被該表達式不正確地識別。
在 Visual Basic Scripting Edition 表達式中,正則表達式后面的全局標志 ('g') 表示該表達式將用來在輸入字符串中查找盡可能多的匹配。大小寫敏感性由表達式結(jié)束處的大小寫敏感性標記 ('i') 指定。多行標記指定可能出現(xiàn)在換行符的兩端的潛在匹配。對 VBScript 而言,在表達式中不能設(shè)置各種標記,但必須使用RegExp 對象的屬性來顯式設(shè)置。
使用上面所示的正則表達式,下面的 Visual Basic Scripting Edition 代碼可以使用子匹配信息,在一個文字字符串中將連續(xù)出現(xiàn)兩次的相同單詞替換為一個相同的單詞:
var ss = "Is is the cost of of gasoline going up up?.\n";var re = /\b([a-z]+) \1\b/gim; //創(chuàng)建正則表達式樣式.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 對象的適當屬性來設(shè)置的。
在replace 方法中使用$1 來引用所保存的第一個子匹配。如果有多個子匹配,則可以用$2,$3等繼續(xù)引用。
后向引用的另一個用途是將一個通用資源指示符 (URI) 分解為組件部分。假定希望將下述的URI 分解為協(xié)議 (ftp, http, etc),域名地址以及頁面/路徑:
/tupian/20230522/ Visual Basic Scripting Edition,為:/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/對 VBScript 為:
"(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)"第一個附加子表達式是用來捕獲該 web 地址的協(xié)議部分。該子表達式匹配位于一個冒號和兩個正斜杠之前的任何單詞。第二個附加子表達式捕獲該地址的域名地址。該子表達式匹配不包括 '^'、 '/' 或 ':' 字符的任何字符序列。第三個附加子表達式捕獲網(wǎng)站端口號碼,如果指定了該端口號。該子表達式匹配后跟一個冒號的零或多個數(shù)字。最后,第四個附加子表達式捕獲由該 web 地址指定的路徑以及\或者頁面信息。該子表達式匹配一個和多個除'#' 或空格之外的字符。
將該正則表達式應用于上面所示的 URI 后,子匹配包含下述內(nèi)容:
RegExp.$1 包含 "http"
RegExp.$2 包含 "msdn.microsoft.com"
RegExp.$3 包含 ":80"
RegExp.$4 包含 "/scripting/default.htm"
“VBS正則表達式后向引用的詳細介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
當前題目:VBS正則表達式后向引用的詳細介紹-創(chuàng)新互聯(lián)
網(wǎng)頁地址:http://aaarwkj.com/article42/dspdhc.html成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、企業(yè)網(wǎng)站制作、微信小程序、響應式網(wǎng)站、外貿(mào)建站、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)