perl初心者です。


たとえば「野球」という言葉が来たら
$yyyに1を代入したいと考えています。
現状このようになってます。
if($xxx eq "野球"){$yyy=1;}

しかし、ここから「草野球」「野球場」「草野球場」という言葉が来ても
$yyyに1を代入させるにはどうすればよいですか?
すいません。教えていただければと思います。

回答の条件
  • 1人2回まで
  • 登録:2006/06/06 19:19:30
  • 終了:2006/06/06 19:49:03

ベストアンサー

id:bonlife No.1

回答回数421ベストアンサー獲得回数752006/06/06 19:30:29

ポイント60pt

正規表現を利用したパターンマッチを行えば良いです。

if ($xxx =~/^.*野球.*$/) {$yyy=1;}
id:tubotti

ありがとうございます。

できました。

2006/06/06 19:47:24
  • id:bonlife
    正規表現を利用したパターンマッチングについては以下のサイトあたりで一通り勉強しておくと良いと思います。
    http://www.rfs.jp/sb/perl/02/09.html
    少し分かってきたら、以下のサイトを読むと面白いです。
    http://www.din.or.jp/~ohzaki/regex.htm
    参考になれば幸いです。
  • id:andi
    完了しているので蛇足かもですが。

    > /^.*野球.*$/

    は /野球/ だけで良いですね。

    正規表現において
    「^」は「先頭」
    「$」は「末尾」
    「.」は「任意の文字列」
    「*」は「前の文字が0以上連続していること」
    を表しています。

    つまりもとの正規表現を日本語で表現すると
    「先頭と末尾の間に任意の文字列が0以上連続している間に「野球」が含まれている文字列」にマッチすることになりますが、
    /野球/だと「文字列に「野球」が含まれている文字列」にマッチしますので、同じ結果を得られます。

    ちなみに正規表現を使用せずに
    if (index($xxx,'野球') >= 0) {$yyy=1;}
    でも良いですね。好みでどうぞ。

  • id:tubotti
    みなさまどうもありございます。
    今後ともご指導いただくことになると思いますが
    どうぞよろしくお願いいたします。

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

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

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

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