ホームページ > バックエンド開発 > PHPチュートリアル > 2 つの正規表現を 1 つの正規表現に結合する方法を教えてください。ありがとうございます。

2 つの正規表現を 1 つの正規表現に結合する方法を教えてください。ありがとうございます。

WBOY
リリース: 2016-06-23 14:09:44
オリジナル
1020 人が閲覧しました

これは一致するコンテンツです

<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>
ログイン後にコピー


これらの正規表現を 1 つに結合するにはどうすればよいですか?
$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);
ログイン後にコピー


アドバイスをください


ディスカッションに返信 ( solution)

(xx |yy)

角括弧で囲んだ場合は、単一の文字選択になります

$a = preg_match_all('/(LightRowHead|DarkRowHead).*?>(.*?) :.*?( LightRow|DarkRow).*?>(.*?) 前方参照を追加したくない場合は、次のように記述できます
$ a = preg_match_all('/(?:LightRowHead|DarkRowHead ).*?>(.*?):.*?(?:LightRow|DarkRow).*?>(.*?)
前後のペアリングが必要です
$a = preg_match_all('/(LightRow|DarkRow)Head.*?>(.*?):.*?\ 1.*?>(.*?)

角括弧で囲んだ場合は、単一の文字選択になります

$a = preg_match_all(' /(LightRowHead|DarkRowHead).*?>(.*?): .*?(LightRow|DarkRow).*?>(.*?) $a = preg_match_all('/(? :LightRowHead|DarkRowHead).*?>(.*?):.*?(?:LightRow|DarkRow) と書くことができます。 .*?>(.*?)
前後を一致させる必要がある場合は、次のように記述できます
$a = preg_match_all('/(LightRow|DarkRow) Head.*?>(.*?):.*?\1.*?>(.*?) 案の定、csdn の人々は熱心です。 、ありがとう、そして二階です..

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート