两个标签和条件之间的正则表达式preg_match_all

时间:2014-06-04 21:02:30

标签: php regex

我试图用条件获取两个标签之间的内容。

所以这是一个例子,我想得到所有的tr,但只有那些带有/ c的那些。

示例字符串:

<tr><td> /a </td></tr>
<tr><td> /b </td></tr>
<tr><td> /c </td></tr>
<tr><td> /d </td></tr>

使用我到目前为止得到的所有内容

preg_match_all("/<tr.*<\/tr>/", $input_lines, $output_array);

我需要做些什么来实现这个目标?

谢谢

1 个答案:

答案 0 :(得分:0)

preg_match_all("/<td>([^<]*/c[^<]*)<\/td>/", $input_lines, $output_array);

换句话说:只要正则表达式遇到<而没有找到/c,它就会失败。

如果其他html标记可能位于td内,则需要将[^<]*替换为.*?

<td>([^<]*/c[^<]*)<\/td>

Regular expression visualization

Debuggex Demo

注意:使用.*?会导致不必要的,贪婪的结果,请参阅此示例:

<td>(.*?/c.*?)<\/td>

Regular expression visualization

Debuggex Demo