我正在使用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>
标签及其内容。
答案 0 :(得分:13)
您必须使用s
修饰符将新行与点匹配,我不知道您可以在NetBeans中执行此操作,但您可以使用(?s)
开始表达以启用它
所以匹配<td ...> ... </td>
的正则表达式就像这样(?s)(<td[^>]*>.*?<\/td>)
。
<强>解释强>
(?s)
:使点匹配也换行<td
:匹配<td
[^>]*
:匹配除>
0次或更多次以外的所有内容>
:匹配>
.*?
:将所有内容匹配0次或更多次(在此情况下找到</td>
)<\/td>
:我是否应该解释o_o?