我正在尝试编写一个正则表达式来匹配这样的模式:
<td style="alskdjf" />
即。自我终止<td>
但不是这样:
<td style=alsdkjf"><br /></td>
我最初想出的是:
<td\s+.*?/>
但是第二个例子显然失败了,我认为这样的事情可能有用:
<td\s+.*?[^>]/>
但事实并非如此。我正在使用C#.NET。
仅查找具有属性的<td>
。例如寻找<td style="alsdfkj" />
但不是<td>
。
答案 0 :(得分:4)
由于HTML不常规,因此使用HTML的regexp会遇到问题。除了最简单的情况外,我建议使用HTML解析器。
答案 1 :(得分:4)
这将与您正在寻找的内容相匹配,并且不符合您在前几次尝试时出现的问题:
<td[^>]*?/>
但请注意,如果您需要在属性值中允许>
个字符,则需要以下内容:
<td(?:[^>]|"[^"]*?")*?/>
仅在匹配的双引号内允许>
(您可以类似地扩展它以允许单引号)。
您可以将正在寻找的任何特定属性添加到正则表达式中;例如:
<td[^>]*? style="alskdjf"[^>]*?/>
答案 2 :(得分:2)
HTML Agility Pack是您真正想要使用的内容,并且在我看过的每个地方都有非常好的评论。它是一个强大的库,用于将任何类型的错误HTML读入DOM模型。我个人发现它是一个极好的库,肯定有其他人,很多人在商业应用程序的上下文中使用库。