正規表現で置換する方法を教えてください

このQ&Aのポイント
  • 正規表現の置換方法について詳しく教えてください。対象とする部分以前または以後の内容を削除する方法についても知りたいです。
  • 具体的には、<div id="hogehoge">という記述以前の全ての内容を削除する方法と、<!--//hogehohe-->以降の全ての内容を削除する方法について教えてください。
  • 正規表現の置換では、対象をもとに以前または以後の指定で置換することは可能ですか?お知恵をお借りできればと思います。
回答を見る
  • ベストアンサー

正規表現?の置換方法について!(以降削除等)

置換方法についてお詳しい方よろしくお願いいたします。 現在行いたいことは、ある対象とする記述以前、または以降の内容を削除したいと考えております。 具体的には、仮に<div id="hogehoge">とあったとします。 この場合、これ以前の記述を全て削除の置換を行いたいと思っています。 どんな記述があっても、<div id="hogehoge">の記述以前は全削除という置換です。 また、これは以前なのですが、この記述が終わったマーク、こちらも例えばですが<!--//hogehohe-->という記述終了を指定するコメントがあったとします。 その場合、<!--//hogehohe-->以降の記述は全て削除という指定を行いたいと思います。 伝わりますでしょうか。。。 何かを対象にする置換は調べたところ見つかったのですが、対象をもとに以前、以後という指定での置換が分かりません。>< お詳しい方いらっしゃいましたらアドバイスを頂けないでしょうか。 宜しくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.4

notepad++ で確認 http://notepad-plus-plus.org/ CTRL+H または メニュー/検索/置換 から「置換」のダイアログを開き 検索文字列: ^.+(<div id="hogehoge">) 置換文字列: $1 検索モード: 正規表現 . matches newline: チェックを入れる (ファイル先頭まで削除する場合) . matches newline: チェックしない (同じ行の頭まで削除する場合) 置換ボタンを押す にて「以前の記述を全て削除」ができます 検索文字列: (<!--//hogehoge-->).+$ なら「以降の記述は全て削除」です

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

普通にエスケープシーケンスと正規表現を併用できるエディタだと たとえば 「\(.*\n\)*\(<div id="hogehoge">\)」を「\2」に変更するような処理になります。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> 何かを対象にする置換は調べたところ見つかったのですが、対象をもとに以前、以後という指定での置換が分かりません。>< 考え方としては  先頭~区切りのパターン~最後 に一致させ、それを  区切りのパターン~最後 に置換すれば「先頭の削除」  先頭~区切りのパターン~最後 に置換すれば「以降の削除」になります。 他にも、(対応している場合は)先読み/後読みを使うなど。 正規表現はシステム毎に違います。 なので、具体的なシステムが分からなければ、具体的な方法は示せません。 perlでは s/正規表現/置換パターン/ で、正規表現に一致する部分を 置換パターンに置き換えることができます。 s/// と書きましたが、実際は、sの直後が区切り文字となります。 /がよく使われるのですが、正規表現やパターンに / が多く使われるときは、違う文字を選択することもあります あと、「以前」「以後」というのは、 「ファイルの先頭から指定箇所まで」「指定箇所からファイルの最後まで」 なのでしょうか? 「行の先頭から指定箇所まで」「指定箇所から行の最後まで」 なのでしょうか? システムによっては、後者にしか対応していないこともあります。 オプションで切り替えるものもあります。

  • Ogre7077
  • ベストアンサー率65% (170/258)
回答No.1

perl 風に書くなら s|^.+(<div id="hogehoge">)|$1|; # 以前を削除 s|(<!--//hogeohe-->).+$|$1|; # 以降を削除

yuyukina
質問者

お礼

有難うございます。 すみませんご説明不足でした。 出来れば、普通のエディタからの置換方法をお願いできればと思います。 エディタは特に指定はありません、対象のエディタを用意いたしますのでよろしくお願いいたします。

関連するQ&A

  • 秀丸エディタ 正規表現 指定文字範囲内の文字を置換

    秀丸エディタで改行含む複数行の文字列を置換したいのです。 たとえばHTMLファイルの ■置換前 <div id="Header"> ~~ ~~ ~~ <!-- /Header --></div> ■置換後 <div id="Header"> AAAA <!-- /Header --></div> となるようにしたいですが 「~~」の中は規則性のある記述になっておりません。 文中に半角スペースが入っていたり、行頭のインデントが揃ってなかったり タグの順番も統一されておりません。 上記は例としてあげてますが実際は100行近くあり、ファイル数も数百ファイルあります。 ひとつだけ分かってるのは <div id="Header"> と <!-- /Header --></div> の記述は存在するので、この範囲内の文字列をどうにか選択できないか教えていただけないでしょうか。 正規表現でなくても実現できるフリーツールでも構いません よろしくお願いいたします。

  • 急ぎでお願いします!正規表現の置換について

    こんにちわ。 HTMLのコードを置換エディターで一括で書き換えたいと思っています。 例えば <h2 id="01"><img src="../imgs/dish/index_tit_01.gif" alt="サンプル" width="630" height="36" /></h2> というようなコードをaltの文字以外は削除して <h2 id="01">サンプル</h2> にしたい場合、検索する文字列、置換する文字列にはどのような正規表現を適用したらよいでしょうか? また<h2 id="01">が<h2 ="id=02">,<h2 ="id=03">と複数ある場合があるので、 できたらid=数字のところは01,02,03,04などにもまとめて適用させたいと思っています。 どうかご教授よろしくお願いします!!!

  • 正規表現でのフォルダ内削除について(バッチファイル

    バッチファイルの記述について教えてほしいです。 hogehoge(1).jpg hoghoge(2).jpg と(1)や(2)を削除したい場合、 どのような記述になりますでしょうか?

  • 正規表現で置換するための記述

    正規表現について質問です。 テキストファイル内の文字列に対して、URL以外の「&」を「&」に置換したいのですが、 普通に置換してしまうと、URL内の「&」も全角になってしまうため、 正規表現で回避しようと考えています。 この場合、正規表現はどのように記述すればよいか、教えていただけると大変助かります。 ---------------------------------------------------------------------- (成功例) ガチャピン&ムック http://hogehoge.jp/index.html?k=2011&id=0414 ↓↓↓↓↓↓ ガチャピン&ムック http://hogehoge.jp/index.html?k=2011&id=0414 ---------------------------------------------------------------------- また、正規表現を使わなくてもできるなど、別の提案もOKです。 質問に不備があれば、その旨ご指摘お願いいたします。 正規表現勉強中のため、何卒よろしくお願いいたします。

  • 正規表現で一発置換できるでしょうか?

    サイトにあるHTMLを読み込み、その中のリンク全てに target指定を追加して表示するPHPについてアドバイスをお願いします。 取込元のHTMLは↓な記述(全リンクにtarget指定は無い)  … <a href="http://bakubaku.com">ばくばく</a> …  … <a href="http://mogumogu.net">もぐもぐ</a> …  … <a href="http://karikari.org">かりかり</a> … これを、↓のように変換して出力したい  <a href="http://bakubaku.com" target="_brank">ばくばく</a>  <a href="http://mogumogu.net" target="_brank">もぐもぐ</a>  <a href="http://karikari.org" target="_brank">かりかり</a> とりあえず、  ・<a href…> のリストを preg_match_allで 抽出  ・要素数だけ 末尾の > を target="_brank"> に変換/入替 といった処理で結果は正しく出ますがパフォーマンス的に痛いですよね。 このような検索置換処理を、正規表現を使って、一発でできないものでしょうか? (すみません、、正規表現よく分かっていません、、)

    • ベストアンサー
    • PHP
  • 正規表現で少し複雑な置換がしたい

    Javaというよりも、正規表現について質問です。 (一応、言語はJavaで、String#replaceAllを使います) 以下のルールで与えられた文字列の置換を行う正規表現を考えていますが、なかなかうまくいきません。 1.正規表現で \w+:: にマッチする文字列を削除する。 2.ただし、'' (シングルクォーテーション)で囲われている文字列は   1.の対象としない 3.ただし、\' (シングルクォーテーションの前に\があった場合は)   シングルクォーテーションと認識しない。 例: 置換前  A * B \'' CCC.DD::EEE' FFF.GGG::HH ' III' 置換後  A * B \'' CCC.DD::EEE' FFF.HH 'III' 色々試してみたのですが、どうしてもうまくいきません。 正規表現が得意な方、教えていただけますでしょうか・・?

    • ベストアンサー
    • Java
  • 文字+改行コードの置換について

    文字+改行コードの置換についてご教授ください。 テキスト内の数字「9」とそれに続く改行コードのみ置換(削除)対象にしています。 全ての改行コードが対象ではないため、下記のようにエディタ(sakuraエディタ)で指定しました。 置換前: 9\r\n ※削除したいため、置換後の欄は空欄にしています。 しかし、この設定だと置換前の文字列を置換対象として認識しません。(検索対象としても) \r\n だけだと改行コードを認識するので、文字と改行コードのセットを認識していないようです。 指定に誤りがあるのでしょうか。詳しい方ご教授お願いします。

  • PHPの置換方法

    <?php $begin = 'あいうえおかきくけこさしすせそ'; $replace = 'か*'; $last = ''; $word = str_replace($replace, $last, $begin); php> 以上のようにプログラムを組んで$wordの出力を『あいうえお』のように『か』以降をすべて空白で置換というプログラムを作りたかったんですがうまくいきませんでした。指定した文字列以降を全部置換するには*は使えないんでしょうか?また、ほかに方法があればアドバイスをいただけるとうれしいです。

    • ベストアンサー
    • PHP
  • 正規表現での複数箇所の文字列置換について

    文字列から特定の文字を検出し、 HTMLタグに置換するスクリプトを作成しようとしています。 例: 元の文字列:xxxxxx[id:1]xxxx[id:2]xxxx  ↓ 置換後の文字列: xxxxxx (<A>タグによるリンク。idが1番のタイトルをDBから参照) xxxx (<A>タグによるリンク。idが2番のタイトルをDBから参照) xxxx 要求している処理順序:  1:文字列中から[id:xxx]を検出して<A>タグに変換  2:id:xxx の xxx部分(数字)を抽出  3:2で得た数字でSQLを実行  4:DBから得た文字列で<A>タグを完成    <A href="test.php?id=(2で得た数字)">(4で得た文字列)</A>  5:以上を[id:xxx]の個数分だけ繰り返し --- スクリプト: // 文字列 $str = "xxxxxx<br>[id:1]<br>xxxx<br>[id:2]<br>xxxx"; // 置換 $result = ereg_replace("\[id:([0-9]+)\]","<a href=\"test.php?id=\\1\">xxx</a>"; ここで、id: の次に続く数字を抽出して その数字を元にDBからデータを引っ張ってこようと思ってます。 // 抽出 $pregresult = preg_match("/[0-9]+/",$result,$match); $id = $match[0]; ここで $id に番号が入り、その番号でSQL文を作成したいのですが 文字列中に[id:xxx]がひとつだけなら正常に動作するのですが 二つ以上存在する場合、$id には最初に検出された数字(上記例では 1 ) しか入ってこないので、二つ目以降のidが認識できず困ってます。 複数の検出・置換対象を順次処理していく方法があれば ご教示いただければ幸いです。 もしくは、他にもっとスマートな方法があるのであれば ご提示いただければ幸いです。 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Dreamweaver MX 2004 検索置換を正規表現で 訂正版

    08/11/10 18:40に「Dreamweaver MX 2004 検索置換を正規表現で」という質問をしてますが、質問のないように誤りがありましたので、訂正版のスレッド(本スレッド)を作成します。 Dreamweaver MX 2004を使用しています。 検索は、正規表現で行なえるのですが、置換の入力欄に入力した正規表現がうまく働きません。 例: 検索対象: 「あいうえお」 「かきくけこ」 置換後: <あいうえお> <かきくけこ> 「検索および置換」ダイアログの「検索」入力欄に 「(.+)」(「」も入力) と入力する。 「検索および置換」ダイアログの「置換」入力欄に <\1>(<>も入力) と入力する。 この場合、検索対象はすべて検索されるが、置換ボタンを押すと <\1>(<>も置換後の文字列に含む) と置換されてしまう。 どのようにすれば、正規表現を利用した検索置換が正常に行なえるでしょうか? 詳細な解説が記載してあるサイトのURL等でも結構です。 よろしくお願いします。