日期:2014-05-18  浏览次数:21480 次

求一个表示可有可无的正则表达式
第一种情况:
<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>            # 结束
";