• ベストアンサー

正規表現の$patternを先日教えていただきましたが

正規表現の$patternを先日教えていただきましたが 全角%の前にある全角の数字だけを抜き出したいのですが 下記の記述で、小数点が出た場合に小数点以下しか拾いません。 88.5%の場合、結果が5となります。 ///////////////////////////// $str=<<<eof 80% すべて半角 82% すべて半角 85% すべて全角 88.5% すべて全角 XX% 不正なデータ 92% まぜこぜ 95% まぜこぜ eof; $pattern="/[0-9]+(?=%)/u"; ////////////// よろしくお願いいたします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

単純になるなら $pattern="/[.0-9]+(?=%)/u"; ただしどこまで精度をだしたいかによって考え方が若干複雑になります。 たとえば・・・ 「88.5%」はいいとして、「88.% 」、「.5% 」、「10.88.5% 」など 中途半端なデータを想定するかどうかで処理がかわってきます。

kei396
質問者

お礼

そうなんですね、色んな場合が想定できて 確かに、複雑になるとおもいますが 現時点では、yambejp様に教えていただいた patternで運用してみます。 とても助かりました、ありがとうございます。

関連するQ&A

専門家に質問してみよう