- ベストアンサー
正規表現で置換する方法を教えてください
- 正規表現の置換方法について詳しく教えてください。対象とする部分以前または以後の内容を削除する方法についても知りたいです。
- 具体的には、<div id="hogehoge">という記述以前の全ての内容を削除する方法と、<!--//hogehohe-->以降の全ての内容を削除する方法について教えてください。
- 正規表現の置換では、対象をもとに以前または以後の指定で置換することは可能ですか?お知恵をお借りできればと思います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
notepad++ で確認 http://notepad-plus-plus.org/ CTRL+H または メニュー/検索/置換 から「置換」のダイアログを開き 検索文字列: ^.+(<div id="hogehoge">) 置換文字列: $1 検索モード: 正規表現 . matches newline: チェックを入れる (ファイル先頭まで削除する場合) . matches newline: チェックしない (同じ行の頭まで削除する場合) 置換ボタンを押す にて「以前の記述を全て削除」ができます 検索文字列: (<!--//hogehoge-->).+$ なら「以降の記述は全て削除」です
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
普通にエスケープシーケンスと正規表現を併用できるエディタだと たとえば 「\(.*\n\)*\(<div id="hogehoge">\)」を「\2」に変更するような処理になります。
- kmee
- ベストアンサー率55% (1857/3366)
> 何かを対象にする置換は調べたところ見つかったのですが、対象をもとに以前、以後という指定での置換が分かりません。>< 考え方としては 先頭~区切りのパターン~最後 に一致させ、それを 区切りのパターン~最後 に置換すれば「先頭の削除」 先頭~区切りのパターン~最後 に置換すれば「以降の削除」になります。 他にも、(対応している場合は)先読み/後読みを使うなど。 正規表現はシステム毎に違います。 なので、具体的なシステムが分からなければ、具体的な方法は示せません。 perlでは s/正規表現/置換パターン/ で、正規表現に一致する部分を 置換パターンに置き換えることができます。 s/// と書きましたが、実際は、sの直後が区切り文字となります。 /がよく使われるのですが、正規表現やパターンに / が多く使われるときは、違う文字を選択することもあります あと、「以前」「以後」というのは、 「ファイルの先頭から指定箇所まで」「指定箇所からファイルの最後まで」 なのでしょうか? 「行の先頭から指定箇所まで」「指定箇所から行の最後まで」 なのでしょうか? システムによっては、後者にしか対応していないこともあります。 オプションで切り替えるものもあります。
- Ogre7077
- ベストアンサー率65% (170/258)
perl 風に書くなら s|^.+(<div id="hogehoge">)|$1|; # 以前を削除 s|(<!--//hogeohe-->).+$|$1|; # 以降を削除
お礼
有難うございます。 すみませんご説明不足でした。 出来れば、普通のエディタからの置換方法をお願いできればと思います。 エディタは特に指定はありません、対象のエディタを用意いたしますのでよろしくお願いいたします。