- ベストアンサー
正規表現で一つ目の区切り文字で区切りたいのですが・・・
aaa/bbb/ccc/ddd aaa/bbb/ccc/ddd/eee aaa/ccc/ddd $a=~/(.*)\/(.*)/; $1はそれぞれ aaa/bbb/ccc aaa/bbb/ccc/ddd aaa/ccc と成ってしまいます。 このように 「最後の/」で分けられてしまいます。 一つ目の/で分けるにはどうしたらよいでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$a=~/^([^\/]*)\/(.*)/; としてみてはいかがでしょうか。
その他の回答 (2)
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.3
.* だと「(それ以降で一致する限り) 最も長い文字列」になっちゃうので, そんな結果になりますね. Perl のバージョンにもよるけど, 今どきの Perl なら .*? で最短一致が指定できるので, $a =~ /(.*?)\/(.*)/; でうまくいったりしない? まあ split 使うって裏技もあるけど.
質問者
お礼
ありがとうございました。
- shukugawa
- ベストアンサー率30% (80/264)
回答No.1
行頭を意味する「^」を追加して、 $a=~/^(*)\/(*)/; とすればよいのではないでしょうか。
質問者
補足
早速ありがとうございます。 残念ながらだめでした。 $a="aaa/bbb/ccc/ddd"; $a=~/^(.*)\/(.*)/; print $1."\n"; print $2."\n"; ((結果)) aaa/bbb/ccc ddd
お礼
おおおお! 出来ました! が・・・難しいですね・・・