人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの正規表現で『文字列の先頭もしくは末尾にマッチして、かつマッチしない
残りの部分が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);
よろしくお願いします。

●質問者: shinwa-tokyo
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
ベストアンサー
<?php
$str = trim(preg_replace("/^(ABC)?(\S{2,}?)(ABC)?$/","$1 $2 $3",$str));
?>

trim まで使っちゃってますが (^^ゞ


shinwa-tokyoさんのコメント
ご回答ありがとうございます。後方参照を3つに分ける方法は目から鱗でした!
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