残りの部分が2文字以上ならば、マッチした部分の前後にスペースを 入れて置換
する』ということを実現したいと思っています。
例えば、検索パターンが"ABC"の場合、
"ABCDE"や"DEFABC"はマッチしますが(それぞれ"ABC DE"と"DEF ABC"に変換)、
"CDABCEF"や"ABCD"はマッチしないといった具合です。
上記の内容を実現するために現在は以下のように2回置換しているのですが、
これを1つの正規表現で書くことはできませんでしょうか?
$str = preg_replace("/^(ABC)(\s{2,})/","$1 $2",$str);
$str = preg_replace("/(\s{2,})(ABC)$/","$1 $2",$str);
よろしくお願いします。
<?php $str = trim(preg_replace("/^(ABC)?(\S{2,}?)(ABC)?$/","$1 $2 $3",$str)); ?>
trim まで使っちゃってますが (^^ゞ
ご回答ありがとうございます。後方参照を3つに分ける方法は目から鱗でした!
2012/11/13 15:55:04