求一正则表达式

zhangyang555 2010-04-09 05:27:04
我现在需要对一段HTML代码中的标签进行替换,HTML代码如下:

<TABLE id=tbprint cellSpacing=0 cellPadding=5 width="100%" border=0><TBODY>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD class=content align=middle>
<TABLE borderColor=#91c1df cellSpacing=0 cellPadding=5 width="90%" border=1>
<TBODY>
<TR align=middle>
<TD colSpan=12 height=5></TD></TR>
<TR align=middle>
<TD rowSpan=5>型1</TD>
<TD>常务副总</TD>
<TD>3</TD>
<TD id=All1>271200</TD>
<TD id=JE1>135600</TD>
<TD id=JJ1>135600</TD>
<TD> <SELECT style="WIDTH: 65px" onchange=InputChage(1,this.value,40,50) name=Monthly> <OPTION value=9800>9800</OPTION> <OPTION value=11300 selected>11300</OPTION> <OPTION value=12800>12800</OPTION> <OPTION value=14300>14300</OPTION> <OPTION value=15800>15800</OPTION></SELECT> </TD>
<TD id=GDGZ1>4520</TD>
<TD id=JXGZ1>6780</TD></TR>
<TR align=middle>
<TD>销售总监</TD>
<TD>6</TD>
<TD id=All2>116571</TD>
<TD id=JE2>34971</TD>
<TD id=JJ2>81600</TD>
<TD> <SELECT style="WIDTH: 65px" onchange=InputChage(2,this.value,40,30) name=Monthly> <OPTION value=5200>5200</OPTION> <OPTION value=6000>6000</OPTION> <OPTION value=6800 selected>6800</OPTION> <OPTION value=7600>7600</OPTION> <OPTION value=8400>8400</OPTION></SELECT> </TD>
<TD id=GDGZ2>2720</TD>
<TD id=JXGZ2>4080</TD></TR>
<TR align=middle>
<TD>业务部经理</TD>
<TD>9</TD>
<TD id=All3>84750</TD>
<TD id=JE3>16950</TD>
<TD id=JJ3>67800</TD>
<TD> <SELECT style="WIDTH: 65px" onchange=InputChage(3,this.value,40,20) name=Monthly> <OPTION value=4350>4350</OPTION> <OPTION value=5000>5000</OPTION> <OPTION value=5650 selected>5650</OPTION> <OPTION value=6300>6300</OPTION> <OPTION value=6950>6950</OPTION></SELECT> </TD>
<TD id=GDGZ3>2260</TD>
<TD id=JXGZ3>3390</TD></TR>
<TR align=middle>
<TD>业务员</TD>
<TD>15</TD>
<TD id=All4>51600</TD>
<TD id=JE4>0</TD>
<TD id=JJ4>51600</TD>
<TD> <SELECT style="WIDTH: 65px" onchange=InputChage(4,this.value,40,0) name=Monthly> <OPTION value=2950>2950</OPTION> <OPTION value=3400>3400</OPTION> <OPTION value=3850>3850</OPTION> <OPTION value=4300 selected>4300</OPTION> <OPTION value=4750>4750</OPTION></SELECT> </TD>
<TD id=GDGZ4>1720</TD>
<TD id=JXGZ4>2580</TD></TR>
<TR align=middle>
<TD>业务助理</TD>
<TD>19</TD>
<TD id=All5>44400</TD>
<TD id=JE5>0</TD>
<TD id=JJ5>44400</TD>
<TD> <SELECT style="WIDTH: 65px" onchange=InputChage(5,this.value,40,0) name=Monthly> <OPTION value=2900>2900</OPTION> <OPTION value=3300>3300</OPTION> <OPTION value=3700 selected>3700</OPTION> <OPTION value=4100>4100</OPTION> <OPTION value=4500>4500</OPTION></SELECT> </TD>
<TD id=GDGZ5>1480</TD>
<TD id=JXGZ5>2220</TD></TR>
<TR align=middle>
<TD colSpan=12 height=5></TD></TR>
</TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>

