6

我正在使用 Netbeans 7.2 中的“查找”工具,并且正在寻找使我能够收集具有多行的结果的正则表达式。

我想将正则表达式应用于以下 示例Html 代码:

<tr>
    <td>
        <label>some label</label><span>*</span>
    </td>
    <td>
        <label>some label</label><span>*</span>
        <label>some label</label>
        <label>some label</label>
    </td>
</tr>

基本上,我想收集任何<td>标签,包括它的内容和结束标签</td>

在上面的例子中,我的第一个结果应该是:

<td>
    <label>some label</label><span>*</span>
</td>

我的第二个预期结果是:

<td>
    <label>some label</label><span>*</span>
    <label>some label</label>
    <label>some label</label>
</td>

我尝试了许多不同的正则表达式,它们会选择 the 的开头<td>和下一行(如果<td>'s 的内容不止一行)。

例子 : <td>.*(.*\s*).*

但我正在寻找一个正则表达式,它可以获取每个<td>标签及其内容,无论<label>它们持有多少标签。

4

1 回答 1

13

您必须使用s修饰符来匹配带有点的新行,我不知道您可以在 NetBeans 中的何处执行此操作,但您可以从表达式开始(?s)以启用它。

所以匹配的正则表达式<td ...> ... </td>是这样的
(?s)(<td[^>]*>.*?<\/td>)

解释:

  • (?s):使点匹配也换行
  • <td: 匹配<td
  • [^>]*: 匹配除>0 次或多次以外的所有内容
  • >: 匹配>
  • .*?: 匹配所有内容 0 次或更多次不贪婪(直到</td>在这种情况下找到)
  • <\/td>: 我应该解释一下 o_o 吗?

在线演示

于 2013-05-29T19:30:41.427 回答