単純な正規表現は次のようになります。
/background:.*?;|position:.*?;/
タグの style 属性内のみをチェックしたい場合は、次の PHP テスト コードを試してください。
<?php
$str = '<div style="color: red; background: #000; position: fixed; top:0; left: 0;">Hey</div>';
echo preg_replace('/(<.*?style=.*?)background:.*?;|position:.*?;(.*?")/','$1$2',$str);
?>
また、属性にセミコロンがない場合 (一意の属性、最後の属性) の大文字と小文字を一致させるように求めました。セミコロンがない場合と一致させるには、それが唯一の属性であるか、最後の属性であると想定する必要があります。どちらの場合も、次の正規表現が機能します。
position:[^;]*?("|')
background:[^;]*?("|')
基本的に、キーワードに一致させるか、セミコロン以外の任意の文字が続き、引用符 (シングルまたはダブル) が見つかるまで 0 回以上繰り返すように求めposition:
ていbackground:
ます。
これは、「セミコロンなし」と呼ばれるケースをカバーしています。
次のコードは、すべてのケースで機能するはずです。最適化されておらず、わかりやすく例を示すためだけのものです。これは一連の呼び出しで構成されています。
$str = preg_replace('/(<.*?style.*?)(position:[^;]*?)("|\')/','$1$3',$str);
$str = preg_replace('/(<.*?style.*?)(background:[^;]*?)("|\')/','$1$3',$str);
$str = preg_replace('/(<.*?style.*?)(position:.*?;)(.*?")/','$1$3',$str);
$str = preg_replace('/(<.*?style.*?)(background:.*?;)(.*?")/','$1$3',$str);
echo $str;