複数のhtmlファイル内の文字列を一括置換を考えています。

検索文字列のパターン(例)
1.<body bgcolor=”#ffffff” MARGINWIDTH=”0” MARGINHEIGHT=”0” LEFTMARGIN=”0” TOPMARGIN=”0”>

2.<body>

3.<body bgcolor=”#cccccc”>


置換え後の文字列
1.<body bgcolor=”#ffffff” MARGINWIDTH=”0” MARGINHEIGHT=”0” LEFTMARGIN=”0” TOPMARGIN=”0”><div align=”center”>xxx</div>

2.<body><div align=”center”>xxx</div>

3.<body bgcolor=”#cccccc”><div align=”center”>xxx</div>


というような、感じにしたいのですが、置換ソフトかなんかで、可能でしょうか?
検索文字列は、bodyタグ以外は、様々なパターンがあり、全てを把握できておりません。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答11件)

id:tom_brown No.1

回答回数259ベストアンサー獲得回数0

ポイント10pt

http://www.shoshinsha.com/hp/tools/substi.htm

複数HTMLファイルの置換

URLの方法で可能ですが、こういう時のために、

スタイルシート、Java Script があります。

http://www.tohoho-web.com/css/basic.htm#Link

とほほのスタイルシート入門(基礎知識)

外部ファイルのスタイルシートを作り、

複数のHTMLファイルからそのスタイルシートを呼び出す方法。

id:ebagos

置換ソフトを利用したいのですが、こういう、似てはいるけど、何パターンもある検索文字列を置換えすることはできないのでしょうか?

2006/01/28 16:04:31
id:vjuice No.2

回答回数5ベストアンサー獲得回数0

ポイント10pt

http://www.sirmiles.com/software/repl_ace.htm

SirMiles Central Headquarters - ソフトウェア

Repl-Aceはどうでしょう?

特徴

http://www.sirmiles.com/software/repl_ace/contents/topics.htm


正規表現も使えるので様々なパターンに柔軟に対応できると思います。

id:ebagos

ありがとうございます。そのソフトを使おうと思っています。

質問の内容のようなパターンの場合の、具体的な置換方法を教えてください。

2006/01/28 16:14:27
id:dacodaco_aichan No.3

回答回数3ベストアンサー獲得回数0

ポイント10pt

http://www.dreamhive.co.jp/dhappli/grepreplace.html

DH-APPLI-複数行一括置換 GrepReplace : 株式会社ドリームハイブ

下方にある

GrepReplace Ver.0.0.4.94 (インストーラ形式)

あるいは

GrepReplace Ver.0.0.4.94 (ZIP形式)

のソフトで希望の作業は出来ます。

複数html同時に出来ますし、また複数行の置換も出来ます。

また多層階層(フォルダ配下のフォルダにあるファイル)にも対応出来ますし

置換にかかる時間も高速な方だと思います。

id:ebagos

ありがとうございます。

申し訳ありませんが、ソフトの使用方法ではなく、

1.と2.と3.のパターンのような場合に一括で置換え(一度の置換えで)する方法を教えてください。

正規表現かなにかで、できるのでしょうか?

2006/01/28 16:26:54
id:satanii No.4

回答回数61ベストアンサー獲得回数3

ポイント10pt

http://www.megasoft.co.jp/mifes/

テキストエディタ MIFESシリーズ-製品情報-メガソフト株式会社

ちょっと高いですけど、フォルダごとにまとめて複数ファイルの中身を一気に置換する『グローバル置換』が、このソフトならできます。ver5まではShift-JISのみ対応で、ver.6以降はUTF-8などの文字コードにも対応しています。


他にも類似のエディターがあるかもしれませんが、慣れてしまったのでこれ以外は使う気にならないですね。

http://www.megasoft.co.jp/miw7/index.html

テキストエディタ MIFES for Windows Ver.7.0-MIFESシリーズ-製品情報-メガソフト株式会社

もしかするといちいち置換するより、align=centerに相当する部分をスタイルシートで指定してしまった方が早いかも知れませんね。

