正則表達式匹配html標籤內的字符串

項目中獲得一個頁面的html字符串,須要獲得html標籤中<textarea></textarea>間的值,html

參考了網上的例子:spa

    string str = "aaa[12] bbbc[zxt] ccvcvcvxcvx[@5]xxcxcxcxc[f1]dsdsd";
    Regex reg = new Regex(@"(?<=\[)[^\[\]]+(?=\])");

 這個是獲得[ ]中的值,我如今獲得的是相似這樣的字符串:code

<table width=\"640\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\" class=\"tablestyle\">\n <tr>\n    
<td width=\"100\" height=\"70\" align=\"center\" class=\"rowtitle\">來文單位</td>\n <td width=\"250\">\n
<
textarea id=\"txtDw\" type=\"text\" style=\"width:250px;overflow:hidden;height:60px;\" field=\"dw\" name=\"dw$gw_cjgwsw\">
財經工委收文閱辦卡財經工委收文閱辦卡
</textarea>\n
</td>\n   
<td width=\"60\" align=\"center\" class=\"rowtitle\">文號</td>\n   
<td width=\"120\" align=\"center\">\n     
<textarea id=\"txtWh\" type=\"text\" style=\"width:100px;overflow:hidden;height:60px;\" field=\"wh\" name=\"wh$gw_cjgwsw\">
123456
</textarea>
\n    </td>\n 

如今要取<textarea></textarea>間的字符,上面那個例子本身徹底沒看懂,無奈只能用笨辦法了:htm

        Regex reg3 = new Regex(@"(<textarea([\s\S]*?)</textarea>)");
        MatchCollection mc = reg3.Matches(s);

        var list = new List<string>();
        for (int i = 0; i < mc.Count; i++)
        {
            list.Add( mc[i].Value);
        }
        for (int i = 0; i < list.Count; i++)
        {
            if (list[i].IndexOf("id=\"txtDW\"") != -1)
            {
                int start = list[i].IndexOf(">");
                int end = list[i].IndexOf("</textarea>");
                txtResult.Text = list[i].Substring(start+1,end-(start+1));
                break;
            }
        }


用了這樣一個正則 Regex reg3 = new Regex(@"(<textarea([\s\S]*?)</textarea>)")
由於<textarea>內還有id style等其它屬性,因此只能先把整個<textarea></textarea>取出來,
blog

而後再取標籤中間的值;ci

PS:正則真是好東西,之後必定得把正則好好看看,能省很多事。字符串

相關文章
相關標籤/搜索