VBSの質問です

aa.txt
****************
       <tr>
        <td>2</td>
       <tr>
        <td>2</td>
       <tr>
        <td>2</td>
****************
をVBSで置換し
****************
<tr><td>2</td>
<tr><td>2</td>
<tr><td>2</td>
****************
のように置換したいのですが
****************
Dim objFile ' 対象ファイル
Dim oldText ' 置換前テキスト
Dim newText ' 置換後テキスト
Dim objFSO ' ファイルシステムオブジェクト
Dim objRep ' 正規表現オブジェクト
Dim repText ' 置換後文字列
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("aa.txt")
oldText = objFile.ReadAll
repText = "<tr><td>"
Set objRep = New RegExp
objRep.Multiline = True
objRep.Pattern = ".*<tr>.*\r\n.*<td>"
newText = objRep.replace(oldText, repText)
objFile.Close
Set objFile = objFSO.CreateTextFile("abc.html")
objFile.WriteLine (newText)
objFile.Close
****************
のVBSを走らせると
****************
<tr><td>2</td>
       <tr>
        <td>2</td>
       <tr>
        <td>2</td>
****************
このような結果となってしまいます
正規表現の部分をどうすれば理想のように置換できるでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/03/03 14:29:59
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント200pt

Global プロパティを True に設定すると、期待した動作をします。

Dim repText ' 置換後文字列
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("aa.txt")
oldText = objFile.ReadAll
repText = "<tr><td>"
Set objRep = New RegExp
objRep.Multiline = True
objRep.Pattern = ".*<tr>.*\r\n.*<td>"

objRep.Global = True	' ★これを追加する

newText = objRep.replace(oldText, repText)
objFile.Close
Set objFile = objFSO.CreateTextFile("abc.html")
objFile.WriteLine (newText)
objFile.Close


以下、リファレンスの URL です。
http://msdn.microsoft.com/ja-jp/library/cc392451.aspx

id:takanii

ありがとうございます!

2013/03/03 14:29:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません