>백엔드 개발 >PHP 튜토리얼 >哎,求2个正则合并成一个正则怎么写啊,谢谢

哎,求2个正则合并成一个正则怎么写啊,谢谢

WBOY
WBOY원래의
2016-06-23 14:09:441026검색

这是要匹配的内容

<td class="LightRowHead">Primary Color:</td><td class="LightRow">Multi-Color</td></tr><tr><td class="DarkRowHead">Multi Pack Indicator:</td><td class="DarkRow">No</td></tr><tr><td class="LightRowHead">Battery Type:</td><td class="LightRow">Does Not Contain a Battery</td></tr>


这个个正则,怎么合并成一个啊
$a = preg_match_all('/LightRowHead.*?>(.*?):.*?LightRow.*?>(.*?)</is', $content, $a);$a = preg_match_all('/DarkRowHead.*?>(.*?):.*?DarkRow.*?>(.*?)</is', $content, $b);

我这样写不对
$a = preg_match_all('/[LightRowHead|DarkRowHead].*?>(.*?):.*?[LightRow|DarkRow].*?>(.*?)</is', $content, $c);


求高人指点


回复讨论(解决方案)

(xx|yy)

用方括号括起就变成字符单选了,要用圆括号
$a = preg_match_all('/(LightRowHead|DarkRowHead).*?>(.*?):.*?(LightRow|DarkRow).*?>(.*?)', $content, $LightRowHead);
不想加入向前引用的话可写作
$a = preg_match_all('/(?:LightRowHead|DarkRowHead).*?>(.*?):.*?(?:LightRow|DarkRow).*?>(.*?)', $content, $LightRowHead);

需要前后配对的话可写作
$a = preg_match_all('/(LightRow|DarkRow)Head.*?>(.*?):.*?\\1.*?>(.*?)', $content, $LightRowHead);

用方括号括起就变成字符单选了,要用圆括号
$a = preg_match_all('/(LightRowHead|DarkRowHead).*?>(.*?):.*?(LightRow|DarkRow).*?>(.*?)', $content, $LightRowHead);
不想加入向前引用的话可写作
$a = preg_match_all('/(?:LightRowHead|DarkRowHead).*?>(.*?):.*?(?:LightRow|DarkRow).*?>(.*?)', $content, $LightRowHead);

需要前后配对的话可写作
$a = preg_match_all('/(LightRow|DarkRow)Head.*?>(.*?):.*?\\1.*?>(.*?)', $content, $LightRowHead);
果然,csdn的人就是热情,谢谢你和二楼..

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.