Perl に関する質問です。


@test1 = ( "AAAAA\n" , "BBBBB\n" , "CCCCC\n" , "DDDDD\n" , "EEEEE\n" );
@test2 = ( "BBBBB\n" , "CCCCC\n" );

上記の2つの変数がある場合、

@test1 =~ m/@test2/;

というのを有効にする方法はあるでしょうか?

正規表現がよく理解できていないまま、このようにやってみたのですが、
うまくいきませんでした。

どなたか、よろしくお願いいたします。

Perl ver5.8.8

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/02/26 10:13:36
  • 終了:2007/02/28 19:31:26

ベストアンサー

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/26 10:24:35

ポイント23pt

配列をそのまま使うことは無理。

正規表現 - Wikipedia


何がやりたいかが良く分からないので、明示してもらえれば代替案は出せるかも。

id:zachouR

ありがとうございます。

$html = "d:\index.html";

open(LOAD,$html) || &error("Open Error : $html");

@test1 = <LOAD>;

close(LOAD);

このようにして、@test1の中にHTMLソースを入れています。

その「 @test1 」の中に「 @test2 」がきちんと入っているかどうかを調べたいのです。

自分が考えた方法は、@test1、@test2をjoinで連結してマッチしてみる、という方法なのですが、、、。

よろしくお願いします。

2007/02/26 10:33:11

その他の回答(3件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402007/02/26 10:24:35ここでベストアンサー

ポイント23pt

配列をそのまま使うことは無理。

正規表現 - Wikipedia


何がやりたいかが良く分からないので、明示してもらえれば代替案は出せるかも。

id:zachouR

ありがとうございます。

$html = "d:\index.html";

open(LOAD,$html) || &error("Open Error : $html");

@test1 = <LOAD>;

close(LOAD);

このようにして、@test1の中にHTMLソースを入れています。

その「 @test1 」の中に「 @test2 」がきちんと入っているかどうかを調べたいのです。

自分が考えた方法は、@test1、@test2をjoinで連結してマッチしてみる、という方法なのですが、、、。

よろしくお願いします。

2007/02/26 10:33:11
id:amagami No.2

amagami回答回数53ベストアンサー獲得回数02007/02/26 10:36:32

ポイント23pt

こういう処理ではいかがでしょうか。

@test1 = ( "AAAAA\n" , "BBBBB\n" , "CCCCC\n" , "DDDDD\n" , "EEEEE\n" );

@test2 = ( "BBBBB\n" , "CCCCC\n" );

@result = ();

foreach $hoo (@test2) {

 foreach $bar (@test1) {

  push @result, $bar if $hoo =~ m/$bar/;

 }

}

@test1 = @result;

print @test1;

http://q.hatena.ne.jp/answer

id:zachouR

ありがとうございます!

あまり、やりたいことを詳しく書いてなかったため、伝わりにくくすいませんでした。

こちらは、置き換えたりする場合に参考にさせていただきたいと思います。

2007/02/26 11:56:24
id:b-wind No.3

b-wind回答回数3344ベストアンサー獲得回数4402007/02/26 10:39:40

ポイント22pt

あんまり複雑にしても面倒でしょう。

$test1 = join '', @test1;
$test2 = join '', @test2;
if ( index ( $test1 , $test2 ) != 1 ) {
  print "match!\n";
}else{
  print "unmatch!\n";
}

でいいんでは。

第9章 文字列とディレクトリの操作

id:zachouR

ありがとうございます!

if ( index ( $test1 , $test2 ) != 1 ) {

の1の部分ですが、、、-1でなくてもいいのでしょうか?

2007/02/26 10:48:32
id:b-wind No.4

b-wind回答回数3344ベストアンサー獲得回数4402007/02/26 10:52:06

ポイント22pt

if ( index ( $test1 , $test2 ) != 1 ) {

の1の部分ですが、、、-1でなくてもいいのでしょうか?

あ、失礼 -1 です。


2番の方と自分のはそもそも問題の捉えかたがいます。

質問からはどちらか分からないので、都合のいいほうを選択してください。

http://q.hatena.ne.jp/answer

id:zachouR

はい、ありがとうございます。

こちらで使えそうなソースはb-windさんのほうです。しかし、置き換えたりする場合は2番のかたのソースを参考にしたいと思います。

さっそく組み込んだところ、きちんと動作いたしました。

今後は、まとめて置き換えたりできるようにするつもりです。

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

2007/02/26 11:55:02

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません