• 締切済み

/ [ 【 の文字をマッチさせるには?

moon_piyoの回答

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.1

こんにちは (1) \Q~\Eでくくる if ($line =~ /(\Q/\E|\Q[\E|\Q【\E)/) { } (2) 正規表現は忘れてindex()を利用してみる if (index($line, "/") > -1 ||index($line, "[") > -1 ||index($line, "【") > -1) { }

関連するQ&A

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

    • ベストアンサー
    • Perl
  • 「?」が含まれるマッチについて

    perlの文字マッチについて「?」が含まれる場合のマッチさせる方法について教えていただきたいです。 例) $hoge="papa?no=1,mama?no=2,cat=?no=3"; $hogehoge="cat=?no=3"; $hoge =~ m/$hogehoge/i; 上記の場合、文字内に「?」がある為にマッチしません。メタ文字として判断されているのでしょうか…。 この場合、マッチさせるにはどのような方法がありますでしょうか。 一度、「?」を違う文字に変換すれば出来るのではないかと思いますが、そのままの形でのマッチを求めています。 どうかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • パターンマッチ

    perlの勉強を始めてまだ1週間くらいの初心者です。ゼミでperlのプログラムを渡されて解読するように言われperlを勉強しています。早速、質問なのです。 $fhはspecファイルを読みこんでいます。 1:while(my $line=<$fh>){ 2: chomp $line; 3: next if($line=~ /^\s*\#/ || $line=~ /^\s*$/); 4: : 5: : と続いて行きます。質問はプログラム3行目の $line=~ /^\s*\#/ || $line=~ /^\s*$/ の意味です。この意味がいまいち良く分りません。どなたか教えていただけないでしょうか。 ちなみにこのプログラムはUNIX MAGAZINE2005.9で紹介されたgenhtpgというシステムのプログラムと聞いています。

    • ベストアンサー
    • Perl
  • 初心者で、困っています。(文字化け)

    すみません、すごく初歩的なことで困っています。 本を見ながら、下のようなものを書いたのですが、 出力すると、文字化けをしてしまいます。ウィンドウズの環境で、Perlは5.8を使い、読み込みのテキストはUnicodeです。どのようにすれば、文字化けをしないで、読み込めるのでしょうか。 open ( IN , "LBa3_00028.txt" ) or die; open ( out , ">out.txt" ); while ( $line = <IN>){ print out "$line\n"; } close(out); close(IN);

    • ベストアンサー
    • Perl
  • perl マッチさせる方法について

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

  • 『マッチしない』をなるべく短く

    verは1.8.7です。 ifで文字列が指定した正規表現と『マッチしない』場合を判定したいんですがそのまま書くと unless @value =~ /^[0-9]{4}/ みたいになります。 unlessだと先に条件式を見てからひっくり返さないといけないので『マッチしない』を判別する演算子があればいいのですが、マニュアルのStringとRegexpのページを見ても分かりませんでした。 もしあったら教えてください。あとマニュアルにある場合はどこに書いてあるか教えてもらえると嬉しいです。

    • ベストアンサー
    • Ruby
  • 置換する文字にマッチした文字の一部を使うには

    長い文字列があったとして、それを10文字おきにスペースを1つずつ入れたいとします。 例えばPerlならば、以下のような処理で済むわけですが、 $s =~ s/(¥w{,10})/$1 /g; Javaの正規表現を使うには、どのように記述すれば良いでしょうか。 replaceAll()などで実装できるでしょうか。

    • ベストアンサー
    • Java
  • 小文字から大文字への変換後のパターンマッチ

    以下のように英数字を小文字から大文字に変換し、 その後、パターンマッチさせるように記述し、 $nameをテニスコートてみてもマッチしませんでした。 たぶん\Qテニスコート\Eの\Q~\Eが問題なのだとは思うのですが \Q~\Eがないとエラーとなってしまうため、外せません。 このような場合、どうしたらいいのでしょうか? $name = uc $name; if($name =~ /\Qテニスコート\E|TENNIS/){ push(@error, 'テニス関係は入力できません'); }

    • ベストアンサー
    • Perl
  • whileの前の<IN>やその後の処理が理解できません。

    whileの前の<IN>やその後の処理が理解できません。 これをわかりやすく書くとどうなるのでしょうか? このような記述方法は、一般的でしょうか? my $line = ""; open(IN, "<", "test.txt") || die "*** err"; while(<IN>){ $line = $_; $line .= <IN> while ($line =~ tr/"// % 2 and !eof(IN)); <--- この処理が理解できません。 } よろしくお願いいたします。

    • ベストアンサー
    • Perl