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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦后旗| 芦溪县| 宁明县| 连州市| 安国市| 梅州市| 浠水县| 江西省| 措勤县| 巨野县| 香港 | 建德市| 炉霍县| 常宁市| 台北市| 嘉禾县| 平江县| 淅川县| 梁平县| 赤城县| 宁强县| 工布江达县| 瓮安县| 弥勒县| 孝昌县| 布尔津县| 彰化市| 威远县| 金山区| 东乌珠穆沁旗| 黑龙江省| 深水埗区| 宝丰县| 旬阳县| 五河县| 光泽县| 乐昌市| 界首市| 灯塔市| 普洱| 玉山县|