【问题标题】:Regex c# html tags with specific attribute具有特定属性的正则表达式 c# html 标签
【发布时间】:2016-07-15 14:39:47
【问题描述】:

我是正则表达式的新手:(经过大量搜索我的要求后,我能够设法获得答案,但我确实得到了额外的结果,如下所述:

我的字符串

<td valign="top" width="100%">
<td width="100%" valign="top">
<td valign="top" height="100%" width="100%">
<td valign="top">

我的表情

/<td (?=.*valign="top")(?=.*width="100%").*>/gm

我的结果

<td valign="top" width="100%">
<td width="100%" valign="top">
<td valign="top" height="100%" width="100%">

预期结果

<td valign="top" width="100%">
<td width="100%" valign="top">

结论:我想提取仅具有特定值的具有 valign 和 width 属性的 TD 标签。

注意:我必须解析大量数据文件,因此 HTMLAgility 会减慢整个过程。

请指导我最终表达。干杯

【问题讨论】:

  • 如果您必须解析大量数据文件,我不太确定HTMLAgility 会减慢整个过程。好吧,这是你的选择,我会选择 HtmlAgilityPack。

标签: c# html regex


【解决方案1】:

这似乎是为我做的:

\<td\s+((valign="top"\s+width="100%")|(width="100%"\s+valign="top"))\s*>\gm

您的表达式搜索以查看这两个属性是否位于&lt;td 开头的某个位置。这个允许空格,然后搜索valign="top" width="100%"width="100%" valign="top",然后在 td 标记结束前添加更多可选的空格。这将禁止除 width 和 valign 属性之外的所有属性。

话虽如此,使用正则表达式时总会出现意想不到的情况。您可以在此处实时测试您的正则表达式:http://regexr.com/ 只需输入您的字符串和正则表达式即可查看它选择的内容。

编辑:

如果你想在属性周围同时考虑单引号和双引号,试试这个:

\<td\s+((valign=([",'])top\3\s+width=([",'])100%\4)|(width=([",'])100%\6\s+valign=([",'])top\7))\s*>\gm

现在我允许在属性值的开头使用 " 或 ',并搜索在属性值末尾找到的匹配项。

再次,我鼓励您访问我在上面链接的网站并自己尝试这些。我几乎从不使用正则表达式,但当我使用该网站时,我通常可以找到适合我的表达式。

【讨论】:

  • 谢谢马特...你的回答满足了我的要求...干杯
猜你喜欢
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 2023-03-24
  • 2017-07-15
  • 2013-06-16
  • 1970-01-01
  • 2011-02-01
相关资源
最近更新 更多