- ベストアンサー
秀丸で正規表現を使って置換
あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#5 の補足に対する回答です。 >検索キーワード中の、最後の.htmlの前の\マークにはどのような意味がある >のでしょうか? 正規表現におけるピリオド(.)は、改行以外の任意の一文字を表すメタ文字 です。 円記号(バック・スラッシュ)は、正規表現のメタ文字と言う機能を無効化 (エスケープ)します。 --------------------------------------- (1) (2) (3) (4) .html ahtml xhtml ●html --------------------------------------- 検索キーワード“.html”では、(1,2,3,4)すべてにヒットします。 検索キーワード“\.html”では、(1)にのみヒットします。 これで理解していただけるでしょうか。 ---- より詳しくは、「秀丸エディタ - ヘルプ」の「キーワード」から「正規表現」 で検索してみてください。また、WEBには正規表現を詳しく解説したサイトが あります。Googleなどで検索して、訪問してみてください。ただし、正規表 現には“方言”(ソフトごとの違い)があるので、そのことを認知しておい てください。
その他の回答 (5)
- Bo_Bo
- ベストアンサー率65% (97/149)
#4 です。 回答を訂正します。 ------------------------------- 【検索キーワード】 .+/[^,]+\f.+\f\.html 【置き換えキーワード】 \0\2 ------------------------------- #4 の回答でも正しく置き換えできますが、不要な複雑さを回避しました。 失礼しました。
お礼
たびたびありがとうございます。 検索キーワード、理解するのに時間がかかりましたが、調べながらなんとか意味がわかるまでになりました。 ところで、検索キーワード中の、最後の.htmlの前の\マークにはどのような意味があるのでしょうか?再び質問になってしまいますが、よろしくお願いします。
- Bo_Bo
- ベストアンサー率65% (97/149)
------------------------------- 【検索キーワード】 .+/\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
お礼
正規表現にも、いろいろな表現の仕方があるのですね。 大変勉強になりました。 これを機にもっと勉強したいと思います。 ありがとうございました。
- k_misaki
- ベストアンサー率36% (17/47)
まずは、正規表現が苦手でも、ご質問のような状況で簡単に置換する方法を。 ファイル内(複数ファイルでも可)の該当する文字列をgrepで拾い出して 結果ファイルの該当箇所をすべて abc/xxx.html に変更し、一括で置換を すると便利です。たとえばこのようなマクロが利用できます。 http://hide.maruo.co.jp/lib/macro/greprep100.html あくまで正規表現で、ということであれば、わたしがよく参考にしている 場所は、こちらです。 http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html 直接的な回答ではありませんが、お役に立てれば。
お礼
秀丸のマクロ、ぜひ利用してみたいと思います。 ためになるサイトの紹介ありがとうございました。 正規表現についてもっと勉強したいと思います。
- acacia7
- ベストアンサー率26% (381/1447)
追加情報。 検索前に\f~\f~\fと\fで区切った場合、 最初の\f以前の部分にマッチするところを \0としてその後、\1,\2と名づけられ、 置換語の文字列にいれることが出来ます。
お礼
早急に回答いただきましてありがとうございました。 \fで括ればよかったんですね、大変ためになりました。 どうもありがとうございました。
- tatsu99
- ベストアンサー率52% (391/751)
検索文字列 abc/\f[a-zA-Z0-9]*\f,.*\.html 置換文字列 abc/\1.html としてください。 秀丸はVersion3.19で確認しました。
お礼
早急に回答いただきましてありがとうございました。 解決しました。 おかげさまで作業が大幅に短縮できました。 どうもありがとうございました。
お礼
よくわかりました。ありがとうございました。 エスケープの意味かな?とも思ったんですが、/の前にエスケープの\がなかったので「あれ?」と疑問に思いました。/ は、メタ記号の扱いではないということですかね?自分の中で/(バックスラッシュ)と\(ドル)が混同しています…。
補足
お礼を投稿したあとすぐに気づきました。 「/」マークのことをバックスラッシュだと思っていました。違いますよね。お恥ずかしい限りです…。 これですべて納得です。 ありがとうございました!