アプリ版:「スタンプのみでお礼する」機能のリリースについて

aaa/bbb/ccc/ddd

aaa/bbb/ccc/ddd/eee

aaa/ccc/ddd

$a=~/(.*)\/(.*)/;
$1はそれぞれ
aaa/bbb/ccc
aaa/bbb/ccc/ddd
aaa/ccc
と成ってしまいます。

このように
「最後の/」で分けられてしまいます。

一つ目の/で分けるにはどうしたらよいでしょうか。

A 回答 (3件)

$a=~/^([^\/]*)\/(.*)/;


としてみてはいかがでしょうか。
    • good
    • 3
この回答へのお礼

おおおお!

出来ました!

が・・・難しいですね・・・

お礼日時:2006/12/04 11:34

.* だと「(それ以降で一致する限り) 最も長い文字列」になっちゃうので, そんな結果になりますね.


Perl のバージョンにもよるけど, 今どきの Perl なら .*? で最短一致が指定できるので,
$a =~ /(.*?)\/(.*)/;
でうまくいったりしない?
まあ split 使うって裏技もあるけど.
    • good
    • 1
この回答へのお礼

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

お礼日時:2007/01/12 23:57

行頭を意味する「^」を追加して、


$a=~/^(*)\/(*)/;
とすればよいのではないでしょうか。

この回答への補足

早速ありがとうございます。

残念ながらだめでした。

$a="aaa/bbb/ccc/ddd";

$a=~/^(.*)\/(.*)/;

print $1."\n";
print $2."\n";


((結果))
aaa/bbb/ccc
ddd

補足日時:2006/12/04 11:19
    • good
    • 0

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