我现在需要把<SELECT.....</SELECT>替换为他的属性为select的option的值,然后再把这段HTML代码返回
...全文
148 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
十八道胡同 2010-04-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 huangwenquan123 的回复:]

过客就是牛!
[/Quote]

过客是人!!!
-过客- 2010-04-17
  • 打赏
  • 举报
回复
这样?

Regex reg = new Regex(@"(?isn)<input\b((?!value=).)*value=""(?<value>[^""]*)""[^>]*>");
string result = reg.Replace(yourStr, "${value}");
zhangyang555 2010-04-17
  • 打赏
  • 举报
回复
<TABLE id=tbprint cellSpacing=0 cellPadding=5 width="100%" border=0><TBODY>

<tr align="center">
<td colspan=8 height=5></td></tr><tr align='center'><td rowspan='6'>上山型(以业务、业绩为主)</td>
<td>常务副总</td>
<td>3</td>
<td>172566</td>
<td>
<input type="text" name="Percent" value="50" style="width:30px" onchange="InputChage(1,this.value,172566)" />
</td>
<td id="JJ1">86283</td>
<td id="YDSR1">86283</td>
<td id="YX1">7190</td>
</tr>

<tr align="center">

<td>销售总监</td>
<td>6</td>
<td>140044</td>
<td>
<input type="text" name="Percent" value="30" style="width:30px" onchange="InputChage(2,this.value,140044)" />
</td>
<td id="JJ2">42013</td>
<td id="YDSR2">98031</td>
<td id="YX2">8169</td>
</tr>
</TBODY></TABLE></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>

是这样的,我要把里边的 <input 标签替换成他的 value
-过客- 2010-04-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhangyang555 的回复:]
希望 过客 再帮我解答下:如果将 <select>换成是<input type="text" value="100">,然后要将所有的<input>替换成它的value值,改如何替换?
[/Quote]

没看明白什么意思,这样?
Regex reg = new Regex(@"(?isn)<select[^>]*>((?!selected).)*selected>(?<value>[^<]*)</option>((?!</?select\b).)*</select>");
string result = reg.Replace(yourStr, "<input type=\"text\" value=\"${value}\" />");


如果这不是你要的,那给出你要的结果
zhangyang555 2010-04-10
  • 打赏
  • 举报
回复
希望 过客 再帮我解答下:如果将 <select>换成是<input type="text" value="100">,然后要将所有的<input>替换成它的value值,改如何替换?
xjl1314521wxw 2010-04-09
  • 打赏
  • 举报
回复
http://www.blog.sina.com.cn/pywangwei
jianke917 2010-04-09
  • 打赏
  • 举报
回复
过客就是牛!
huangwenquan123 2010-04-09
  • 打赏
  • 举报
回复
过客就是牛!
-过客- 2010-04-09
  • 打赏
  • 举报
回复
最后一句话还真有点绕。。。

Regex reg = new Regex(@"(?isn)<select[^>]*>((?!selected).)*selected>(?<value>[^<]*)</option>((?!</?select\b).)*</select>");
string result = reg.Replace(yourStr, "${value}");
ahhisoft 2010-04-09
  • 打赏
  • 举报
回复
第一步,通过正则找到所有select的匹配项。
<select.*?/select>

第二步,在每一个匹配项中找到Value和Text
value="(.*?)"
text="(.*?)"

第三步,在全文html中,对匹配项进行替换。
zhouyanfss 2010-04-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhouyanfss 的回复:]

<OPTION[^<>]*selected>(?<optionValue>\d+)</OPTION>
[/Quote]
少写个*
zhouyanfss 2010-04-09
  • 打赏
  • 举报
回复
<OPTION[^<>]selected>(?<optionValue>\d+)</OPTION>
zhangyang555 2010-04-09
  • 打赏
  • 举报
回复
没人理这种问题?
zhangyang555 2010-04-09
  • 打赏
  • 举报
回复
自己顶
丰云 2010-04-09
  • 打赏
  • 举报
回复
等过客

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