读书人

表示可有可无的正则表达式

发布时间: 2012-02-17 17:50:42 作者: rapoo

求一个表示可有可无的正则表达式
第一种情况:
<td onmouseout="hide();"
onMouseOver="show('<table width=300 class=bg_top1 border=1><tr><td bgcolor=#FFFFFF >test</td></tr></table>');" >
有变价
</td>

第二种情况:
上面下划线部分是可有可无的,就是说有上面这段html有时候会变成这样:
<td>567</td>


为了适应这两种情况,我写的正则如下:
@"<td[^""]*""*[^""]*""*[^""]*""*[^""]*""*[\s]*>[\s]*(?<Price>.+)[\s]*</td>"


当为第一种情况时可以正常取值,第二种情况<td>567</td>时就取不到,
说明[^""]*""*[^""]*""*[^""]*""*[^""]*""*这段正则不对,
请帮忙指正一下

[解决办法]

C# code
@"(?six)           # (?s)=点号匹配一切字符,(?i)=不区分大小写,(?x)=宽松排列格式  <td\s+           # 开始    (?:            #   下述字符      ""[^""]*""   #     双引号字符串      |            #     或者是 ...      '[^']*'      #     单引号字符串      |            #     或者是 ...      [^""'>]      #     除了双引号、单引号或结束的尖括号(>)外的其他文本    )*             #   重复任意多次  >                # 结束的尖括号(>)  \s*  (?<Price>[\d\.]+) # 内容  \s*                  </td>            # 结束"; 

读书人网 >C#

热点推荐