[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 05/09 22:14 / Filesize : 220 KB / Number-of Response : 914
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 30箱目



1 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 22:54:12 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 pc8.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2006/12/21現在の最新版: 5.8.8
● 2006/12/21現在の開発版: 5.9.3

前スレ
Perlについての質問箱 29箱目
pc11.2ch.net/test/read.cgi/tech/1166708139/

リンク集は>>2-3
過去スレは>>4

90 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:24:23 ]
質問です。
正規表現で伸ばし棒を使うとエラーが出てしまうのですがこれを回避する方法はないでしょうか?
よろしくお願いいたします

91 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:25:37 ]
伸ばし棒ってどれ。

92 名前:デフォルトの名無しさん [2007/03/22(木) 20:26:57 ]


これです

93 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:27:49 ]
これも同じ人?向こうの方がいいんじゃないかな。

94 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:30:15 ]
>>90
具体的にエラーがでる正規表現と、エラーの文も書いてくれ

95 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:33:42 ]
>>94

my $str = "test";
$str =~ s/ニート//;

Unmatched [ in regex; marked by <-- HERE in m/ニー <-- HERE ト
and Settings\\デスクトップ\httpd142p\test.pl line 3.

こんな感じです

>>93
>>90=>>92です

96 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:34:12 ]
>>92
2バイト目が [ になってるんでperlが混乱してるんだな。

97 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:37:10 ]
>>95
\Q\Eで囲め

98 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 20:40:14 ]
>>97
!!!!!
できました!!ありがとうございます!!!



99 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:22:20 ]
\Q\Eか。それ忘れてた。前それではまって、m/コピ\x{81}\x{5b}/なんてことやってた。

100 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:33:38 ]
あほうは、新テンプレ通りやれよ。同じ事何度も言わせんな。

101 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:52:35 ]
そうだな。
>>98は黙って>>10に書いてある通りのことをやれ。

102 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 21:53:25 ]
シフトJISって懐かしい。

103 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:08:34 ]
#!/usr/local/bin/perl
use strict;
use LWP::Simple;
use XML::Simple;

my $api = 'd.hatena.ne.jp/exist?mode=xml&url=';
my $url = 'www.yahoo.co.jp/';

my $document = LWP::Simple::get($api.$url)
or die "cannot get content from $url";

my $parser = XML::Simple->new;
my $data = $parser->XMLin($document);

print $data->{count}->{bookmark}->{content}, "\n";


www.itmedia.co.jp/enterprise/articles/0702/26/news011.html
ここのサンプルなんですがエラーがでました
何が悪いのでしょうか?そんなに難しいことをやってるわけではないと思うのですが

104 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:40:11 ]
なんていうエラーがどこで出たのよ?


105 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:45:19 ]
HTTP 500 - 内部サーバー エラー です



106 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:48:42 ]
なんでブラウザにエラーが出るわけ?


107 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:48:48 ]
テンプレに

>エラーが出たらエラーをそのままコピペしろ

と入れた方がいいね。

>>105
コマンドラインで実行した結果を出せよ。出せないなら、WebProg逝き。

108 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 22:56:48 ]
自己解決しました
コピペした括弧が全角でした

なんで括弧だけ全角なのか意味不明です
わざとなんでしょうかね
ひどいサンプルです




109 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 23:02:58 ]
ここって初心者向けのスレなの?

110 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 23:05:47 ]
行番号が付いてるところからも、コピペを前提とはしてない、実際に
手を動かして理解するためのコードだとは思うが、なんで括弧が半端
に全角になってるんだろうな。(9行目の2つと13行目の閉じ括弧)



111 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 23:35:37 ]
普通の記事をいつも上げるときに使ってるスクリプトがお節介でもしたんだろう。

112 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 23:37:14 ]
ftpで相手サーバの接続先にあるファイルのリスト(ワイルドカードで指定した名前に
一致するファイルの一覧)を配列に取得したいのですが相手サーバの設定の関係で
wgetとやらを使って接続しないといけません。
wgetの使い方は調べてみたのですが、それをPerlから実行してファイル一覧を取得
するにはどうやったらよいのでしょうか?

113 名前:デフォルトの名無しさん mailto:sage [2007/03/22(木) 23:44:57 ]
open("wget -O- $url |");

どんな内容が返ってくるかは実際に見てみれ。


114 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:07:22 ]
>>74
サニタイジングなんて言ってたら高木大先生に張り倒されるぞ!

115 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 00:43:28 ]
たいていの場合wget呼ぶよりはLWP使うほうがプログラムは楽だと
思うのだが、wget使わないと取れないってどういう仕掛けなのだろう??


116 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 02:01:06 ]
FTPで接続だから、LWPよりもNet::FTPじゃね?

117 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 07:36:19 ]
>>113
ありがとうございます。やってみます。

>>115-116
Net::FTPで作ってたのですがこれだと相手に繋がらなくて客先の担当の方が
「wget使ってください」とのことでした。

118 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 08:57:31 ]
wgetでとれてNet::FTPだとだめというのもかなり不思議だな。
原因はわかってるのかな。それともwgetだと実績あるから
調べるの面倒だしそれにしとけとあしらわれたか?




119 名前:デフォルトの名無しさん [2007/03/23(金) 09:41:38 ]
突然ですが、xxxyyy.html というファイル名のファイルの、
全てのa要素のhref属性値をzzzwww.html というファイルに出力する方法を教えてください。

120 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 09:56:38 ]
>>118
passiveコマンド叩けば通るとかいうオチだったりして……


121 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 10:23:13 ]
>>119
突然だねぇ・・・

122 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 10:24:01 ]
>>119
ググレカス
module.jp/blog/monday_module_HTML-LinkExtor.html

123 名前:デフォルトの名無しさん mailto:sage [2007/03/23(金) 17:56:12 ]
突然DOMで対抗してみたり

javascript:a=document.getElementsByTagName('a');b='';for(i=0;i<a.length;i++)b+=a[i].href+'<br>';document.write(b);

124 名前:デフォルトの名無しさん mailto:sage [2007/03/26(月) 16:19:01 ]
>>117
pasv() しても駄目か?
ファイヤーウォールがある場合は passive mode にしないと駄目なことがあるぞ。


125 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:20:00 ]
初心者質問で申し訳ないのですが、perlでコロン単体にはどのような意味があるのでしょう。
リファレンスを引いても載ってないし...。

126 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:49:02 ]
三項演算子?

127 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 11:54:00 ]
>>126
下記(*)の$_の手前にあるヤツなんですが・・

# CSV形式の $line から値を取り出して @values に入れる
{
my $tmp = $line;
$tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/;
@values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} …(*)
($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g);
}
Perlメモ
www.din.or.jp/~ohzaki/perl.htm#CSV2Values

128 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:05:15 ]
どう見ても三項じゃん



129 名前:デフォルトの名無しさん mailto:sage [2007/03/28(水) 12:12:49 ]
なるほど。ありがとうございました。

130 名前:デフォルトの名無しさん [2007/03/29(木) 01:14:28 ]
substrで数値文字列から”001”のような文字列を切り出したいのですが、
デフォルトでは数値として扱われてしまい、1になってしまいます。
キャストの方法を調べたけど思うような情報が得られません。
もうしわけありませんが、教えていただけないでしょうか。

131 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 01:41:02 ]
sprintfとかは?

132 名前:デフォルトの名無しさん [2007/03/29(木) 08:07:32 ]
>>130
ウチの環境下だと、普通に文字列認識なんだが変数かなんかに突っ込んで、
計算かましたりしてない?
% perl -le 'print substr qq{00001}, 3'
01
% perl -le 'print unpack qq{x3A2}, qq{00001}'
01

133 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:08:16 ]
上げてもた…

134 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 08:27:21 ]
文字列比較で $name == "admin" とかやってるのでは

135 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 14:13:36 ]
+で連結してるとか。


136 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:40:09 ]
$val="2007年3月29日○○の温度は20度、○○の温度は10度、○○の温度は15度";
のような文字列があった場合
○○の温度は10度の"10"を取得したいのですが、
どのように正規表現を書けばいいんでしょうか。

