【问题标题】:RegEx get tr tags正则表达式获取 tr 标签
【发布时间】:2011-02-23 11:05:36
【问题描述】:

我有字符串:

'
<tr id="sdf"></tr>
<td>
  <div>asdf</div>
  asdf
</td>
<tr id="sdfdf">
  <td>
    <div>asdf</div>
    asdf
  </td>
</tr>
<tr id="sdf"></tr>
<tr id="ssdfdf">
  <td>
    <div>asdf</div>
    asdf
  </td>
</tr>
'

我想使用 RegExp 将 tr 标记保存到数组中。

【问题讨论】:

  • 关于什么?一头大象?疣?这是一个 XHTML 问题吗?源数据是什么?你想对结果做什么?此外,使用 Regex 解析 XHTML 几乎总是错误的。
  • 通过使用 HTML 解析器...您必须提供 很多 更多信息。
  • @Alexander:你练习含糊不清吗?
  • 温柔的Tomalak,他听起来不像是一个以英语为母语的人。但是 Alexader,我们需要更多信息。您是否在 tr 标签中寻找内容,您是否在寻找包含内容的整个元素?告诉我们你到底想要做什么。很有可能,有人会告诉你一个更好的方法来完成它。
  • 当我使用“”时,它会返回错误的答案。没有考虑到 tr 标签不能包含另一个 tr 标签。

标签: javascript html regex


【解决方案1】:

只要&lt;tr&gt;标签从不嵌套,你可以试试这个:

result = subject.match(/<tr[\s\S]*?<\/tr>/g);

这将为您提供一个包含所有 &lt;tr&gt; 标记及其内容的数组。

[\s\S] 是 JavaScript 表示“任何字符,包括换行符”的方式,*? 要求重复零次或多次,尝试使用尽可能少的字符以避免同时匹配多个标签。

不过,一旦&lt;tr&gt; 标签被嵌套,这就会爆炸,这就是为什么正则表达式不是解析标记语言的最佳工具的原因之一(委婉地说)。通过解析 DOM,您将获得更可靠的结果。

【讨论】: