• 締切済み

perl マッチさせる方法について

perlでマッチさせたいのですが、なかなかうまくいきません。。 詳細は $joho='これは、テストです。'; $seach='テスト'; if ($joho =~ m/$seach/) { print 'マッチしました。'; } とやっていますが、どうしてもだめです。 if ($joho =~ m/テスト/) { print 'マッチしました。'; } とすれば、マッチするのですが、何がいけないのでしょうか? 環境はperl5.8、EUC-JPです。 初心者な質問かもしれませんが、よろしくお願いします。

みんなの回答

  • A88No8
  • ベストアンサー率52% (834/1602)
回答No.1

こんにちは perlは、使ったことがありませんが.. oオプションを付けてみたら? m/pattern/o

関連するQ&A

  • 正規表現の質問です。

    実行環境がなく困っています・・ Perlで以下の正規表現はマッチするでしょうか? if("EUC-JP" =~ m|EUC|i ) { print "match"; }

    • ベストアンサー
    • Perl
  • perl 5.8.8 日本語マッチ

    perl5.8.8を使っています。 日本語にマッチする正規表現を書きたいのですが、どうしてもマッチしません。 例えば、以下のファイルtest.txtから「さしすせそ」だけを抽出し、表示させたいです。 ---------test.txt-------------------------------- あいうえお かきくけこ さしすせそ たちつてと -------------------------------------------------- ----------test.pl-------------------------------- use strict; use warnings; open(FILE, 'test.txt') or die "$!"; my @file = <FILE>; close(FILE); foreach my $line (@file){ if($line =~ /^さ/){ print "$line\n"; } } ------------------------------------------------ このtest.plを実行しても「さしすせそ」を抽出することが できません。 どうしたらよいのでしょうか? 自宅の新しいバージョンのperlだとできるのですが 会社のperlは5.8.8で顧客環境でもあるのでバージョンアップも できません。 すみませんが、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • perl でこのマッチは失敗しますか?

    perl でこのマッチは失敗しますか? my $one = "FEFRGrgarGEEeg+05fweaEFJIEI+A"; my $str = "FEFRGrgarGEEeg+05fweaEFJIEI+A"; if($str =~ m/$one/){ print "same"; }else{ print "difference"; } exit; 5時間ほど悩んでそれらしいところを見つけたのですが、この部分で失敗しているようでした。 「+」記号がある為だと思うのですが、何故、このようなことになるのでしょうか? このように、失敗するような避けるべき文字ありますか? また、+記号などがあっても正しくマッチを使う方法はありますでしょうか?

    • ベストアンサー
    • Perl
  • perlでの"."ドットマッチについて

    perlで.(ドット)のマッチについて 教えて貰えないでしょうか? test_01.comにマッチした時に test_01_comに変換 .(ドット)以前の文字は可変です。 testwindows.netとか testtesttesttest.jpとかもあります。 以上宜しくお願いします。

  • perlのマッチでマッチしたい物の中に空白とコンマがある場合どうしたら

    perlのマッチでマッチしたい物の中に空白とコンマがある場合どうしたらいいのでしょうか。 マッチしたい物=[IF, ELSE] if( $_[ 0 ] =~ m/\[IF, ELSE\]/ ) と試したのですが、間に\sでも入れるのですか?

  • 条件にマッチした行数のカウント

    perl 初心者です。 while (<>) { if (/条件/) {    print; } } 複数のファイルの中で、if文の /条件/ で指定した部分にマッチした行数をカウントして変数に入れたいのですが、ここからどうすればいいのかわかりません・・・。 初歩的な質問で申し訳ないのですが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • Perlのワンライナーをスクリプトにしたい

    初歩的な質問で恐縮ですが、以下のPerlのワンライナーを、スクリプトファイルに記述するには、どのように書けば良いのでしょうか。 perl -ne "print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ );" "in.txt" > "out.txt" 下記のようにしてみたのですが、ダメでした。 perl "script.pl" "in.txt" > "out.txt" ----- script.plの内容 ----- print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ ); --------------------------- 環境はWindowsのコマンドプロンプトです。バッチファイルでの使用を想定しています。 自分はPerlに関する知識が無いので、Perlに関するサイトも見てみたのですが、情報が膨大で、ピンポイントでこの問題を解決する情報を探し出す事が出来ませんでした。 やり方が分かる方がおられましたら、お教え頂けないでしょうか。

    • ベストアンサー
    • Perl
  • オブジェクト? perlをオーバーライドする方法?

    perl 5.6を使っております。 Perl5.8では PerlIOが入出力の際に文字コードを自動変換しているのですが この機能を5.6でもスクリプト互換で使いたい(スクリプトを5.6と5.8を同じにする)のですが、 既存のprint, getc, read, write関数をオーバーライド?することは可能でしょうか? 一々、if(5.8 <= $])としたくないためです。 例えば、外部がeucでperl処理がutf8の場合 sub getc{ return Jcode->new(...)->utf8; } sub print{ return Jcode->new(...)->euc; } sub read{ return Jcode->new(...)->utf8; } sub write{ return Jcode->new(...)->euc; }

    • ベストアンサー
    • Perl
  • / [ 【 の文字をマッチさせるには?

    / [ 【 の文字をマッチさせるには? 環境 perl version 5.005_03 while($line = <IN>){ if($line =~ ///){ (マッチした場合の処理) } } などとしたいのですが、/ [ 【 の文字にマッチさせるには どのように記述したらいいのでしょうか? 上記のように普通に指定するとマッチしませんでした。 よろしくお願いします。

  • perlで記号除去を行いたいのですがうまく行かない

    perlで記号除去を行いたいのですがうまく行かず困っています。 文字列はEUCです。そこから$patternのような記号を削除したいのですが・・・。 http://www.din.or.jp/~ohzaki/perl.htm#Character 正しくパターンマッチさせる を参考に $ascii = '[\x00-\x7F]'; $twoBytes = '[\x8E\xA1-\xFE][\xA1-\xFE]'; $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]'; $pattern=q([\!!\##\%%\--―ーー・・\//\;;\??\\¥__`‘\{{\}}\++\((\))\[[\] ]\**@@\$$&&\::\>>\<<\~ ̄\^^\"”\'’  \,,\..\==\||\、、\。。]); if ($data =~ s/((?:$ascii|$twoBytes|$threeBytes)*?)(?:$pattern)/$1/mg) { print "マッチした $& \n"; } print $data; として$dataに下の2つを与えてみました。 サンプル1 【あいうえお】 サンプル2 【aaa】 ところが・・・ サンプル1 (出力なし) サンプル2 旻aaa桿 何が悪いのかわかりません・・・ ためしにパターンに【】を追加したところサンプル2はうまく行きましたが サンプル1に変化がありません。(あいうえお も消えてしまう) 何か思い当たる点がありましたら教えてください。よろしくお願いいたします。

    • ベストアンサー
    • Perl

専門家に質問してみよう