プロが教える店舗&オフィスのセキュリティ対策術

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

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

↓表示結果

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

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

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

A 回答 (1件)

preg_match('/^(.*)\n/s', $string, $matches);


$str = $matches[1];

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

http://php.net/manual/ja/function.preg-match.php
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2011/12/22 11:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!