[英]Extract text from multiline HTML using Regex
我正在嘗試從HTML文件中提取一些文本。
這是使我頭痛的部分示例:
<TD>
Adresa instalacije:
</TD>
<TD COLSPAN=2>
<TABLE border=0 cellpadding=3 cellspacing="1" bgcolor="#AAAA77" width="100%">
<TR bgcolor="#FFFFCC">
<TD COLSPAN=2><B>SOME TEXT</B></TD>
</TR>
<TR bgcolor="#FFFFCC">
<TD>ADM šifra: </TD>
<TD><B>914122</B></TD>
</TR>
</TABLE>
</TD>
我要提取的部分介於
<TD COLSPAN=2><B> </B></TD>
這是我的正則表達式:
var regexAdresa = @"<TD>Adresa korisnika:</TD><TD COLSPAN=2>";
regexAdresa += @"<TABLE border=0 cellpadding=3 cellspacing=""1"" bgcolor=""#AAAA77"" width=""100%"">";
regexAdresa += @"<TR bgcolor=""#FFFFCC"">";
regexAdresa += @"<TD><B>(.*?)</B></TD>";
regexAdresa += @"</TR></TABLE></TD>";
var r0 = new Regex(regexAdresa);
var rr0 = r0.Match(text);
var res0 = rr0.Groups[1].ToString();
我的結果始終是resturs0。我做錯什么了嗎?
我將使用PhantomJS,它對用戶是不可見的,並且它解析整個DOM,從而使您可以通過Selenium訪問。 要訪問<TD COLSPAN=2><B> </B></TD>.
var text = driver.findElement(By.CssSelector("td.colspan=2" b)).Text;
警告代碼未經測試,僅作為示例提供。
有關在Selenium中使用By定位器的更多信息,請單擊此處 。
感謝所有人,尤其是@ArghyaC。
我嘗試了一些東西,現在滿足了我的需求。 也許不是最好的解決方案,但它可以工作:
var regexAdresa = @"<TD (COLSPAN=[1-9]+)?><B>[^<>]+<\/B><\/TD>";
Regex g = new Regex(regexAdresa);
Match m = g.Match(text);
if (m.Success)
{
MessageBox.Show(m.ToString());
MessageBox.Show(Regex.Replace(m.ToString(), "<.*?>", String.Empty));
}
我得到的行是我想要的文本,在第二步中使用正則表達式刪除了HTML標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.