• ベストアンサー

perlで正規表現(正の数)

perlで正の数の数値を判定したいと思っています。 $testが0か1しか許容したくないので下記のように正規表現を作成しました。しかし、「-1」 を$testに設定すると何故か下記のif文をスルーしてしまいます。どのようにすればよいでしょうか? if($test !~ /[0-1]/) { # エラー }

  • Perl
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • _kappe_
  • ベストアンサー率68% (1522/2216)
回答No.1

$testの内容として0または1の一文字だけを許可したいなら if ($test !~ /^[01]$/) { print "エラー\n"; } のようにしてください。

unko347
質問者

お礼

ありがとうございます

Powered by GRATICA

関連するQ&A

  • Perl・正規表現が分かりません

    Perlでプログラムを書く場合、 ある文字列の文字数が5文字且つ、文字列の先頭に[0-5A]を必ず含み、そして残り4文字にも[0-5A]のみを必ず含む場合、Trueを表示。 それ以外はErrを表示する。 多分、全て、正規表現でできると思うのですが、分かりません。教えていただけないでしょうか? 宜しくお願い致します。 $test = "0AAAA"; if(正規表現){ print "True"; }else{ print "Err"; } ↑結果:True $test = "aAAAA";の場合、 結果:Err

    • ベストアンサー
    • Perl
  • Perlの正規表現

    Perlの正規表現についての質問です。 例) 899 YES Alt 0 0.000 pps 2.000 pps 4.000 pps 0 2 YES Alt 0 1.222 (space)-0.100 (space)3.000(space)0 103 NO Alt 0 3.333 % 0.000 % 0.000 % 0                ^^^^^ =====抜粋======================================== if($_ = ~ / Alt+(\s+)+0+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+)+(\s+)+(\S+){ print OUT "\n$5,"; ================================================= 上記のような文字列があるとして"^^^^^"だけを抜き出したい場合の正規表現はどのようにすればよろしいのでしょうか? 考えたif文では当たり前ですが2番目の(-0.100)が抜き出せません。また、検索できた順に抜き出し、出力したいので if文を二つ書くのは避けたいです。 どなたか教示ください。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • Perl正規表現わかりますか?

    下記のPerl正規表現ですが、どんな意味か分かるでしょうか? $var =~ s!/([^/]+|~(\.\.))/\.\./!/!g 参考書も読んでみたのですが分かりませんでした(セットされている文字列にどんなマッチング、置換をしているのでしょう) お分かりの方いれば、よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlの正規表現について教えて下さい。

    perlの正規表現について教えて下さい。 【1】next if /^abc¥[1|2|3|4¥]/; 【2】next if /^abc¥[¥[1-4¥]¥]/; 例えばですが、 abc[1] abc[2] abc[3] abc[4] だった場合、next ifでスキップしたいと考えています。 【1】の場合、成功しましたが、【2】だとスキップされませんでした。 abc[ ではじまり、その後ろが「1、2、3、4」のいずれかで、]で閉じる場合、 スキップしたいと考えています。 【1】の場合、現在は[4]までだけですが、これが、[1]から[100]まであった場合, 1|2|3・・・99|100のように記述する事になってしまいますので 困っております。

    • ベストアンサー
    • Perl
  • 文字数の正規表現について

    perlであるフォームから数字だけ(4桁)入力してもし4個以外の文字だったらエラー表示としたいのですが if($valueが4個の文字数でないとき){エラー} とした場合($valueが4個の文字数でないとき)の部分はどのように表現す れば良いでしょうか?

    • ベストアンサー
    • CGI
  • Perlの正規表現について

    Perlの正規表現について質問です. ■質問 aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd eee" aaa bbb ccc ddd eee "fff ggg hhh iii" というような,文字列が書かれているファイルがあるとします. ※ダブルクォーテーションが無い行もあります. ※ダブルクォーテーション内のスペースの数は,行によってそれぞれ異なります. これを,ダブルクォーテーションの中にあるスペースだけ アンダーバーに置換する場合の正規表現を教えて下さい. つまり,下記の出力にしたいです. aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd_eee" aaa bbb ccc ddd eee "fff_ggg_hhh_iii" ■条件 ※ちょっと古いPerlでも動くよう,ゼロ幅肯定/否定後読((?<),(!<))は使わないでください. ※単に実現するだけなら, # cat inputfile | print -pe 'sub f(){}(shift;s/ /_/;return $_;); s/(\".*\")/&f($1)/e;' みたいな感じで置換できそうですが,「正規表現だけで簡単に書けるかどうか」が知りたいのです(正規表現だけで実現出来る場合,そのアルゴリズムを知りたいです).そのため,関数と/eオプションは使わないでください.

    • ベストアンサー
    • Perl
  • 正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。

    正規表現で@を使う場合は\@とするべきか@とするべきか悩んでいます。 両方とも構文エラーが起きないのでその時点で?ですが .は\.としないと正規表現ではドット文字を認識しないのはわかりますが、正規表現の@はどうすればよいのでしょうか? Perl自体@も配列なので\@つけた方が・・・ よろしくお願いいたします。 $x = "test@example.com"; if ( $x =~ /[^a-zA-Z0-9\.\-\_@]/) if ( $x =~ /[^a-zA-Z0-9\.\-\_\@]/)

    • ベストアンサー
    • Perl
  • 正規表現について

    いつもお世話になっております。 以下の正規表現の記述の仕方が分からないのですが、 ご存知の方教えて頂けますでしょうか? (やりたいこと) 以下のような記述がある場合、value=の値が空の時は 処理Aをしたいというif文を書きたいのですが 書き方が分かりません。 if($orginal =~ /<option value=\"\"/){ 処理A } のようなif文を記述したのですが、 2行目の「テスト」も引っかかってしまいます。 どのように記述すればよいのでしょうか? <option value="" >選択してください</option> <option value="テスト" >テスト</option>

    • ベストアンサー
    • Perl
  • 正規表現

    正規表現で 数値と半角記号(!#$%()~|-^@[;],./`{+*}_)が入っているというものを表現したいのですが、、、 下記のような正規表現をすると、エラーになってしまいます。何かよい方法はありませんか? ^[a-zA-Z0-9\-_!#$%()~|-^@[;],./`{+*}_]*$ 又、携帯電話のチェックをしたいのですが、 1文字以上の文字列があってというような処理にしたいのですが、何かよい方法はないでしょうか? ereg( "@docomo\.ne\.jp$", $email )

    • ベストアンサー
    • PHP
  • 正規表現

    変数$aのなかに変数$bが含まれていたらをperlの正規表現であらわすと どのようになるのでしょうか?if($a=~ /$b/)ではうまくいかないのですか?

    • ベストアンサー
    • Perl

専門家に質問してみよう