RegEx Multiline结果 - Netbeans 7.2查找和替换功能

时间:2013-05-29 18:31:08

标签: regex netbeans netbeans-7.2

我正在使用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>

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

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

但我希望得到一个正则表达式,无论他们拥有多少<td>个标签,都可以获取每个<label>标签及其内容。

1 个答案:

答案 0 :(得分:13)

您必须使用s修饰符将新行与点匹配,我不知道您可以在NetBeans中执行此操作,但您可以使用(?s)开始表达以启用它

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

<强>解释

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

Online demo