VBで正規表現で<td></td>タグで囲まれた'18'を抽出する方法は?

このQ&Aのポイント
  • VBで正規表現を使って、<td></td>タグで囲まれた'18'を抽出する方法を教えてください。
  • 質問者は<a></a>で囲まれた部分の抽出はできたが、<td></td>タグで囲まれた'18'も取り出したいとのこと。
  • 関連するコードはRegex("<a href=""(?<url>.*?)"".*?>>"(?<text>.*?)</a>"となっています。
回答を見る
  • ベストアンサー

VBで正規表現

VBで正規表現 下記のような文字列がTextBoxに入力されています。 <a></a>で囲まれた部分の抽出は出来ましたが、 <td></td>タグで囲まれた’18’も取り出したいのですが正規表現ではどの様に記述すれば宜しいでしょうか? 関係有りそうなコードはこれです。 Regex("<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>" ---------------------------------------- <TR bgcolor=#ffffff> <TD> 18 </TD> <TD><a href="main.py?qtype=userpage&teamnum=162&username=KOTOKO"> KOTOKO </a> </TD> <TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=KOTOKO&pts=11379753" target="_blank"> 11379753 </a> </TD> <TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=KOTOKO&pts=16190&t=wus&bg=3" target="_blank"> 16190 </a> </TD> </TR> ----------------------------------------

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

No1です。 KOTOKOが見つかればいいのかはわからなかったので、 取り合えず全部を抜き出すもの。 Imports System.Text.RegularExpressions ' 正規表現 Public Class Form1 Dim url As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load url = "http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162" WebBrowser1.ScriptErrorsSuppressed = True WebBrowser1.Navigate(url) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim re As Regex = New Regex("(?<Rank>\d+)\s+(?<Donor>.+?)\s+(?<Score>\d+?)\s+(?<WU>\d+)\s", RegexOptions.Singleline) Dim st As String = "" Dim ch As Boolean = False For Each tg As HtmlElement In WebBrowser1.Document.GetElementsByTagName("TR") st = tg.InnerText If Not st Is Nothing AndAlso st.StartsWith("1") Then ch = True If ch Then Dim m As Match = re.Match(st) Debug.Print(m.Result("${Rank}") & vbTab & m.Result("${Donor}") & vbTab & m.Result("${Score}") & vbTab & m.Result("${WU}")) End If Next End Sub End Class 一例になれば。

その他の回答 (1)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Regex("TD>\s(?<no>[^>]+?)</TD|<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>" とか?

IrohaKujoh
質問者

補足

試してみましたが上手く動きません。 全コードを書きます。 Public Class Form1 Dim url As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load url = "http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162" WebBrowser1.ScriptErrorsSuppressed = True WebBrowser1.Navigate(url) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show() Form2.TextBox1.Text = WebBrowser1.Document.Body.OuterHtml Dim a As String Dim s1 As String = Form2.TextBox1.Text Form2.TextBox1.Select(s1.IndexOf("KOTOKO ") - 87, 370) a = Form2.TextBox1.SelectedText 'Dim rr As New System.Text.RegularExpressions.Regex("<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline) Dim rr As New System.Text.RegularExpressions.Regex("TD>\s(?<no>[^>]+?)</TD|<a href=""(?<url>.*?)"".*?>(?<text>.*?)</a>", System.Text.RegularExpressions.RegexOptions.IgnoreCase Or System.Text.RegularExpressions.RegexOptions.Singleline) 'TextBox1.Text内で正規表現と一致する対象をすべて検索 Dim mcc As System.Text.RegularExpressions.MatchCollection = rr.Matches(a) For Each mm As System.Text.RegularExpressions.Match In mcc '正規表現に一致したグループの文字列を表示 MsgBox("タグ:" + mm.Groups(1).Value + vbCrLf + "タグ内の文字列:" + mm.Groups(2).Value) Next End Sub End Class

関連するQ&A

  • VB2010にて文字の検索と抽出

    下記のようにTextBox1に入力されているとします。 そこで、'<TD><a href="main.py?qtype=userpage&teamnum=162&username=KOTOKO"> KOTOKO </a> </TD>'と書かれた行から、 <a></a>タグで囲まれた' KOTOKO'という文字を検索して、 '<TD> 18 </TD>'と書かれた文字の18と、 <a></a>タグで囲まれた'11346595'と、 <a></a>タグで囲まれた'16184'を取得してMsgBoxに表示したいのですが、 どうすれば出来ますでしょうか? (18、11346595、16184という数字は変動します。) いくら検索しても思うようなものが見つかりませんでした。 因みに、大本のhtmlソースはこちらです。 http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162 ↓これがTextBox1に入力されている値です。 <TR bgcolor=#ffffff> <TD> 18 </TD> <TD><a href="main.py?qtype=userpage&teamnum=162&username=KOTOKO"> KOTOKO </a> </TD> <TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=KOTOKO&pts=11346595" target="_blank"> 11346595 </a> </TD> <TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=KOTOKO&pts=16184&t=wus&bg=3" target="_blank"> 16184 </a> </TD> </TR> <TR bgcolor=#dcdcdc> <TD> 19 </TD> <TD><a href="main.py?qtype=userpage&teamnum=162&username=yukichan"> yukichan </a> </TD> <TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=yukichan&pts=10625127" target="_blank"> 10625127 </a> </TD> <TD><a href="http://fah-web2.stanford.edu/awards/cert.php?u=yukichan&pts=4769&t=wus&bg=3" target="_blank"> 4769 </a> </TD> </TR> ↓これがVBのコード Public Class Form1 Dim url As String Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load url = "http://fah-web.stanford.edu/cgi-bin/main.py?qtype=teampage&teamnum=162" WebBrowser1.Navigate(url) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Form2.Show() Form2.TextBox1.Text = WebBrowser1.Document.Body.OuterHtml Dim r As New System.Text.RegularExpressions.Regex("KOTOKO ", System.Text.RegularExpressions.RegexOptions.IgnoreCase) 'TextBox1.Text内で正規表現と一致する対象を1つ検索 Dim m As System.Text.RegularExpressions.Match = r.Match(Form2.TextBox1.Text) '次のように一致する対象をすべて検索することもできる 'Dim mc As System.Text.RegularExpressions.MatchCollection = _ ' r.Matches(TextBox1.Text) While m.Success '一致した対象が見つかったときキャプチャした部分文字列を表示 MsgBox(m.Value) '次に一致する対象を検索 m = m.NextMatch() End While End Sub End Class

  • VBの正規表現について

    初めまして。 VB.NETについてなんですが以下のHTMLを正規表現で取得する事は可能ですか? <TD class=ct><A href="【項目1】">【項目2】</A></td> <TD class=ct>【項目3】</td> <TD class=ct>【項目4】</td> <TD class=ct>【項目5】</td>       <TD class=ct>【項目6】</td>       <TD class=ct>【項目7】</td> 項目1から項目7を正規表現で取得する事は可能でしょうか?

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

    サイトにある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
  • エクセルファイルを、HTMLに出力

    エクセルファイルを各項目ごとにHTMLに出力したいのですが、 何かよいソフトや方法はないでしょうか? <tr><td class="x_01"><a href="【A1】" target="_blank">【B1】</a></td><td class="y_02">【C1】</td><td class="z_03">【D1】</td></tr> <tr><td class="x_01"><a href="【A2】" target="_blank">【B2】</a></td><td class="y_02">【C2】</td><td class="z_03">【D2】</td></tr> .... このような形式で、出力していきたいです。 とりあえず、このように自動で出力できる方法ならばどのような方法でも構いません。 どうぞよろしくおねがいします。

  • PHP 正規表現の書き方おしえてください!

    PHP&正規表現初心者です。 ヤフーファイナンスランキングから順位ごとに株価データを取得したいの ですが、正規表現の書き方がわからず意図したデータが取得できません。 ご教授ください。 ソース ************************************************ ~ <tbody> <tr class="rankingTabledata yjM"> <td class="txtcenter">1</td><td class="txtcenter"> <a href="http://stocks.finance.yahoo.co.jp/stocks/detail/?code=0002.t">0002</a></td> <td class="txtcenter yjSt">東証JQS</td> <td class="normal yjSt">(株)シxダー</td> <td class="txtcenter grey yjSt">12/18</td> <td class="txtright bold">313</td> <td class="txtright bgyellow02"><span class="greenFin">+23.72</span>%</td> <td class="txtright bgyellow03"><span class="greenFin">+60</span></td> <td class="txtright">5,917,300</td> <td class="txtcenter yjSt"> <a href="http://textream.yahoo.co.jp/rd/finance/0002">掲示板</a></td></tr> <tr class="rankingTabledata yjM"> <td class="txtcenter">2</td><td class="txtcenter"> <a href="http://stocks.finance.yahoo.co.jp/stocks/detail/?code=0003.t">0003</a></td> <td class="txtcenter yjSt">マザーズ</td> <td class="normal yjSt">(株)リxアワールド</td> <td class="txtcenter grey yjSt">12/18</td> <td class="txtright bold">2,125</td> <td class="txtright bgyellow02"><span class="greenFin">+23.19</span>%</td> <td class="txtright bgyellow03"><span class="greenFin">+400</span></td> <td class="txtright">6,800</td> <td class="txtcenter yjSt"> <a href="http://textream.yahoo.co.jp/rd/finance/0003">掲示板</a></td></tr> <tr class="rankingTabledata yjM"> <td class="txtcenter">3</td> ~ *********************************************** ソースはこんな感です。 ↓私のクソ文章 $n = preg_match_all("{<tr class=\"rankingTabledata yjM\"><td class=\"txtcenter\">(.*)</td><td class=\"txtcenter\"><a href=.*>(.*)</a>}", $feed, $cell, PREG_PATTERN_ORDER); preg_match_allで配列に格納して表示させたいのですが、 うまくいきません。 echo "1位  " . $cell[1][0] . " " . $cell[1][1] . " " . $cell[1][2] .....??"\n"; echo "2位  " . $cell[1][1] . "\n" ?????; ~ ???3次配列ですか?? 混乱します。 ☆☆☆理想☆☆☆☆ 1位 2435 東証JQS (株)シダー 12/18 313 +23.72 % +60 5,917,300 2 位 3691 マザーズ (株)リアルワールド 12/18 2,125 +23.19% +400 6,800 ~ ☆☆☆☆☆☆☆☆☆ 取得した株価コードから別サイトを検索したいので 各項目ごとに別要素で表示させたいです。 ダメダメなので よろしくおねがいします。

    • ベストアンサー
    • PHP
  • 正規表現でタグからURLを取り出したい

    こんにちは。 <a href="http://www.x**.com/test/product.php?id=1111&pid=2222&hid=3333&oid=4444" TARGET=_blank> <img border="0" src="http://Y**.com/include/implession.php?pid=2222&hid=3333&flag1=product&id=1111&oid=4444" alt="テスト<BR>正規表現" width="100" height="75"></a> などというタグから リンク先のURLからhttp://をとったもの(ここでは、www.x**.com/test/product.php?id=1111&pid=2222&hid=3333&oid=4444) と ソースURL(ここでは、http://Y**.com/include/implession.php?pid=2222&hid=3333&flag1=product&id=1111&oid=4444) を求めたいんですが、 どのように書けばいいのかわからなくて困っています。 どなたかわかりましたら、ご教授お願いいたします。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=909227 を参考にしてみましたが、この方法だと、TARGET=_blankなども入ってしまいます。

    • ベストアンサー
    • PHP
  • 正規表現 最短一致と末尾

    例: <a href="http://www.google.co.jp/" target="_blank">http://www.google.co.jp/</a>&nbsp;<a href="http://www.google.co.jp/" target="_blank">http://www.google.co.jp/</a>&nbsp;<a href="http://www.google.co.jp/" target="_blank">http://www.google.co.jp/</a> 例のような文字列に文字列の最後のタグだけにヒットさせたい時下記のような検索文では全部にヒットしてしまいました。 どうも?と$を同時に使うと全文にヒットしてしまうようなのですが、うまく最後のAタグだけにヒットさせる方法はありますでしょうか? <a href=".*?</a>$

    • ベストアンサー
    • PHP
  • タグの中の改行文字を正規表現で削除したい

    たとえば、 <a href="~" target="_blank"> というタグの中の改行文字(\n)を削除する正規表現を教えてください。 ただし、preg_replace_callbackは使わないでください。

    • 締切済み
    • PHP
  • 正規表現で、希望するセルへ色を一括で付けたいです。

    ■やりたいこと c[数字n桁]g[数字n桁]_2のセル(以下例の場合、2と5)の色を変えたいです。 ■例 <table> <a href="#" onClick="document.getElementById(正規表現でできる?).bgColor = 'blue';">クリックして2と5の背景を青に変更</a> <tr><td id="c77g111_1"> 1 </td></tr> <tr><td id="c77g111_2"> 2 </td></tr> <tr><td id="c77g111_3"> 3 </td></tr> <tr><td id="c77g112_1"> 4 </td></tr> <tr><td id="c77g112_2"> 5 </td></tr> <tr><td id="c77g112_3"> 6 </td></tr> </table>

  • PHPでの正規表現

    PHPでの正規表現に関する質問です。 function makeAk($value){ return preg_replace("/(?<![一-龠+ぁ-ん+ァ-ヴ+a-zA-Z0-9'\"#@=:;])@([一-龠+ぁ-ん+ァ-ヴ+a-zA-Z0-9_]{1,15})/u", "@<a href=\"mypage.php/\\1\">\\1</a>", $value); } 上記のコードでmypage.phpに\\1ではなく、パラメーター(?id=$post['id']のような)を振りたいのですが、 どうしたらうまくいきますでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP