68user's page 掲示板

Prev< No. 2259〜2264> Next  [最新発言に戻る] [過去ログ一覧]
No. 2259 # ミング [E-mail] 2001/11/09 (金) 14:36:01
>>2257 ナナシサソ
でもアルファベットと数字からなってるので、数字だと見てくれないみたいなんですけど、、、

No. 2260 # ナナシサソ 2001/11/09 (金) 23:11:03
>>2259 ミング
Perlは妙なことが出来たり・・
多分うまくいくと思うんだけどな・・

No. 2261 # ふくし [E-mail] 2001/11/10 (土) 18:48:47
ミングさんはじめまして。
まず abcd771gfds の件です。

#!/usr/bin/perl

$string = "abcd771gfds";
$string =~ /(\W+)\s+(\d+)/;

print "1:<$1> 2:<$2> string:<$string>\n";

を動かすと

1:<> 2:<> string:<abcd771gfds>

と出ました。

\W+ は、英数字(word)以外1文字以上なので、なくてあたりまえ。
\s+ は、空白文字(space)1文字以上なので、なくてあたりまえ。
\d+ は、数字(digit)1文字以上だが、前に \W も \s もないのでダメ。

もし、$1 に abcd、$2 に 771(7771 は間違い?)を入れようとするなら、

$string =~ /^([a-zA-Z])(\d+)/;

とかでしょうか。
^ は文字列の先頭を示します。
これをやらないとどこからサーチしはじめるかわからん。
[a-zA-Z] は英字。\d は数字。
(わー、目からウロコ。英字のカンタンな文字クラスってないんですね)

#!/usr/local/bin/perl

$string = "abcd771gfds";
$string =~ /^([a-zA-Z]+)(\d+)/;

print "1:<$1> 2:<$2> string:<$string>\n";

を動かすと

1:<abcd> 2:<771> string:<abcd771gfds>

となりました。

No. 2262 # ふくし [E-mail] 2001/11/10 (土) 19:01:48
ミングさん、つぎにファイル名生成の件です。
もっとカッコいいプログラムはいくらでもあるかと思うんですが、
ここではわかりやすく確実に動くのを取りました。

#!/usr/bin/perl

$fname = "Ab00010";

$fname =~ /([a-zA-Z]+)(\d+)/;
$fname_a = $1; # 英字部分
$fname_n = $2; # 数字部分

$fname_n++; # 数字部分に1加算
$fname_n = sprintf "%05d", $fname_n; # 先頭にゼロを詰めて5文字に
$fname = $fname_a.$fname_n;
print "fname: $fname\n";

$fname_n++; # 数字部分に1加算
$fname_n = sprintf "%05d", $fname_n; # 先頭にゼロを詰めて5文字に
$fname = $fname_a.$fname_n;
print "fname: $fname\n";

$fname_n++; # 数字部分に1加算
$fname_n = sprintf "%05d", $fname_n; # 先頭にゼロを詰めて5文字に
$fname = $fname_a.$fname_n;
print "fname: $fname\n";

実行してみます。

fname: Ab00011
fname: Ab00012
fname: Ab00013

ポイントは sprintf でしょうか。
これは文字列をいろんな形で整形しますが、汎用性が高すぎるので、

    sprintf "%0n", m;
        n はケタ数、m は数字

で、m を n ケタ、ゼロ詰めで表示するとだけ今はご説明します。

ただですね、これだと1ファイルが10個以上のサブファイルに分けると
Ab0002n に突入してしまって、
もし Ab00020 という元ファイルがあると名前が衝突しますが、
それはいいですか。

No. 2263 # 68user 2001/11/11 (日) 18:45:38
>>2258 オハツ
> UNIXの歴史について、知ってる範囲で教えてください。
「UNIXの1/4世紀」
        http://www.ascii.co.jp/books/detail/4-7561/4-7561-3659-1.html
を読みましょう。

No. 2264 # ミング [E-mail] 2001/11/12 (月) 13:51:26
ふくしさん、ナナシサソさん、

ご教授どうもありがとうがざいました。 やっと出来ました。
とても分かり易く助かりました。

今後もいろいろと宜しくお願いいたします!

Prev< No. 2259〜2264> Next  [最新発言に戻る] [過去ログ一覧]