$value =~ /([0-9]+)/ のようにすると $1=2007 となりますが、
最大マッチしたうちのn番目を取得できたりする書き方があるんでしょうか


例がちょっとあれですが、○○には同じワードが入ることを想定してます。

137 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:42:39 ]
本嫁

138 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 19:57:25 ]
while ($val =~ /([0-9]+)/g){ push(@val, $1); }
print "$word[3]\n";

汚くなったけど、上記のようにしてなんとかできました。失礼しました。



139 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:08:05 ]
まー本人がいいっていうのならいいよね(´・ω・`)

140 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:10:40 ]
なにか他にやりかたあれば教えてください(つД`)

141 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:28:37 ]
3年後に自分のコードみて「俺アホやん」 と思えたら、
君は著しく成長できたということだ。

142 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 20:45:58 ]
3年とはのんきな話だな。3ヶ月で一定のレベルに達しないなら、その人が向いてないかまたはその言語に悪意が混入されているかだな。

143 名前:壁|・ x ・)つ○ mailto:usage [2007/03/29(木) 22:09:20 ]
$val =~ /(\d+)度/g

144 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 12:21:03 ]
>>142
そんなこと言うなよ

145 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:55:55 ]
コーディングテクは日々進化し続けると思うけどなぁ。
俺が還暦を迎えた頃にはスゲーことになってると思うんだ。

146 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:01:15 ]
base.pmなんだけど、

sub get_fields {
() = \%{$_[0].'::FIELDS'};
return \%{$_[0].'::FIELDS'};
}

「() =」これって何してるんでしょう?
perl5.003で動作するように書き換えられないかな?


147 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:06:28 ]
>>146
コメントで「『タイポじゃねーの警告』は黙れ」と書いてあるだろ。
つまりその部分は動作とは無関係。

しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。

148 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:23:03 ]
>>147
すまん。
エラー書いてなかった。
Can't modify stub in list assignment at /path/to/base.pm line 43, near "};"
こんなのが出る。


> しかし5.003とはまた随分古いバージョンだな。せめて5.005あたりにしとけよ…。

大人の事情というやつで・・・。




149 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:58:15 ]
>>148
search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod#Can't_modify_%25s_in_%25s

- () = \%{$_[0].'::FIELDS'};
+ # () = \%{$_[0].'::FIELDS'};
+ local $^W = 0;

150 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 00:24:17 ]
> 大人の事情というやつで・・・。

そんな仕事辞めてしまえよ

151 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:14:49 ]
5.003を理由に依願退職する>148であった。

152 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:08:39 ]
linuxのperl向けのIDEでお薦めはなんでしょうか


153 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:12:15 ]
emacs一択。



あとEPICとか? つーかPerlにはいいIDEないよ。

154 名前:152 mailto:sage [2007/03/31(土) 02:51:38 ]
ども

そうですか、ではボチボチとやってみます

155 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 02:53:14 ]
春先は150みたいな
社会のしがらみスルー系のレスの
ネタっぽさが薄まるんだよな

156 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 03:48:41 ]
(1..10)
は1から10までの数を持つリストを生成する式だと思うんですが、
$hoge = (1..10);
print $hoge;
とやればリストの最後の値である10が変数$hogeに代入されると思ったのに
なにも出力されません。
スカラー変数にリストを代入すると、リストの最後の値が代入されると思うんですが
どこが間違っているんでしょうか?

157 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 03:59:22 ]
Perl7っていつ出るんですか?

158 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:02:35 ]
>>156
↓を実行するとわかるけど、範囲演算子(..)が範囲内の値リストを生成するのは、
リストコンテキストの時。スカラーコンテキストでは、違う意味になるよ。
d.hatena.ne.jp/palmo/20060724/rangeop

while (<DATA>) {
  chomp;
  $hoge = (1..3);
  print "$_ = $hoge\n";
}

__DATA__
AAA
BBB
CCC
DDD
EEE
FFF



