C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 文字列中のネストされたHTMLタグの抽出


(過去ログ 126 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■74931 / inTopicNo.1)  文字列中のネストされたHTMLタグの抽出
  
□投稿者/ サムスミス (1回)-(2015/02/10(Tue) 12:37:13)

分類:[VB.NET/VB2005 以降] 

使用言語:VB2013

以下のようなspanタグを含むテキストがあったとします。

・・・<span class="cls1">これは<span class="cls2">サンプル</span>です。</span>・・・

ここで、一番内側のspanタグの内容、つまり

<span class="cls2">サンプル</span>

を抽出したいのですが、良い方法はないでしょうか?

抽出条件は以下の通りです。
・ネストされていないspanタグはすべて抽出する。
・spanタグがネスト状態の場合、一番内側のもののみを抽出する。
・spanタグの属性(上の例だとclass属性など)は一切考慮しない。


要は、spanの開始タグの後、spanの開始タグが登場せず、spanの終了タグが登場する所を
探せばよく、正規表現というものを使えば楽なのではないかと思い、この勉強を始めましたが、
今回のパターンを正規表現で書くとどのように表現できるのでしょうか?

<span(\s+[^>]*)?>(ここがさっぱり分かりません)</span>

よろしくお願いします。
引用返信 編集キー/
■74937 / inTopicNo.2)  Re[1]: 文字列中のネストされたHTMLタグの抽出
□投稿者/ Azulean (436回)-(2015/02/10(Tue) 22:29:00)
回答でなくて申し訳ないのですが、HTML コメントはどうなるのでしょうか。
考慮しなくて良いのかどうか。


<span class="aaa">てすと<!-- </span> -->テスト</span>

まじめにやろうとすると、正規表現だけでは無理になるので、どこまで割り切るのかなと感じた次第です。
引用返信 編集キー/
■74948 / inTopicNo.3)  Re[2]: 文字列中のネストされたHTMLタグの抽出
□投稿者/ サムスミス (2回)-(2015/02/12(Thu) 14:39:44)
Azulean様、ありがとうございます。

> 例
> <span class="aaa">てすと<!-- </span> -->テスト</span>
>
> まじめにやろうとすると、正規表現だけでは無理になるので、どこまで割り切るのかなと感じた次第です。

コメントはないものとして考えます。

今、正規表現を勉強していますが、否定(!演算子)というものがあることを知りました。
これを使えばもしかしたら上手くいくかもしれませんので、もう少し調べてみます。
引用返信 編集キー/
■74953 / inTopicNo.4)  Re[3]: 文字列中のネストされたHTMLタグの抽出
□投稿者/ サムスミス (3回)-(2015/02/13(Fri) 10:57:59)
出来ました!
以下のパターンで上手くいきました。

<span(\s+[^>]*)?>(?!.*<span(\s+[^>]*)?>).*?</span>

一応、解決とさせて頂きますが、
もし問題点があるようでしたら、ご指摘いただけると幸いです。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -