【问题标题】:Regex to replace padding-right but only in td tags正则表达式替换 padding-right 但仅在 td 标签中
【发布时间】:2015-02-23 12:14:12
【问题描述】:

谁能指出我正确的方向来仅替换 td 标记中的填充右属性?我必须使用正则表达式,不能使用 html 敏捷包或任何其他工具。源是一个 http 片段。我什么都试过了,因为我有点迷茫。由于我在手机上,无法发布样本。非常感谢。

【问题讨论】:

  • 那么样式属性中的css属性?您始终可以在其他地方覆盖它,或者直接替换为 -x-fake

标签: c# html regex


【解决方案1】:

这是一个匹配padding-right 的正则表达式,仅在td 内。请注意,这仅在 td 标记本身内匹配,而不在 <td></td> 之间匹配

(<td [^>]+)padding-right *:[^;"]+ *;?

您可以将上面的内容替换为第一个捕获组以从 td 标签中删除所有padding-right

example

要在标签之间匹配padding-right,请使用:

(<td.*?>.*?)padding-right *:[^;"]+ *;?(.*?)(?=<\/td>)

(假设同一行)

example

【讨论】:

  • 谢谢。正则表达式继续拥抱我的想法。有机会我会测试你的代码。
  • 这会对&lt;td x="padding-right:3;" no-padding-right:3&gt; 造成什么影响?它应该怎么做?
  • 我需要做的是改变
  • @ScottHunter:我怀疑有人会写这样的 html,但由于它仍然在可能的范围内,应该这样做:rubular.com/r/S8fC0ZFjm9
  • @bhs:在这种情况下,使用(&lt;td [^&gt;]*style="[^"]*)padding-right *: *0 *; 并替换为\1padding-right:3;。示例:rubular.com/r/cEQc5nTc82
【解决方案2】:

放弃吧。

除非您的 HTML 遵循一些严格的规则,否则您不能为此使用正则表达式(这就是存在解析器的原因)。例如,您正在查看的属性可能出现在标记的其他位置,因此您的正则表达式无法区分。

【讨论】:

  • 喜欢这个答案。我希望我可以但无法使用第三方工具,所以没有解析器。
  • Javascript 内置的解析器怎么样?
  • @ScottHunter 你能提供一个示例用法吗?
猜你喜欢
相关资源
最近更新 更多
热门标签