- ベストアンサー
正規表現を使って文章を置換する方法
- 正規表現を使って文章の初めと終わりに特定の文字を追加することができます。
- 文章の初めには「いつも元気な山田太郎です。」と、終わりには「山田太郎でした。」を追加することができます。
- 具体的な置換方法は、正規表現の特定のパターンを指定して、文字列の置換を行うことができます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 複数行置換 ver.1.41 これで試してみました。 【先頭に文字を突っ込む方法】 「正規表現を使用」にチェック 「単一行モード」にチェック 置換前文字列 ^ 置換後文字列 いつも元気な山田太郎です。 ↑ 文字の後に2回改行しとく 【末尾に文字を突っ込む方法】 「正規表現を使用」にチェック 「単一行モード」にチェック 置換前文字列 $ 置換後文字列 山田太郎でした。 ↑ 文字の手前に2回改行しとく 但し、テキストファイルの最後に改行が行われていると、2回置換されて しまうようです。
その他の回答 (4)
- ki073
- ベストアンサー率77% (491/634)
一般的に言って可能です。 お使いのソフトが複数行を読み込んで、全体に正規表現が適用できれば多分できるかと。 私はRubyを主に使っていますが、これだと /.+/mで改行を含めた全文字列が指定できます。.(ピリオド)は改行を認識しませんのでmを指定することで改行もピリオドで認識させられるようにします。 質問者さんの場合には、前の「いつも元気な山田太郎です。」と後の「山田太郎でした。」の内容のファイルを2種類作っておいて、真ん中に本文のファイルをくっつけて出力したらどうですか? コンピュータのOSが何かわかりませんがUnixやOSXの場合は cat file_mae honbun file_ato >new_honbun のようになるようにバッチフィアルを作り一気に実行すればあっという間にできます。 Windowsでも同様の機能の命令はあるはずですから、それを使えばできるはずです。 ただ結合するだけでなく、本文を少し加工したいときには正規表現の出番です。
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
> ということは、正規表現では改行があってはダメということですね。 これ自体は可能です。 また、複数行の文章へのマッチも可能です。 しかし、『複数行の文章における1行目の先頭』や『複数行の文章における 最終行の末尾』というのは得られないと思います。 ^や$を指定しても、それは行先頭や行末尾であって、複数行に対する 最も先頭、末尾ではありません。 なので、1行目や最終行の文章が決まりきっており、他行で同一文字列が 存在しないならば、その文章の一部を検索対象とすれば見つけ出せる、 ということになると思います。 また、挿入・追加したい部分が文章の先頭、文章の末尾と分かり易い 部分にあるわけですから、プログラムコードを書くような環境でしたら、 正規表現を利用する必然性はないということになります。
- kmee
- ベストアンサー率55% (1857/3366)
正規表現の使い方や使える表現、置換対称等は、使うソフトや設定、プログラムの作り方等でまったく変わってきます。 何を使ってどうしたい、というのが無ければ答えようもありません。 一行単位でしか処理できないものなら「全てのケースでやるのは難しい/不可能」です。 文章でまず使わない文字列を必ず最初とか最後とかに入れることにする( 先頭に%%AISATU%%と入れることにして、「%%AISATU%%」を「いつも元気な山田太郎です。」に置換等)とかいった工夫が必要です。 改行も含めて全体で一つの「文字列」として処理できるものなら「先頭(大抵 ^ を使う)」を「いつも元気な山田太郎です。」に、という置換が使えます。 プログラムなら単純に前後に追加の方が楽でしょう。
お礼
回答ありがとうございます。 使うソフトはこれになります。 複数行置換 ver.1.41 http://www.vector.co.jp/soft/win95/util/se407023.html 正確に言うと、あるフォルダにテキストファイルが複数入っています。 それら各テキストファイルの上の部分と下の部分にある文章を挿入したいと思っています。 ソフトでは正規表現で置換が出来るので可能かと思ったのですが、難しいでしょうか?
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
正規表現自体は、その表現にマッチするものを抽出する為に 利用するわけであって、複数行にまたがる文章の先頭にどうの、 最後にどうのとするものではありません。 検索文字:^(?=今日は) 置換文字:いつも元気な山田太郎です。\r\n\r\n 検索文字:(?<=しょう。)$ 置換文字:\r\n\r\n山田太郎でした。 とかすれば出来るでしょうが、そんな方法で良いならば やれないことはないと思います。
お礼
回答ありがとうございました。 >複数行にまたがる文章 ということは、正規表現では改行があってはダメということですね。
お礼
回答ありがとうございます。 参考にさせていただきます。