日期:2014-05-17  浏览次数:20555 次

已知ID值怎么用正则表达式获取HTML该已知ID值的所属字符串
HTML:

<td>
&nbsp; <ST:TextBox id="C_1_23_1_1170_2_t" style="width:160px;height:25px;" src="Control/TextBox.gif" runat="server" format="string" tooltip="计划投资" fontstyle="" /></ST:TextBox> 
</td>
<td>
</td>
<td>
&nbsp;
</td>
</tr>
<tr>
<td>
&nbsp;上传附件
</td>
<td colspan="3">
&nbsp; <ST:MUpload id="C_1170_1_mff" style="width:222px;height:50px;" src="Control/MUpload.gif" runat="server" format="string" tooltip="上传附件" fontstyle="" /></ST:MUpload> 
</td>

需要实现:
已知ID值怎么用正则表达式获取HTML该已知ID值的所属字符串
已知id:
C_1_23_1_1170_2_t
C_1170_1_mff

怎么通过其中一个已知的id值得到所需要的上面html中绿色的部分

比如我想通过C_1170_1_mff得到
<ST:MUpload id="C_1170_1_mff" style="width:222px;height:50px;" src="Control/MUpload.gif" runat="server" format="string" tooltip="上传附件" fontstyle="" /></ST:MUpload>

我想通过C_1_23_1_1170_2_t得到
<ST:TextBox id="C_1_23_1_1170_2_t" style="width:160px;height:25px;" src="Control/TextBox.gif" runat="server" format="string" tooltip="计划投资" fontstyle="" /></ST:TextBox>

这些控件都是有id的,用已知id进行匹配,然后获取到<ST开头 </ST:...>结尾的整串字符串

------解决方案--------------------
 string sInput = File.ReadAllText(@"C:\Users\myx\Desktop\Test.txt", Encoding.GetEncoding("GB2312"));
            string id = "C_1_23_1_1170_2_t";
            Match m = Regex.Match(sInput, string.Format(@"(?i)<(\S+)[^>]*?id=(['""]?){0}\2[^>]*?></\1>", id));

            string value = m.Value;
            /*
             <ST:TextBox id=\"C_1_23_1_1170_2_t\" style=\"width:160px;height:25px;\" src=\"Control/TextBox.gif\" runat=\"server\" format=\"string\" tooltip=\"计划投资\" fontstyle=\"\" /></ST:TextBox>
             */

------解决方案--------------------
<[^>]+?id="C_1170_1_mff"[^>]+?><[^>]+?>