将两个正则表达式合并为一个

时间:2013-01-30 10:47:01

标签: php regex

我想将两个正则表达式合并为一个。

$exp1 =/<area.*?href="([^"]*)".*?[^>]*>/s;
$exp2=/<a.*?href="([^"]*)".*?[^>]*>/s';

2 个答案:

答案 0 :(得分:1)

首先,我会认真考虑在触及这些表达式之前使用正确的HTML解析器。

那就是说,你所追求的可能就是这样:

/<(?:a|area).*?href="([^"]*)".*?[^>]*>/s

(?:a|area)表达式是aarea之间的交替;它被包含在(?: ... )内以对交替进行分组,将其视为非捕获子模式。

另请参阅:subpatternsalternation

答案 1 :(得分:0)

我认为应该这样做:

$exp =/<(?:area|a).*?href="([^"]*)".*?[^>]*>/s;
不过,尝试parse [X]HTML with regex是个坏主意。