• ベストアンサー

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

phpを使って、正規表現と関数で文字列の編集を行っているのですが いい方法が思いつきません。 やりたいことは以下のようなことです。 $find ="\n"//マッチさせたい文字 $string = "リンゴ、空、\nミルク、車\n";//検索対象 $str=関数($string);//わからない部分 print($str); ↓表示結果 リンゴ、空、\nミルク、車 文字列のインデックスの0から、最後にマッチした文字列の直前までを取得するにはどうしたらよいでしょうか。 またこのような表現には何か名前がついていますか? ご教授ください。

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

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.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

webwebwebweb
質問者

お礼

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

関連するQ&A