プロが教える店舗&オフィスのセキュリティ対策術

あるファイルに関して、このような置換を行いたいです。

abc/xxx,yyy,zzz.html

abc/xxx.html

xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で
「abc/」と「,」と「.html」は固定の文字列になります。

そこで、秀丸で開いて、正規表現による検索で、
「abc/.*,.*,.*.html」
として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。
置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。
秀丸の置換機能でこのようなことは可能でしょうか?

正規表現に関してあまり詳しくないので教えてください。

A 回答 (6件)

#5 の補足に対する回答です。



>検索キーワード中の、最後の.htmlの前の\マークにはどのような意味がある
>のでしょうか?

正規表現におけるピリオド(.)は、改行以外の任意の一文字を表すメタ文字
です。
円記号(バック・スラッシュ)は、正規表現のメタ文字と言う機能を無効化
(エスケープ)します。

---------------------------------------
  (1)  (2)   (3)    (4)
 .html  ahtml  xhtml  ●html
---------------------------------------

検索キーワード“.html”では、(1,2,3,4)すべてにヒットします。
検索キーワード“\.html”では、(1)にのみヒットします。
これで理解していただけるでしょうか。

----
より詳しくは、「秀丸エディタ - ヘルプ」の「キーワード」から「正規表現」
で検索してみてください。また、WEBには正規表現を詳しく解説したサイトが
あります。Googleなどで検索して、訪問してみてください。ただし、正規表
現には“方言”(ソフトごとの違い)があるので、そのことを認知しておい
てください。

この回答への補足

お礼を投稿したあとすぐに気づきました。
「/」マークのことをバックスラッシュだと思っていました。違いますよね。お恥ずかしい限りです…。
これですべて納得です。
ありがとうございました!

補足日時:2004/06/28 19:29
    • good
    • 0
この回答へのお礼

よくわかりました。ありがとうございました。
エスケープの意味かな?とも思ったんですが、/の前にエスケープの\がなかったので「あれ?」と疑問に思いました。/ は、メタ記号の扱いではないということですかね?自分の中で/(バックスラッシュ)と\(ドル)が混同しています…。

お礼日時:2004/06/28 19:21

#4 です。


回答を訂正します。

-------------------------------
【検索キーワード】

.+/[^,]+\f.+\f\.html

【置き換えキーワード】

\0\2
-------------------------------

#4 の回答でも正しく置き換えできますが、不要な複雑さを回避しました。
失礼しました。
    • good
    • 0
この回答へのお礼

たびたびありがとうございます。
検索キーワード、理解するのに時間がかかりましたが、調べながらなんとか意味がわかるまでになりました。
ところで、検索キーワード中の、最後の.htmlの前の\マークにはどのような意味があるのでしょうか?再び質問になってしまいますが、よろしくお願いします。

お礼日時:2004/06/28 10:36

-------------------------------


【検索キーワード】

.+/\f[^,]+\f.+\f\.html

【置き換えキーワード】

\0\1\3
-------------------------------

上のキーワードで置き換えることが出来ます。
下の例文で正常動作することを確認しました。
 秀丸:Ver4.07
 正規表現DLL:HMJRE.DLL Ver1.10

abc/xxx,yyy,zzz.html
abc/aaaaa,bbbbbbbb,cc.html
abc/dd,eeeee,fffffff.html
dir/ggggggg,h,iii.html
dir/subdir/jjj,kkkk,lllll.html
   ▼
abc/xxx.html
abc/aaaaa.html
abc/dd.html
dir/ggggggg.html
dir/subdir/jjj.html
    • good
    • 0
この回答へのお礼

正規表現にも、いろいろな表現の仕方があるのですね。
大変勉強になりました。
これを機にもっと勉強したいと思います。
ありがとうございました。

お礼日時:2004/06/28 02:17

まずは、正規表現が苦手でも、ご質問のような状況で簡単に置換する方法を。


ファイル内(複数ファイルでも可)の該当する文字列をgrepで拾い出して
結果ファイルの該当箇所をすべて abc/xxx.html に変更し、一括で置換を
すると便利です。たとえばこのようなマクロが利用できます。
http://hide.maruo.co.jp/lib/macro/greprep100.html

あくまで正規表現で、ということであれば、わたしがよく参考にしている
場所は、こちらです。
http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_ …

直接的な回答ではありませんが、お役に立てれば。

参考URL:http://hide.maruo.co.jp/lib/macro/greprep100.html , http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_ …
    • good
    • 0
この回答へのお礼

秀丸のマクロ、ぜひ利用してみたいと思います。
ためになるサイトの紹介ありがとうございました。
正規表現についてもっと勉強したいと思います。

お礼日時:2004/06/28 02:13

追加情報。


検索前に\f~\f~\fと\fで区切った場合、
最初の\f以前の部分にマッチするところを
\0としてその後、\1,\2と名づけられ、
置換語の文字列にいれることが出来ます。
    • good
    • 0
この回答へのお礼

早急に回答いただきましてありがとうございました。
\fで括ればよかったんですね、大変ためになりました。
どうもありがとうございました。

お礼日時:2004/06/28 02:08

検索文字列 abc/\f[a-zA-Z0-9]*\f,.*\.html


置換文字列 abc/\1.html
としてください。
秀丸はVersion3.19で確認しました。
    • good
    • 0
この回答へのお礼

早急に回答いただきましてありがとうございました。
解決しました。
おかげさまで作業が大幅に短縮できました。
どうもありがとうございました。

お礼日時:2004/06/28 02:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!