159 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:05:29 ]
..は範囲演算子。

$hoge = (1..10)
のようにスカラコンテキストで用いた場合、..の左項が真になった
時点から右項が真になるところまで真を返す。(...だとちょっと変わる)

いずれかの項が定数値であった場合、それは $. との比較であるとみなされる。

全く読み込んでいない状態なら $hoge の値は $. == 1 の結果に等しい。


160 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 04:17:29 ]
最後のとこ、全く読み込んでいないなら、$. == 1の結果は偽、で。



161 名前:デフォルトの名無しさん mailto:sage [2007/04/01(日) 16:28:17 ]
>>158,159
...演算子もコンテキストで意味が変わるんですね。
わかりました。ありがとうございます。

162 名前:デフォルトの名無しさん [2007/04/02(月) 04:58:36 ]
perlのコミュは初心者に優しくて好きだ。
スクリプト言語経験者でも表記にとっつきにくいからかな。
マニュアル嫁で突っ返されることが少ない気がする。
(マニュアル読んでもわかんなかったりするし;ω;)

163 名前:デフォルトの名無しさん [2007/04/02(月) 06:06:27 ]
XpSP2でActivePerl-5.8.8.820-MSWin32-x86-274739.msiを
インストールしたんだけど、Jcode.pmがインストールされない。
なぜ?教えてください。

164 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 07:17:48 ]
ActivePerlのことはよく知らんが、
Perl 5.8.0以降Jcodeが標準モジュールじゃなくなったからじゃないかな

165 名前:デフォルトの名無しさん [2007/04/02(月) 09:35:55 ]
>>164
5.8.0以降はJcode.pmが標準と聞きましたので
当然、インストールされると思ってたのですが、
探しても見つからないんですよ。

166 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 09:41:41 ]
5.8.0からEncodeモジュールが標準装備になってるからそれ使え。

167 名前:デフォルトの名無しさん [2007/04/02(月) 10:17:24 ]
>>166
使っているアクセス解析プログラムがJcode.pm使っているんですよ。
perlのPG経験がないんで、改造も出来ないんです。

これです。
ttp://www.bflets.dyndns.org/Tools/AWStatsJpn.html

168 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 10:23:07 ]
>>167
池沼か?標準じゃ入ってないと言ってるだろうが。



169 名前:デフォルトの名無しさん [2007/04/02(月) 10:29:59 ]
それじゃ別の方法、考えています

170 名前:デフォルトの名無しさん [2007/04/02(月) 10:30:15 ]
考えます

171 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 10:34:35 ]
普通にJcode.pmインストールすりゃいいじゃないか。莫迦か

172 名前:デフォルトの名無しさん [2007/04/02(月) 10:46:55 ]
>>171
インストールしてもうまくいかないんですよ
やりかたが間違ってるかもしれませんが。
説明しているページで、そんなモジュールなかったり。
以下は参考にしたページです。

ttp://sakaguch.com/SetJcodePm.html

win_install.plなんてないし。

マニュアルで置いても、変換後のファイルは0バイトだし。

173 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 11:33:15 ]
>>172
Jcodeインストールするならコマンドプロンプトからppm(今時はppm-shellかな)を起動させて
install Jcode(enter)
で一発で入ると思うが。

174 名前:デフォルトの名無しさん [2007/04/02(月) 11:57:01 ]
>>173
ありがと
意味不明だけど、勉強してやってみる

175 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:17:49 ]
つ[ perl -MCPAN -e shell ]

176 名前:デフォルトの名無しさん [2007/04/02(月) 12:23:33 ]
ありがと。ppmでインスコできた。
でも、うまく動かなった。

これはperlが原因じゃないから
ここで、さよなら。

じゃ、教えてくれた人、ありがと。

177 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:25:27 ]
っ ttp://openlab.jp/Jcode/index-j.html

178 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 12:31:16 ]
次から低レベルな質問は
webprog板でやってくださいね



179 名前:デフォルトの名無しさん [2007/04/02(月) 13:02:54 ]
>>178
そのわりに、明確な回答書いてる奴いねーけどな

