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

PHPで、以下の置換(正規表現)はどういう意味でしょうか?
preg_replace('/\s+?(\S+)?$/', '', $string)


●質問者: P-mako
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP String 正規表現
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JTCY
●35ポイント ベストアンサー

preg_replace(A,B,C)は、CからAという表現を抜け出し、Bに変換するperl互換の正規表現関数です。この表現では、

\s → 空白文字(スペース、タブ、改行、復帰、ラインフィード)

+ → 一回以上の繰り返し

? → 最短マッチ(全体の条件に当てはまる中で、一番短いものを選択)

\S → 空白文字以外

$ → 行末

なので、解釈すると

空白文字が何文字か続いて、その後に空白文字以外が何文字か続く場合、それを削除してしまう

ということになります。

#ただし、\s+?ってのは、実質空白文字一つにしかマッチしないのでは……

◎質問者からの返答

ご回答ありがとうございます。

メタ言語を分解して解説いただいたのは、わかりやすくて助かりました。

ありがとうございます。


2 ● ぱこち
●35ポイント

\s は空白文字、\S は空白以外の文字、+? は一文字以上の最短マッチ、$ は文末を表しています。

なので、最後の単語または行を取り除く処理をしているのだと思われます。

長い文章の最初の数十文字を概要として表示する時などに、一定の長さで文字列を切り出した後に半端な行または単語を切り落とすために使われるような正規表現ではないでしょうか。

検索してみたら「文字列を丸める」という表現が使われていました。

◎質問者からの返答

ご回答ありがとうございます。

OCEAN-NETでも同様の正規表現が案内されているんですね。

ありがとうございます。

関連質問


●質問をもっと探す●



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