国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海南省| 根河市| 两当县| 安吉县| 武夷山市| 永福县| 砀山县| 黎城县| 萨迦县| 堆龙德庆县| 福州市| 淮滨县| 泽库县| 福贡县| 望城县| 东台市| 瓦房店市| 黄浦区| 叙永县| 柯坪县| 牟定县| 项城市| 咸阳市| 平顺县| 株洲县| 砚山县| 图木舒克市| 武山县| 泉州市| 余江县| 依兰县| 日照市| 遂川县| 翁牛特旗| 南和县| 油尖旺区| 浦东新区| 正镶白旗| 田阳县| 新安县| 会同县|