みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

正規表現でテキストの中身を置換したい(VBS)

初心者で、もしかしたらすっごく恥ずかしい事を聞いているかも知れませんが・・・

テキストファイルの中を正規表現を使って検索し、指定(固定)文字列と置換したいのですが、どうもうまく行きません。
ソースは以下のような物です。
-----
Set FS = CreateObject("Scripting.FileSystemObject")
Set ts=Fs.OpenTextFile("C:\Program Files\ABC\EFG.txt",1)
myStr=ts.ReadAll

repStr = "NG_PATH =D:\ABC\HIJ"
Set objRE = New RegExp
objRE.Pattern = "^NG_PATH.*=C:\\Program\sFiles\\ABC\\HIJ"
objRE.IgnoreCase = True
objRE.Global = True
newStr = objRE.Replace(myStr,repStr)
ts.Close

Set ts = FS.OpenTextFile("C:\Program Files\ABC\EFG.txt",2)
ts.Write newStr
ts.Close
-------
●ポケットリファレンスの内容を見て、組み合わせながら作っています ^_^;
●置換対象ファイルの中をobjRE.Patternで指定している内容で検索すると見つかります。
●置換対象ファイルの更新日時を確認すると、VBS実行時間で更新されています。

それから「myStr」や「newStr」は、任意の変数を宣言して、そっちを使う事って出来ますか?

投稿日時 - 2004-03-08 10:33:10

QNo.799971

困ってます

質問者が選んだベストアンサー

あっ、ごめんなさい、嘘ついてしまいました。
自分で勝手に
objRE.Multiline = True
を追加してました。(^^;
どうやらコレが必要のようです。
追加する場所は
objRE.Pattern = "^NG_PATH.*=C:\\Program\sFiles\\ABC\\HIJ"
objRE.IgnoreCase = True
objRE.Global = True
の辺りです。

投稿日時 - 2004-03-09 00:04:25

お礼

\(^o^)/ ありがとうございます!!
無事置換されました。

MSDNのHPで確認しましたが、tsukasa-12rのご指摘のように、objRE.Multiline = True を入れてないと
ハットとかダラーとかと影響が出るんですね、きっと。

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

投稿日時 - 2004-03-09 00:36:29

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

C:\Program Files\ABC\EFG.txt の中身ですが、
>NG_PATH = C:\Program Files\ABC\HIJ
のように = の後にスペースが入ってたりしてませんか?
試しにやってみましたら、ちゃんと置換できてましたよ。

投稿日時 - 2004-03-08 17:38:12

補足

回答ありがとうございます。

でも、依然置換できません(T_T)
スペースをとってみたり、逆にダメ元で入れてみたりしたのですが。。。

でも、きっとtsukasa-12rさんの仰るレベルの問題だと言う気がしています。

投稿日時 - 2004-03-08 23:01:50

あなたにオススメの質問