2012-04-15 13 views
0

私は基本的なアンカーノードを文字列として持っており、そこからURLとテキストを取得したいと考えています。たとえば:vbnetのhtmlノードからデータを取得

MyAwesomeWebsite 

どのように私はこれをコーディングしないと

http://MyAwesomeWebsite.com/ 

及びその他:

<a href="http://MyAwesomeWebsite.com/">Go to MyAwesomeWebsite</a> 

私は2つの文字列を持つものをしたいですか?

答えて

1

あなたは次のようにしたいテキストを抽出する正規表現を使用することができます。

Imports System.Text.RegularExpressions 
    Sub Main() 
    Dim anchor As String 
    anchor = "<a href=""http://MyAwesomeWebsite.com/"">Go to MyAwesomeWebsite</a>" 

    Dim href As String = Regex.Match(anchor, "\""[a-z,A-Z,0-9,:,/,.]+\""").Value 
    Console.WriteLine(href.Substring(1, href.Length - 2)) 

    Dim content As String = Regex.Match(anchor, "\>[a-z,A-Z,0-9,:,/,., ]+\<").Value 
    Console.WriteLine(content.Substring(1, content.Length - 2)) 
    Console.ReadKey() 
    End Sub 

また、あなたはIndexOfメソッドサブストリングよう文字列が提供するメソッドを使用することができます。 しかし、あなたが解析することを考えているのであれば、多くの人は、HtmlAgilePackのようなライブラリを使うことをお勧めします。

+0

ありがとうございます!しかし、リンクには、ハイパーリファレンスとして現れる 'rel'属性が含まれていることがあります。正規表現の簡単な修正?または、ライブラリを使用する必要があります。私はちょうど1つの小さなタスクのためにライブラリを使用することを避けようとしています。 –

+0

ターゲットが 'rel'ページを調べている場合は、library.Butを使用する方がよいでしょう。 'rel'の値を取得したい場合は、次のように別の正規表現を使用することができます: 'Dim rel As String = Regex.Match(anchor値 Console.WriteLine(rel.Substring(5、rel.Length - 6)) '、" rel = \ "" [az、AZ、0-9、:、/、。] + \ "正規表現が使用される前に正規表現が一致しているかどうかをチェックするには(** 'href'または 'rel'の正規正規表現の違い)** Regex.IsMatch **を使用します。私はあなたを助けて欲しい;) –

0

Html Agility Packライブラリは、あなたのために文字列を解析し、必要な情報を返すことができます。ここでは、それを使用する方法については、stackoverflowのplenty of related questionsです。

別の方法では、regular expressionを使用して、必要なパターンに一致する部分文字列を検索します。

関連する問題