VB指令碼程式設計之2 0 加入正規表示式查詢替換功能

2021-06-12 01:04:52 字數 2782 閱讀 6225

程式設計是在學習中不斷進步,這個不假,這兩天一直在折騰vb指令碼程式設計,原因可以追溯到我關於vb指令碼程式設計的第一篇文章簡單的vb小指令碼之——檔案處理指令碼,裡面提到了上帝,額不,是我的客戶提到的乙個簡單的小要求,就是希望我寫個vb的指令碼來處理檔案,於是我就現學現用了,完成了1.0的版本。客戶就是上帝,上帝說要寫vb指令碼,於是就有了vb指令碼。這不,提交了之後,上帝說,改進一下,在命令列裡實現呼叫,並且傳引數,比如,xx.vbs -normal 22.log 66 eric.tang這個用來把22.log檔案中的「66」字串兒替換為「eric.tang」,同時呢還要加入正規表示式的驗證,比如xx.vbs -regex 22.log 「<.*>" eric.tang這個用來把22.log檔案中<>括號中的內容替換為eric.tang,折騰了大半天之後就有了以下的vb指令碼2.0版本,內容原始碼如下:

currentpath=createobject("scripting.filesystemobject").getfolder(".").path

set objargs = wscript.arguments

if objargs.count < 4 then

msgbox("missing parameters!")

else

set objfso = createobject("scripting.filesystemobject")

if objfso.fileexists(currentpath & "\" & objargs(1)) then 'if file exists or not

set objfile=objfso.opentextfile(currentpath & "\" & objargs(1))

str=objfile.readall 'get content of the file

objfile.close

if objargs(0) = "-normal" then

oldstr=objargs(2) 'the old string that you want to find

newstr=objargs(3) 'the new string that you want to replace with

if oldstr <> "" then

str=replace(str,oldstr,newstr)

tmparray=split(objargs(1),".")

set newfile=objfso.createtextfile(currentpath & "\" & tmparray(0) & "_normal" & ".txt")

newfile.write(str)

newfile.close

if objfso.fileexists(currentpath & "\" & tmparray(0) & "_normal" & ".txt") then

msgbox("normal handled file has been created successfully! please check " & currentpath & "\" & tmparray(0) & "_normal" & ".txt")

else

end if

end if

elseif objargs(0) = "-regex" then

set regex=new regexp 'create a regex

patern=objargs(2)

regex.pattern=patern

regex.ignorecase = true 'ingnore the upper/lower case

regex.global = true 'if can be used globally

if str <> "" then

set matches = regex.execute(str) 'excute search

if matches.count <> 0 then

for each match in matches

str=replace(str,match.value,objargs(3))

next

tmparray=split(objargs(1),".")

set newfile=objfso.createtextfile(currentpath & "\" & tmparray(0) & "_regex" & ".txt")

newfile.write(str)

newfile.close

if objfso.fileexists(currentpath & "\" & tmparray(0) & "_regex" & ".txt") then

msgbox("regex handled file has been created successfully! please check " & currentpath & "\" & tmparray(0) & "_regex" & ".txt")

else

end if

else

msgbox("no matches found!")

end if

end if

end if

else

msgbox("file not exist!")

end if

end if

因為我是初次接觸vb指令碼,寫的一般,僅僅是能完成要求的功能而已,可擴充套件性什麼的就幾乎沒什麼考慮的,所以在我看來,程式猿可能會在職業生涯中臨時要去學很多東西,雖然不是你感興趣的東西,但工作所需,我們都可能要及時學習並運用,在學習中前進,在學習中進步。

shell程式設計之正規表示式

1 正規表示式 其實就是一種規範,也就是模式,約束字串等符合什麼樣的格式,比如要求字串必須a開頭,t結尾,符合這樣條件的字串就要用到正規表示式。2 兩套庫 gnu linux中有有兩套庫用足正規表示式程式設計,posix庫,自帶的 pcre庫,perl,功能比較全,本文採用perl。3 初體驗 eg...

linux shell 程式設計之正規表示式

grep 文字過濾工具,能夠實現根據指定的模式,逐行搜尋檔案內容,並將匹配到的行顯示出來。模式 是由正規表示式的元字元,其他字元組成的匹配條件。任意單個單個字元 匹配指定範圍的任意單個字元 匹配其前的字元0次或多次 匹配其前的字元0次或1次 與別的語言如php 正則不同的地方,主要防止 shell ...

Shell程式設計之正規表示式

1.萬用字元 2.正規表示式與萬用字元元字元作用 前乙個字元匹配0次或任意多次 匹配除了換行符外任意乙個字元 匹配行首。例如 hello會匹配以hello開頭的行 匹配行尾。例如 hello 會匹配以hello結尾的行 匹配中括號中指定的任意乙個字元,只匹配乙個字元 匹配除中括號的字元意外的任意乙個...