id:harg No.5

回答回数35ベストアンサー獲得回数0

ポイント10pt

http://www.hatena.ne.jp/1138429819#

人力検索はてな - 複数のhtmlファイル内の文字列を一括置換を考えています。 検索文字列のパターン(例) 1.<body bgcolor=”#ffffff” MARGINWIDTH=”0” MARGINHEIGHT=”0” LEFTMARGIN=..

アドレスはダミーです。

Repl-Aceの場合は

検索文字列を、正規表現を使用するで

(<body bgcolor=”#ffffff” MARGINWIDTH=”0” MARGINHEIGHT=”0” LEFTMARGIN=”0” TOPMARGIN=”0”>|<body>|<body bgcolor=”#cccccc”>)

置換後を

$&<div align=”center”>xxx</div>

とすればよいです。○|×が、○もしくは×という意味です。また、$&は、検索文字列がマッチした部分の文字を表します。

id:ebagos

ありがとうございます。

参考になります。

でも、この方法だと、やはり、検索文字列のパターンを特定しないとダメですよね。

2006/01/28 17:18:09
id:vjuice No.6

回答回数5ベストアンサー獲得回数0

ポイント10pt

http://www.sirmiles.com/software/repl_ace/contents/regexp.htm

Repl-Ace でサポートする正規表現について

はずしているかも知れませんが。。。

Repl-Aceの場合、一度に複数の検索文字列、置換文字列を指定できるので、上記のパターンをそのまま指定すればOKのような気がしますけど。。。。

ただ厳密にやる場合にはそれぞれの検索文字列指定箇所で、正規表現を使用した方が良いと思いますが。

例えば2の場合で、<body>が行頭から始まり、末尾は改行だけであるということがあらかじめわかっている場合は検索文字列に

¥A<body>¥Z

(これはRepl-Ace独自の正規表現)

あるいはオプションのマルチラインモードをチェックしておいて

^<body>$

と指定しておくといった具合です。

Repl-Aceでの正規表現は上記のURLを参照してください。

id:ebagos

ありがとうございます。

すみません。質問の仕方が悪いようです。

置換えしないといけないページが4000ページあり、bodyタグの後に、決められたタグを挿入したいのですが、ページによっては、bodyタグに、topmargin等が設定されていて、検索文字列を特定できません。

2006/01/28 17:26:33
id:tenman No.7

回答回数13ベストアンサー獲得回数0

ポイント10pt

http://sample.com/

Sample.com - samples, free samples, giveaways, free trials, free stuff, product samples, and much more!

話は、どんな正規表現を使えばいいかという話になってきているようですが、


1<body bgcolor=”#ffffff” MARGINWIDTH=”0” MARGINHEIGHT=”0” LEFTMARGIN=”0” TOPMARGIN=”0”>

2<body bgcolor=”#ff0000” MARGINWIDTH=”5” MARGINHEIGHT=”5” LEFTMARGIN=”0” TOPMARGIN=”0”>


上記のような違いは、一つの正規表現で置換できる可能性があります。


例えば、秀丸といったテキストエディタで、その部分を置換しようとすると。

1<body bgcolor=”#ff0000” MARGINWIDTH=”5” MARGINHEIGHT=”5” LEFTMARGIN=”0” TOPMARGIN=”0”>

<p>...............</p>

2<body hohohoho......>

<p>...............</p>

3<body >

<p>...............</p>

こんなソースなら、1から3まで<body.+¥n 等とすると、削除や置換できます。


<body hohohoho......><p>...............</p>


こんなソースなら、(改行がない)とすると上のような簡単なやり方では、マッチしません。

正規表現エンジンと呼ばれるものも、いくつか種類があります。


検討中のプログラムが試用できるのであれば、まずは、テスト的に置換してみるのが早道かもしれません。

id:bonlife No.8

回答回数421ベストアンサー獲得回数75

ポイント22pt

Repl-Aceにて以下のように指定すれば良いと思います。


[探索ディレクトリ:(D)]を参照して選びます。

サブフォルダも対象にするなら[サブフォルダも探す(U)]にチェックを入れておきます。


[探索ファイル名(ワイルドカード使用可):(N)]は、全ファイルを対象にする場合、何も入力せずに[探索開始(S)]ボタンをクリックします。

対象を絞りたい場合は *htm などと入力してください。


[検索文字列:(F)]

<body.*>


[置換文字列:(R)]

$&<div align=”center”>xxx</div>


[オプション:]

正規表現を使用する(E)にチェック


とした状態で下にある[一括実行(X)]をクリックすれば上記の条件を満たす置換が可能です。


<body.*>という正規表現で <body の後に任意の文字0文字以上が続いた後、 > までを表します。

id:ebagos

ありがとうございます。

できました!

2006/01/28 23:31:11
id:ttamo No.9

回答回数175ベストアンサー獲得回数29

ポイント16pt

http://www.hi-ho.ne.jp/babaq/bregexp.html

�a�q�d�f�d�w�o �c�k�k

<body[^>]*>



$&<div align=”center”>xxx</div>


に置換すればいいのではないでしょうか。


[^>] は「> 以外の文字」という意味で、

* は、その左の文字の繰り返しを意味しますので、

<body[^>]*> は <body> にも <body align=”..”> にも

マッチします。

id:dacodaco_aichan No.10

回答回数3ベストアンサー獲得回数0

ポイント16pt

http://www.vector.co.jp/soft/win95/util/se162621.html

Devas(Windows95/98/Me / ユーティリティ)

回答者3ですが、3のソフトでは正規表現など対応していません。


「とにかくbodyタグの後ろに<div align=”center”>xxx</div>を挿入したい。」という

ことなんでしょうか?


それならば上記URLの「Devas」というフリーソフトではどうでしょうか。


ソフト左下のプルダウンリストを「正規表現検索」に切り替えて「検索文字列に」

<body.*?>

を入力して「検索」。これで


<body

で始まり

>

で終わる


文字列を検索できます。つまり

1.<body bgcolor=”#ffffff” MARGINWIDTH=”0” MARGINHEIGHT=”0” LEFTMARGIN=”0” TOPMARGIN=”0”>

2.<body>

3.<body bgcolor=”#cccccc”>

の他にどんなパターンのbodyタグでも検索で引っかかってくれるわけです。


次に検索結果ウィンドウにある「置換文字列に」

¥0<div align=”center”>xxx</div>

と入れて「チェックされたものを置換」ボタンを押すと<body>タグの後ろに

<div align=”center”>xxx</div>が挿入されます。

「¥0」は一致した文字列全体(つまり<body bgcolor=”#cccccc”>等のbodyタグ)を表します。


ご参考:ソフトレビュー

http://www.vector.co.jp/vpack/browse/pickup/pw5/pw005577.html

id:ebagos

参考になりました。

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

2006/01/28 23:31:45
id:watson No.11

回答回数59ベストアンサー獲得回数2

ポイント16pt

今回であれば、かつ、TextSSなら、ワイルドカードを使えばチョー簡単です


検索文字列

<body*>

置換文字列

<body*><div align=”center”>xxx</div>


なお、「<BODY *>」としても良いですね

「*」は、任意のゼロ文字または複数文字を示すワイルドカードです


ただし、検索文字列の中でワイルドカードに対応する部分を、置換文字列に挿入?する設定が必要です


TextSSでは、ワイルドカードを置換文字列にも使えるのでチョー便利です


TextSSの作者サイトは閉鎖されてしまってますが、今回であればソフト添付の説明書で解るでしょう

  • id:nmyg3030
    /<body¥s([a-z¥-A-Z]=¥"(.+)¥"+)>/

    /<body¥s([a-z¥-A-Z]=¥"(.+)¥"><div ¥/>/
    でおkじゃないの?
  • id:nmyg3030
    /<body([a-zA-Z¥-]=¥"(.+)¥"+)>/

    /<body(.+)><div>/
    だったwww

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません