• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【正規表現】行頭がhttp以外の行列を消したい)

【正規表現】行頭がhttp以外の行列を消す方法

このQ&Aのポイント
  • 1000行以上のテキストデータ(htmlのソース)に100行ほどのhttpではじまるURLがあります。このURL以外を消したいのです。
  • テキストエディターの正規表現の否定になると思ったのですが、何度やってもうまくいきません。
  • ご教示いただけると助かります。

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.6

EmEditorは、UNIX系のPOSIXより拡張されたPerl並みの正規表現がそのまま利用できますから、その手法で行くと、特殊な手法は必要なくごく普通に 検索する文字列 ^(?!http:)[^\n]*\n 置換する文字列         は記入しない で置換できるはずです。  POSIX系の正規表現が扱えるテキストエディタでしたら、

tokyoshiro
質問者

お礼

ありがとうございます。できました!!!! なかなか手持ちのアプリケーションでできなくて、いろんなフリーソフトを 昨夜山のようにDLしましたが、さっぱりできず途方にくれていました。。。 これで今日の作業が朝から叶います!!!本当に感謝します!! みなさんに感謝いたしますが、 私の手持ちのEmEditorでご回答いただきましたORUKA1951様をベストアンサーとさせていただきます。 本当にありがとうございました。

その他の回答 (5)

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.5

>『vivi』と『Em-editor』 いや~、あいにく両方共まったく見たことも触ったこともないので何とも…。自分はもう10年来、テキスト系は『秀丸』オンリーの環境なので。 ただエディタが環境が変わっても正規表現は変わらないと思うので、前述の例文で通らなければ、何かそちらの環境のみの特殊な事情があるのかな?もしかしてUNIX系?だとしたら自分にはお手上げです。 あ、もしかしたら例文の正規表現の文末の「\n」を削れば通るかも? P.S. ここの解説によれば少なくとも『Em-editor』には正規表現で否定マッチが可能みたいなので、 >http://jp.emeditor.com/help/howto/search/search_regexp_syntax.htm …何か色々やれば出来るとは思うんですが。 P.P.S. 何人かの回答者が提示してる様に、perlとかphpみたいなテキストを直に弄れる系の環境が走ってるのなら。そっちを利用した方が、特に項目数やファイル数が多い場合は便利かと思います。エディタ系内蔵の正規表現だと、何かと制限が付いてる場合も多いので。 他には自分も『秀丸』でよく使うイカサマ手法ですが。1回の置換で全てをやろうと思わない事。2回~3回に分けて、段階的に置換処理を適用させて、最終的に自分の欲しい結果にする方法です。

tokyoshiro
質問者

お礼

再度のご回答本当にありがとうございます。 大変お手数おかけして、感謝するばかりです。 はい、頂いた例文をもとに >例文の正規表現の文末の「\n」を削れば通るかも? も試してみたのですが、同じメッセージがでてしまいました。 Webで調べつつ頂いた例文を解読改良しながら試してみたのですが 私の能力では無理でした。。情けない。。 今後に向けて正規表現ももっと勉強しなくてはいけませんね。 お話本当に勉強になりました。 心より感謝申し上げます。ありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

コマンドプロンプトで、 findstr /b http 入力ファイル >出力ファイル

tokyoshiro
質問者

お礼

ありがとうございます。 初心者レベルなので、理解できずにごめんなさい。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

SED(steam editor)の仕事だと思いますが、perlだと配列に読み込んで open(IN,"in.txt"); open(OUT,"out.txt"); while(<IN>) { if(m#^http://#){ print OUT $_; } } close(IN); close(OUT); SEDだと、 sed -n -e '/^http:/p' /out.txt | more で数万行あっても一瞬で終わる。

tokyoshiro
質問者

お礼

ありがとうございます! Sed未経験でしてフリーのソフトをDLしたりしてみたのですが windows8に合うものがなく、実現できませんでした。。 今度触れる機会がありましたら、やってみたいと思います。 勉強になりました。 丁寧なご回答ありがとうございました。

  • 4017B
  • ベストアンサー率73% (1336/1814)
回答No.2

正規表現で否定マッチさせるのなら、  ^(?!http).+\n ~これで「行頭がhttpで始まる以外の文字列」にマッチすると思われ…。つまりこれでマッチした文字列を削除すれば、後にはhttp~だけが残る…はず?

tokyoshiro
質問者

補足

早速ありがとうございます。 早速試してみたのですが、うまくいきませんでした。。 「検索文字列が無効です」と出てしまいます。 きっと4017Bさんの環境ではうまくいくのですよね。すみません。。 お使いのテキストエディターを宜しければ教えていただけないでしょうか? 私はフリーのテキストエディタのviviとEm-editorを使っております。 ご面倒おかけいたします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「テキストエディター」にもよるからなぁ. ちょっと手間をかけていいなら 「残したい行」だけからなるファイルを作る→元のファイルにコピーする という方針もある.

tokyoshiro
質問者

補足

早速ありがとうござます。 テキストエディターはviviとEmeditorを使っています。 残したい行が(全部で1000行超え中)ランダムに100行ぐらいあるのですが >>「残したい行」だけからなるファイルを作る→元のファイルにコピーするという方針 とはどのようなものになるのでしょうか?

関連するQ&A

専門家に質問してみよう