2011-04-02 74 views
2

這將是一個快速的方法來提取一個HTML表格標題屬性的值:正則表達式來提取屬性值

... 
<li><a href="/wiki/Proclo" title="Proclo">Proclo</a></li> 
<li><a href="/wiki/Proclus" title="Proclus">Proclus</a></li> 
<li><a href="/wiki/Ptolemy" title="Ptolemy">Ptolemy</a></li> 
<li><a href="/wiki/Pythagoras" title="Pythagoras">Pythagoras</a></li></ul><h3>S</h3> 
... 

所以它會返回Proclo,普洛克洛,托勒密,畢達哥拉斯,....在每行的字符串中。我正在使用StreamReader讀取文件。我正在使用C#。

謝謝。

+0

你有什麼形式的HTML表? (ASP控件,字符串,流,XmlReader,DOM?) – sehe 2011-04-02 21:46:49

+0

\ *嘆息\ * ... http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-標籤/ 1732454#1732454爲(1/epsilon)次。 – delnan 2011-04-02 21:46:50

+0

@ delnan:優點。然而,鏈接到的帖子似乎已經損壞?它無法在我的瀏覽器中正確顯示 – sehe 2011-04-02 21:47:49

回答

14

這個C#正則表達式會發現所有標題值的情況:

(?<=\btitle=")[^"]* 

的C#代碼是這樣的:

Regex regex = new Regex(@"(?<=\btitle="")[^""]*"); 
Match match = regex.Match(input); 
string title = match.Value; 

正則表達式使用正回顧後找到位置,其中title VALU e開始。然後它將所有內容匹配到最後的雙引號。

+0

它只適用於我刪除while循環。謝謝 ! – al1 2011-04-02 22:01:57

+0

好的,我會盡量簡化它 – 2011-04-02 22:06:19

5

使用下面

title="(.[^"]+)" 

,然後正則表達式使用通過匹配的元素瀏覽。

編輯:我已經修改了正則表達式來涵蓋@StaffanNöteberg在評論規定

+0

對於這些示例來說沒關係,這可能就足夠了。但不會與'

  • Proclo
  • '或'
  • Proclus
  • '一起使用。 – 2011-04-02 22:00:12

    +0

    @StaffanNöteberg好點,現在它也應該涵蓋你的例子。 – 2011-04-02 22:15:19