2012-03-30 1 views
0

私はゾーン転送の結果を含むテキストファイルを持っています&各行を読む必要があります&サーバ名のリストを出力する配列にそれを分割します& IPアドレス。しかし、私は空白区切り記号での私の試みが私が望むことをしているように見えないので、データを分割するいくつかの問題があります。テキストファイルの内容をデリミタの正規表現で分割しますか?

サンプル入力:

machine1.fqdn.com. 86400 IN A 192.168.1.10 
machine2.fqdn.com. 86400 IN A 192.168.1.11 
machine3.fqdn.com. 86400 IN A 192.168.1.12 
machine4.fqdn.com. 86400 IN A 192.168.1.13 

スクリプト:

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFile = objFSO.OpenTextFile("I:\testHarvestIF.txt", ForReading) 

Const ForReading = 1 

Do Until objFile.AtEndOfStream 
strNextLine = objFile.Readline 
arrServiceList = Split(strNextLine," ",-1,1) 
Wscript.Echo "Server name: " & arrServiceList(0) & vbCrLF & _ 
    " - IP Address: " & arrServiceList(2) 
Loop 

objFile.Close 

電流出力:

Server name: machine1.fqdn.com. 
IP Address: IN A 192.168.1.10 
Server name: machine2.fqdn.com. 
IP Address: IN A 192.168.1.11 
Server name: machine3.fqdn.com. 
IP Address: IN A 192.168.1.12 
Server name: machine4.fqdn.com. 
IP Address: IN A 192.168.1.13 

所望の出力:

Server name: machine1.fqdn.com. 
IP Address: 192.168.1.10 
Server name: machine2.fqdn.com. 
IP Address: 192.168.1.11 
Server name: machine3.fqdn.com. 
IP Address: 192.168.1.12 
Server name: machine4.fqdn.com. 
IP Address: 192.168.1.13 

区切り記号として任意の長さの空白を使用するために通常の表現を使用できる方法はありますか?例えば。

arrServiceList = Split(strNextLine,"^\s+",-1,1) 

ありがとうございました。

よろしく、

RB

答えて

-1

ではなく、文字列をsplitingの必要な文字列に一致するようにRegExpオブジェクト(MSDN)を使用します。

set regex = new RegExp 
    regexp.pattern = "^.*? " 
    set serverName = regex.execute(inputText).value 
    regex.pattern = " .*?$" 
    set ipAddress = regex.execute(inputText).value 
+0

私の前回の回答は申し訳ありません。私はそれを調べ、vbscriptはMatchオブジェクトからキャプチャグループを抽出することをサポートしていないことが判明しました。 (<私を-verify) – Untitled

+0

設定objFSO =のCreateObject( "Scripting.FileSystemObjectオブジェクト") 設定のobjfile = objFSO.OpenTextFile( "I:\ test.txtの"、ForReading) のConst ForReading = 1 機能splitRE(strSource、パターン)のCreateObject( "vbscript.regexp") .GLOBAL = Trueの .Pattern =パターン splitRE =スプリット(.Replace(strSource、 " ")、"") はobjfileのまでいます エンド機能付き ENDで 。 AtEndOfStream strNextLine = objFile.Readline arrServiceList = splitRE(strNextLine、 "\ s +") Wscript.Echo "サーバー名:"&arrServiceLis t(0)& " - IPアドレス:"&arrServiceList(4) ループ objFile.Close – Pr0m3th3us

0

これは動作しない場合があります、の形式に応じて、データを追加することができますが、余分な空白を空白文字で置き換えて、Splitを呼び出すことができます。

Dim re : Set re = New RegExp 
re.Global = True 
re.Pattern = "\s+" 

Do Until objFile.AtEndOfStream 
strNextLine = re.Replace(objFile.Readline, " ") 
arrServiceList = Split(strNextLine," ",-1,1) 
Wscript.Echo "Server name: " & arrServiceList(0) & vbCrLF & _ 
    " - IP Address: " & arrServiceList(4) 
Loop 
関連する問題