VBS創(chuàng)建正則表達式對象的兩種方法
更新時間:2012年01月08日 19:13:00 作者:
貌似我看過的 VBScript 書籍沒有一本介紹過這種寫法,當然,書上沒寫的東西還有很多
一直以來,我都是用 New RegExp 來創(chuàng)建正則表達式對象的:
Set regex = New RegExp然而最新才發(fā)現(xiàn) VBS 的正則表達式對象也可以這樣創(chuàng)建:
Set regex = CreateObject("VBScript.RegExp")貌似我看過的 VBScript 書籍沒有一本介紹過這種寫法,當然,書上沒寫的東西還有很多。
既然提到了正則表達式,那么就順便說一下,VBS 的正則表達式對象是支持 MultiLine 模式的,對象有一個 MultiLine 屬性。運行 Visual C++ 自帶的 OLE View,左邊樹展開 Type Libraries,找到 Microsoft VBScript Regular Expressions 5.5,可以看到該 COM 對象的屬性和方法:
interface IRegExp2 : IDispatch {
[id(0x00002711), propget]
HRESULT Pattern([out, retval] BSTR* pPattern);
[id(0x00002711), propput]
HRESULT Pattern([in] BSTR pPattern);
[id(0x00002712), propget]
HRESULT IgnoreCase([out, retval] VARIANT_BOOL* pIgnoreCase);
[id(0x00002712), propput]
HRESULT IgnoreCase([in] VARIANT_BOOL pIgnoreCase);
[id(0x00002713), propget]
HRESULT Global([out, retval] VARIANT_BOOL* pGlobal);
[id(0x00002713), propput]
HRESULT Global([in] VARIANT_BOOL pGlobal);
[id(0x00002717), propget]
HRESULT Multiline([out, retval] VARIANT_BOOL* pMultiline);
[id(0x00002717), propput]
HRESULT Multiline([in] VARIANT_BOOL pMultiline);
[id(0x00002714)]
HRESULT Execute(
[in] BSTR sourceString,
[out, retval] IDispatch** ppMatches);
[id(0x00002715)]
HRESULT Test(
[in] BSTR sourceString,
[out, retval] VARIANT_BOOL* pMatch);
[id(0x00002716)]
HRESULT Replace(
[in] BSTR sourceString,
[in] VARIANT replaceVar,
[out, retval] BSTR* pDestString);
};
但是很多書上并沒有介紹,VbsEdit 的自動完成功能中也沒有提示 MultiLine 屬性,甚至微軟官方的參考手冊上也沒有。
最后舉個簡單的例子,假如你想把文本中的空行刪除,可以用下面的代碼:
'Author: Demon
'Link: http://demon.tw/programming/vbs-regexp-object.html
'Date: 2011/12/26
Dim fso, regex, str
Set fso = CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("VBScript.RegExp")
str = fso.OpenTextFile("demon.txt").ReadAll
regex.Global = True
regex.MultiLine = True
regex.Pattern = "^\s*\n"
str = regex.Replace(str, "")
'相當于JavaScript中的 str = str.replace(/^\s*\n/gm, "")
fso.OpenTextFile("demon.txt", 2).Write str
原文來自:http://demon.tw/programming/vbs-regexp-object.html
Set regex = New RegExp然而最新才發(fā)現(xiàn) VBS 的正則表達式對象也可以這樣創(chuàng)建:
Set regex = CreateObject("VBScript.RegExp")貌似我看過的 VBScript 書籍沒有一本介紹過這種寫法,當然,書上沒寫的東西還有很多。
既然提到了正則表達式,那么就順便說一下,VBS 的正則表達式對象是支持 MultiLine 模式的,對象有一個 MultiLine 屬性。運行 Visual C++ 自帶的 OLE View,左邊樹展開 Type Libraries,找到 Microsoft VBScript Regular Expressions 5.5,可以看到該 COM 對象的屬性和方法:
復制代碼 代碼如下:
interface IRegExp2 : IDispatch {
[id(0x00002711), propget]
HRESULT Pattern([out, retval] BSTR* pPattern);
[id(0x00002711), propput]
HRESULT Pattern([in] BSTR pPattern);
[id(0x00002712), propget]
HRESULT IgnoreCase([out, retval] VARIANT_BOOL* pIgnoreCase);
[id(0x00002712), propput]
HRESULT IgnoreCase([in] VARIANT_BOOL pIgnoreCase);
[id(0x00002713), propget]
HRESULT Global([out, retval] VARIANT_BOOL* pGlobal);
[id(0x00002713), propput]
HRESULT Global([in] VARIANT_BOOL pGlobal);
[id(0x00002717), propget]
HRESULT Multiline([out, retval] VARIANT_BOOL* pMultiline);
[id(0x00002717), propput]
HRESULT Multiline([in] VARIANT_BOOL pMultiline);
[id(0x00002714)]
HRESULT Execute(
[in] BSTR sourceString,
[out, retval] IDispatch** ppMatches);
[id(0x00002715)]
HRESULT Test(
[in] BSTR sourceString,
[out, retval] VARIANT_BOOL* pMatch);
[id(0x00002716)]
HRESULT Replace(
[in] BSTR sourceString,
[in] VARIANT replaceVar,
[out, retval] BSTR* pDestString);
};
但是很多書上并沒有介紹,VbsEdit 的自動完成功能中也沒有提示 MultiLine 屬性,甚至微軟官方的參考手冊上也沒有。
最后舉個簡單的例子,假如你想把文本中的空行刪除,可以用下面的代碼:
復制代碼 代碼如下:
'Author: Demon
'Link: http://demon.tw/programming/vbs-regexp-object.html
'Date: 2011/12/26
Dim fso, regex, str
Set fso = CreateObject("Scripting.FileSystemObject")
Set regex = CreateObject("VBScript.RegExp")
str = fso.OpenTextFile("demon.txt").ReadAll
regex.Global = True
regex.MultiLine = True
regex.Pattern = "^\s*\n"
str = regex.Replace(str, "")
'相當于JavaScript中的 str = str.replace(/^\s*\n/gm, "")
fso.OpenTextFile("demon.txt", 2).Write str
原文來自:http://demon.tw/programming/vbs-regexp-object.html
相關(guān)文章
vbs 獲取當前目錄文件數(shù)量的代碼(不包括子文件夾中的)
有時候我們需要獲取當前目錄下有多少個文件,那么就可以參考下面的代碼2013-09-09vbs 批量修改文件,bat 批處理文件調(diào)用執(zhí)行vbs,并在cmd窗口打印返回值(vbs運行結(jié)果)
使用vbs 腳本對工作目錄下的字符串進行替換并統(tǒng)計被修改的文件數(shù)主調(diào)的批處理方法將捕捉該vbs腳本運行后的結(jié)果并打印在cmd窗口。2011-09-09自定義vbs腳本實現(xiàn)開機后延時啟動指定程序的方法
這篇文章主要介紹了自定義vbs腳本實現(xiàn)開機后延時啟動指定程序的方法,本文以延遲啟動金山毒霸為例,需要的朋友可以參考下2014-09-09vbscript獲取文件的創(chuàng)建時間、最后修改時間和最后訪問時間的方法
這篇文章主要介紹了vbscript獲取文件的創(chuàng)建時間、最后修改時間和最后訪問時間的方法,本文通過FileSystemObject對象實現(xiàn),需要的朋友可以參考下2014-08-08