こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

正規表現:文字列の最後にマッチした文字以外を取得

phpを使って、正規表現と関数で文字列の編集を行っているのですが
いい方法が思いつきません。
やりたいことは以下のようなことです。

$find ="\n"//マッチさせたい文字
$string = "リンゴ、空、\nミルク、車\n";//検索対象
$str=関数($string);//わからない部分
print($str);

↓表示結果

リンゴ、空、\nミルク、車

文字列のインデックスの0から、最後にマッチした文字列の直前までを取得するにはどうしたらよいでしょうか。

またこのような表現には何か名前がついていますか?
ご教授ください。

投稿日時 - 2011-12-22 11:29:00

QNo.7203357

困ってます

質問者が選んだベストアンサー

preg_match('/^(.*)\n/s', $string, $matches);
$str = $matches[1];

preg_match の第3引数を指定すると、その変数にマッチした文字列が格納されます。
正規表現中に括弧でくくられた部分があると、その部分が$matches 配列の添え字1以降にキャプチャされますので、
行頭から\nまでをマッチさせる正規表現を指定した上で、必要とする「行頭から最後にマッチした文字列の直前」部分を括弧でくくってやれば、その内容が取得できることになります。

http://php.net/manual/ja/function.preg-match.php

投稿日時 - 2011-12-22 11:40:53

お礼

なるほど!
正規表現の括弧の使い方を何となく
式のグルーピングとして使っていたのですが
検索した値を参照するために使うのですね。

ありがとうございます。
助かりました。

投稿日時 - 2011-12-22 11:50:20

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問