

正規表現を使用し、複数のHTMLファイルのテーブルを
一括で抜き出そうとしています。
ファイルは 本文<table>残す部分</table>本文 となっています。
本文は各自異なる為、普通の置換え機能で、一気に削除できません。
調べてみた所、正規表現を使い、$`や$' を使うと、特定の文字列の
前や後を選択することができるようなのですが、具体的にどう使うか
がよく分からず、試行錯誤してみましたが、失敗してしまいました。
正規表現で、「より前」や「より後」を選択し、削除する方法が
ございましたら、教えて下さい。宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
正規表現は、不得手なのですが…
まず最初に、使用言語によって、正規表現の記述方法は違いますので、使用する文字が変わってきますし、オプションなども違うでしょう。
言語による違いは
http://www.kt.rim.or.jp/~kbk/regex/regex.html
なので、ここから後は雰囲気のみで読んでください。
------------------------------------------------------
最初の<table>が出てくるまで、最後の</table>以降などは
/^(.*?)<table>/ 、 /<\/table>(.*?)$/
などで対応できるかと思います。
<table>タグに属性が設定されている可能性を考慮するなら、「<table」までのほうが良いのかも。また、タグは大文字の可能性もあるりますし、途中に改行が含まれる可能性もあるので、オプション指定した方が良いでしょう。
一方で、複数のテーブルがある場合、例えば…(**は文字列)
**************
<table>*************</table>
**************
<table>*************</table>
とか、
**************
<table>*************
<table>*************</table>
**************</table>
みたいな場合、あるいはこれらの複合形なども考えると
テーブル以外を消すよりも、テーブルを抜き出した方が良いかも。
/(<table>.*?<\/table>)/
この場合でも入れ子のテーブルをどう処理するのかは、考えねばなりません。
(先に、内側を記号などに置き換えてから外側を検索するとか、あるいは一気に全部マッチさせるとか…)
さらには、コメント行やスクリプトなどの中に、これらのタグが出てくる可能性まで考えると、なかなか一筋縄ではいかなくなりますね。
おまけ HTMLタグの正規表現及びコメントタグの正規表現
http://www.din.or.jp/~ohzaki/perl.htm#HTML_Tag
大変詳しいご回答を下さり有り難うございました。
まったく無知な状態から、少し正規表現の特徴が分かりました。
Dreamweaver の機能だと、何故かソースに適用/正規表現を使用モード
にしても「マッチするデータがありません」となっていました。ので、
他のエディタ(jedit X) に変え、構文を Perl の設定にしてみたところ、
ご教授頂いた ^(.*?)<table> で、テーブル前を一括削除することが
できました。
テーブル以降の削除には、まだ失敗してしまいす。<\/table>(.*?)$
で検索すると、(前後の/ありでも、) 何も選択されない状態です。
今回の作業は、幸い、テーブルが一つあるだけのファイル群なので、
削除する方法にしようと思います。でもとても参考になります。
引き続き、テーブル以降の選択について、ご教授頂ける方
いらっしゃいましたら、宜しくお願いいたします。
No.6
- 回答日時:
こんばんは。
DreamweaverCS3で試してみましたが、
([\d\D]*<table>)|(</table>[\d\D]*)
で置換したところ、tableタグの前後を削除できました。
自分もまだ正規表現を勉強し始めたばかりなので、
もっとスマートなやり方があるかもしれませんが、
置換はできます、ということでご報告します。
tableタグの前の部分はすでに削除されたようですので
心配は不要かと思いますが、
#2さんのおっしゃるように、tableタグに属性がある場合は
<table>を<tableにすると検索に引っかかってくれます。
こんばんは、ご回答有り難うございます。
おお、無事成功しました!とても助かりました。
数百個分のファイルだったので・・
正規表現やプログラミング全般は、縁のない世界だと
思っていたのですが、皆さんのアドバイスも含め
必要性を強く感じる為、私も真剣に勉強をしようと思います。
本当に有り難うございましたm(_ _)m
No.5
- 回答日時:
#2です。
>テーブル以降の削除には、まだ失敗してしまいす。
え~~っと。
・・・・・・
すんません。
使用言語にもよりますが、メタキャラの「.」には改行が含まれない可能性もあります。
なので、\s*を付け加えないとうまくないかも…
ぅんっ?
・・・・ってーことは、前半のやつも [.\s]*? じゃないとダメっつーことかな?
むぐぅ・・このあたりがまさに「不得手」な理由ですぅ ^^;ゞ
再びご回答有り難うございますm(_ _)m
「.」に改行が含まれない場合もあるのですね。参考になります。
何故前半だけ成功するのか、私も謎です・・
でも相談にのって頂き有り難うございました!

No.4
- 回答日時:
私も正規表現は苦手なのですが、必要に迫られ同じような処理をするアプリケーションを作成しています。
私のアプリケーションは「HTML文の中で、ユーザーが注目する箇所を監視し、変更時に通知する」ものです。要するにHTML文の特定箇所を切り抜く必要があるわけです。監視するURLは、例えば「教えて!goo」で
http://oshiete1.goo.ne.jp/c260.html
を見て、最新の質問をピックアップします。
具体的方法は、正規表現で「前置マーク」「ターゲット」「後置マーク」を指定し、最初は「前置マーク」+「ターゲット」+「後置マーク」に該当する部分を切り取り、さらに「前置マーク」と「後置マーク」に該当する部分を削除します。
正規表現は
「前置マーク」:qa[0-9]+\.html">
「ターゲット」:.*
「後置マーク」:</a>
です。今テストしたところ「http GETに混入されるこのデータは何でしょうか」が抽出されました。
もちろん対象によりこの正規表現は変更する必要があります。多少参考にならないでしょうか?
アドバイス下さり有り難うございます。参考になります。
私は、こういった処理の考え方に慣れる必要がありそうです。
とても便利そうなソフトですので、心待ちにします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Access(アクセス) AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま 1 2022/11/17 15:45
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- 英語 ソシュール言語観による品詞、単語、辞書理解の誤り 4 2022/11/24 12:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSSで特定のテーブルだけに...
-
HTML tableのセルにtextareaを...
-
TABLEのセルの中の文字を行単位...
-
テーブルとテーブルの間隔について
-
HTMLエラーを自動修正するソフ...
-
HTML5で、テーブル内tdタグの高...
-
(HTML)Tableを任意の位置に置...
-
tableを画面中央に配置する方法
-
cssで、1行2段のtableを記述す...
-
<th>タグを使っても太字にしな...
-
fieldsetについて
-
テーブルのhrタグに下線を引く...
-
画面幅に合わせてテーブルのカ...
-
同じ幅指定のつもりなのに、ブ...
-
テーブルからはみ出します
-
テーブルデータを折り返して表...
-
html5のテーブル内でdivのタブ...
-
table表を横に並べる際の間隔指定
-
テーブルタグの中にdivを含めて...
-
テーブルの行を折りたたみたい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSSで特定のテーブルだけに...
-
テーブルとテーブルの間隔について
-
テーブル内のセル間にスペース...
-
<th>タグを使っても太字にしな...
-
TABLEのセルの中の文字を行単位...
-
table表を横に並べる際の間隔指定
-
HTML tableのセルにtextareaを...
-
スタイルシートで左側だけ色を...
-
同じ幅指定のつもりなのに、ブ...
-
ホームページのテキストを折り...
-
<fieldset>タグについて
-
HTML5で、テーブル内tdタグの高...
-
テーブルデータを折り返して表...
-
画面幅に合わせてテーブルのカ...
-
tableを縦に続けるとtable間の...
-
html5のテーブル内でdivのタブ...
-
HTMLのテーブルをExcelにCopy&P...
-
textareaの外側の文字が下付き...
-
<li>と<table>タグについて
-
(HTML)Tableを任意の位置に置...
おすすめ情報