180 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 13:14:06 ]
こんな時間帯だからじゃないの?w
公式のは古いからいつものサードパーティの
所にver.2.06があるからそれをインストールするだけじゃん

181 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 09:34:45 ]
すいません。正規表現についての質問なのですが・・・
abcあいうえお123./<>~"@
の様な文字列から日本語だけマッチするもしくはASCIIコードだけマッチさせるようにするには
どうすればよいのでしょうか?

182 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 10:12:57 ]
>>181
文字コードをeucにして、

my $pat = pack("C*",0x20,0x21..0x7e);

/[$pat]+/ でASCII
/[^$pat]+/ で日本語(と制御コード)

183 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 10:15:20 BE:264938483-PLT(12980)]
module.jp/blog/regex_unicode_prop.html

184 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 20:53:28 ]
正規表現でのグループ化について質問です

$_ = 'AAAbarbarbazZZZ'; だとして

@a = /AAA(foo|bar|baz)+ZZZ/;

とすると、@a の中身は最後にマッチした @a = ('baz') 一つとなりますが、
これを @a = ('bar', 'bar', 'baz')
とする正規表現はあるでしょうか?

(){n} でなく ()+ を使ったのは数量が固定ではないためです。

なんらしか正規表現方法で
上記一文で済ませられたら…と思い質問させていただきました。

185 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:38:28 ]
>>184
何でも一行に詰め込みゃいいってもんでもないけど…
@a = splice @{[ grep length, split /(foo|bar|baz)/, 'AAAbarbarbazZZZ' ]}, 1, -1;

186 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 21:55:26 ]
確かに一行ですが…^^;レスありがとうございます。
'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合
のチェックを別にしなければなりませんが。

やはり ()+ でのマッチを正規表現の修正で全部リストする無理でしょうか

187 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 22:27:05 ]
m/AAA((?:foo|bar|baz)+)ZZZ/
とかすれば全部とれることはとれる。
リストにはならないけど。


188 名前:デフォルトの名無しさん mailto:sage [2007/04/05(木) 22:29:35 ]
>>186
> 'AAAfooXXbarYYYYYbazZZZ' のように目的外の物が混ざっている場合
その場合 @a は () とするべきか
AAA foo XXbarYYYYYbazZZZ と分けるべきか
AAAfooXX bar YYYYYbazZZZ と分けるべきか
AAAfooXXbarYYYYY baz ZZZ と分けるべきか
>>184からは読み取れないよ?



189 名前:184 mailto:sage [2007/04/05(木) 23:22:15 ]
レスありがとうございます

>>187
()+ での一気取得が駄目だった場合、私もそれを候補の一つに考えていました
リストにするには(foo|bar|baz)のマッチングがもう一回必要になってしまいますが


>>188
説明不足でした。申し訳ありませんでした
(ある程度大きいテキストから)
'AAA' と 'ZZZ' の間が (foo|bar|baz)+ のみで構成されている箇所を探し
その部分をリストとして取得したいと思っております

ですので、提示くださった選択肢の中では
>その場合 @a は () とするべきか
を考えています

(foo|bar|baz) の部分は実際はかなり重そうな正規表現の羅列と選択(|)で構成されていて
()+ による繰り返しも回数も非常に多く
(foo|bar|baz) のマッチングによる2度手間(切り出し・リストへ分割)は避けようと思い
今現在は下記の感じの処理を考えています
if (/AAA/) {
while ($' =~ /^(foo|bar|baz|ZZZ)/) {
if ($1 eq 'ZZZ') { OK; last; }
push(@a, $a);
}
}
}

そこで >>184 の質問するに至りました
マッチングも一回で一文で済ませられたら…と
長文失礼

190 名前:184 mailto:sage [2007/04/05(木) 23:38:24 ]
>>189
while ($' =~ //)

while ($' =~ //o)
を考えています


今docを読み込んでいるんですが ()+ でのグループの繰り返しマッチングの
全リスト取得は、正規表現工夫しても仕様的に無理なのかな…






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<220KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef