質問: 以下のようなケースでpreg_replaceを使用と考えております。 ■文字列 label_jpfr-t-inv_VoluntaryRetainedEarningsINV_totalLabel.1 ■条件 大文字が出現する直前までを削除 ■削除したい文字列 label_jpfr-t-inv_ ■結果の文字列 abel.1 ``` $hoge=preg_replace('/(.+?)[A-Z]/', '', $hoge); ``` 恐らく、最後にマッチするケースで返してくるのですが、 どのようにすれば削除したい文字列に一致させることができるのかをご教示ください。 宜しくお願い申し上げます。
回答: 条件は、「文字列の先頭から、最初に大文字が出てくるまでの部分を取り除く」ですよね? ですから、「先頭から始まり、大文字**以外**で構成された文字列」という正規表現を作ってやればよいです。 ``` $hoge = preg_replace('/^[^A-Z]+/', '', $hoge); ``` で、結果は VoluntaryRetainedEarningsINV_totalLabel.1 になります。