国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

VBS正則表達式對象的MultiLine屬性

2020-06-26 18:30:40
字體:
來源:轉載
供稿:網友
昨天在《VBS創建正則表達式對象的兩種方法》中提到了 VBScript 正則表達式對象的 MultiLine 屬性,在 shirne 的提醒下,我才想起參考手冊中是出現過 MultiLine 屬性的
 

在 Introduction to Regular Expressions(正則表達式簡介) 一章中的 Backreferences(向后引用)一節:

復制代碼代碼如下:

'使用上面所示的正則表達式,下面的 JScript 代碼可以使用子匹配信息,在一個文字字符串中將連續出現兩次的相同單詞替換為一個相同的單詞: 
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, rv 
ss = "Is is the cost of of gasoline going up up?." & vbNewLine 
Set re = New RegExp 
re.Pattern = "/b([a-z]+) /1/b" 
re.Global = True 
re.IgnoreCase = True 
re.MultiLine = True 
rv = re.Replace(ss,"$1")請注意在 VBScript 代碼中,全局、大小寫敏感性以及多行標記都是使用 RegExp 對象的適當屬性來設置的。 


需要注意的是 VBScript 中多行標記和 Perl 兼容的正則表達式中的多行標記并不完全一樣: 

如果 multiline 為 false,那么 "^" 匹配字符串的開始位置,而 "$" 匹配字符串的結束位置。如果 multline 為 true,那么 "^" 匹配字符串開始位置以及 "/n" 或 "/r" 之后的位置,而 "$" 匹配字符串結束位置以及 "/n" 或 "/r" 之前的位置。 

而在 Perl 中,如果設置了多行標記,"^" 匹配字符串開始位置以及 "/n" 之后的位置,而 "$" 匹配字符串結束位置以及 "/n" 之前的位置。也就是 Perl 兼容的正則表達式并不匹配 "/r",這跟 Linux 系統中文本的換行符與 Windows 系統中不一樣有關。Linux 系統中文本的換行符為 "/n",而 Windows 系統中為 "/r/n",這就導致了正則表達式的不同。 

VBS 正則表達式 MultiLine 屬性的這個特性可能會導致某些問題,所以在用 VBS 正則表達式處理文本時我一般會先把 "/r/n" 替換成 "/n": 
復制代碼代碼如下:

Dim fso, str 
Set fso = CreateObject("scripting.filesystemobject") 
str = fso.OpenTextFile("demon.txt") 
str = Replace(str, vbCrLf, vbLf) 

原文: http://demon.tw/programming/vbs-regexp-multiline.html

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日照市| 湘阴县| 胶州市| 尉犁县| 罗甸县| 华安县| 赤水市| 漯河市| 万年县| 西林县| 集贤县| 平顶山市| 周口市| 东源县| 福海县| 东海县| 饶阳县| 长治市| 扶沟县| 城市| 阳东县| 皮山县| 定远县| 清涧县| 崇州市| 朔州市| 高尔夫| 壶关县| 明星| 墨竹工卡县| 镇康县| 平顶山市| 西乌珠穆沁旗| 波密县| 集安市| 安庆市| 南岸区| 武乡县| 鄢陵县| 昆明市| 台北县|