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

首頁 > 編程 > VBScript > 正文

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

2020-07-26 11:49:48
字體:
來源:轉載
供稿:網友

在 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 敦煌市| 长寿区| 正宁县| 林周县| 徐汇区| 白朗县| 澄城县| 莱阳市| 阜康市| 武强县| 清流县| 安仁县| 重庆市| 松桃| 元朗区| 花莲市| 尼木县| 马鞍山市| 乾安县| 苗栗县| 自贡市| 宜城市| 新竹县| 吉林省| 勐海县| 山东| 卓资县| 台前县| 烟台市| 北安市| 舒城县| 新巴尔虎右旗| 榕江县| 平舆县| 化隆| 仁怀市| 东丰县| 宜都市| 吴堡县| 桓仁| 金秀|