• ベストアンサー

ある特定の数字に対する正規表現

例えばですが、 $aには、変動する数字が代入されているとします。 【$aが、2000で割り切れる値であるとき、真を返す】 もしくは、 【下4桁が、2000・4000・6000・8000・0000のいずれかであるならば、真を返す】 としたい場合には、どのようなソースになりますか? ご教授お願いいたします。

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

  • ベストアンサー
回答No.2

>【$aが、2000で割り切れる値であるとき、真を返す】 数値としてとらえた場合、「2000で割った余りが0かどうか」なので 「if ( $a % 2000 ) == 0 )」のような判定をします。 >perl -ne '$a = $_; if ( ( $a % 2000 ) == 0 ) { print "ok\n" } else { print "ng\n" }' 10000 ok 11000 ng 12000 ok >【下4桁が、2000・4000・6000・8000・0000のいずれかであるならば、真を返す】 文字列としてとらえた場合、「if ( $a =~ /[02468]000$/ )」という正規表現を使った判定をします。 >perl -ne '$a = $_; if ( $a =~ /[02468]000$/ ) { print "ok\n" } else { print "ng\n" }' 12000 ok 13000 ng 14000 ok

unipre
質問者

お礼

あっ、メタ文字が入ってました… おかげさまで解決しました♪ ありがとうございました。

unipre
質問者

補足

アドバイスありがとうございます! 下4桁のほうの( $a =~ /[02468]000$/ )ですと、 $aが例えば20001のときでも真が返ってきませんでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • iichiho
  • ベストアンサー率37% (416/1114)
回答No.1

【下4桁が、2000・4000・6000・8000・0000のいずれかであるならば、真を返す】場合です。 if(($a=~/2000$/)||($a=~/4000$/)||($a=~/6000$/)||($a=~/8000$/)||($a=~/000$/)){ 真を返す処理; } あんまりスマートじゃないかもしれませんが。

unipre
質問者

お礼

最後の($a=~/000$/)は ($a=~/0000$/)ですよね?(;´∀`) もう少し勉強してからスマートなものにしていこうと思います。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ある特定の数字に対する正規表現

    例えばですが、 $aには、変動する数字が代入されているとします。 【$aが、2000で割り切れる値であるとき、真を返す】 としたい場合には、どのようなソースになりますか? ご教授お願いいたします。

    • ベストアンサー
    • Perl
  • 【Perl】特定文字列の抽出方法が分かりません。

    $aに以下のように、 SNから始まる不規則な桁の半角数字 + 半角スペース + 半角の不規則な桁の英数字 が代入されているとして、 $a = "SN0123456789012345 Aabc1ef"; $bに、半角スペースより前の文字列(SN0123456789012345)のみを 代入するにはどのようなソースにするといいのでしょうか? 御教授お願いします。

  • 有効数字と誤差率

    初歩的な質問で恐縮ですが、調べても良く分かりませんでした。 次のような場合、有効数字はどのようになるのでしょうか。 例)真の値が1.50、測定値1.55(有効数字3桁)のとき、 誤差ε=1.55-1.50   =0.05 質問1 引き算のときは、このように桁落ちが発生するので気をつけよ、とまでは書いてあるのですが、どう気をつけるのでしょうか? 有効数字は1桁になってしまったということなのか、5.00×10^2と言う風に3桁に直しておきなさいと言うことなのでしょうか? 質問2 誤差率を求める場合、 誤差率=(0.05/1.50)×100%    =3.333・・・% 質問1の結果によりますが、この場合、何桁で書くのだ正しいですか? 有効数字1桁でしたら、3% 有効数字3桁でしたら、3.33% の、どちらかだと思うのですが。 宜しくお願いします。

  • 測定値と有効数字

    目盛りのついた測定機器を用いて、測定値を求めた場合の有効数字の考え方がよく分からなくて困っております。例えば、以下のような場合ではどのように有効数字を取ればいいのでしょうか? 例)ノギスを用いて(最小目盛り0.1)2つの試験片の長さLを測定し、測定値を用いてX=L×3.14の計算を行う。 <試験片a> L : 1.12 <試験片b> L : 11.24 この場合 aの有効数字3桁で1.115から1.125の中に真値あり(誤差±0.05) bの有効数字4桁で11.235から11.245の中に真値あり(誤差±0.05) と考え、最終的に計算式に代入すると <a> X=1.12×3.14=3.5168=3.52 ← 有効数字3桁で3.515から3.525の中に真値(誤差±0.05) <b> X=11.24×3.14=35.2936=35.29 ← 有効数字4桁で35.285から35.295の中に真値(誤差±0.005) として良いのでしょうか?同じ測定機器から求めた値にも関わらず、掛け算を行ってしまうと、測定誤差が異なってくるのに違和感を感じます。 回答よろしくお願いします。

  • 正規表現 先頭一桁をマッチさせるには

    $a = (1001,xxxx,yyyy) とします。 先頭一桁の値を使いたいのですが、 $a = explode(',',$buffer); preg_match("/(.)*/",$a[0],$match)とすると、 $a[1]の値は下一桁になります。 先頭一桁にするには、どうすれば良いのでしょうか?

    • ベストアンサー
    • PHP
  • 有効数字の表現方法

    科学の問題で、「次の数を指数(A*10^Bという形)を用いて指定された有効数字で示せ」という問題で、 60200、0.062734という数字をそれぞれ有効数字1桁、2桁、3桁、4桁であらわさなければいけないのですが、 僕が考えた結果、 60200 有効数字1桁→6*10^4 有効数字2桁→60*10^3 有効数字3桁→602*10^2 有効数字4桁→6020*10 0.062734 有効数字1桁→6*10^-2 有効数字2桁→62*10^-3 有効数字3桁→627*10^-4 有効数字4桁→6273*10^-5 と思うのですが、この答えが正しいのでしょうか。 もし正しくても、たとえば60200を有効数字1桁で表して、6*10^4にしてしまうと、200という数字が無くなってしまうのにも疑問があります。 どなたか教えてくれませんでしょうか。

  • 有効数字について

    有効数字について 電気系の実験において、有効数字がそれぞれI(1ケタ)、V(4~5ケタ)という測定値を得たとします。 このとき、他に有効数字がL(2ケタ)、S(2ケタ)という数値を用いて、 ρ=(S/L)*(V/I) という計算を行ったとします。 この時、ρの有効数字も、有効数字が最小ケタ(1ケタ)のIに合わせて、1ケタとして最終的に値を出せば良いのでしょうか? また、測定結果をまとめた表を書く際、I,V,ρの値をそれぞれ示したいのですが、 この時には、「有効数字をそろえて」Vの実際の測定値も有効数字1ケタに丸めなくてはいけないのでしょうか? Vの値はそのまま表に記載した方がいいのでしょうか? 「有効数字をそろえて」と書いたのは、「有効数字をそろえる」という言葉の意味がイマイチ理解し切れていないためです。 あまり上手い日本語で書けていないかもしれませんが、 ご教授のほど、よろしくお願いします。

  • 測定と有効数字(乗除の場合)

     測定には必ず誤差を伴います。そこで有効数字の指導は次のようにすべきだと考えますがいかがでしょうか。 【例】A5判(縦 21.0 cm,横 14.8 cm)の紙の面積は? 〈解答〉縦・横とも±0.1 cmの誤差があると考えられるので (20.9×14.7)cm²≦真の値≦(21.1×14.9)cm² 307.23 cm²≦真の値≦314.39 cm² したがって信頼できるのはせいぜい一の位までであるから 求める面積は 21.0×14.8=310.80≒311(cm²) 以上からわかることは,縦・横とも有効数字 3 桁なので, 答えも有効数字 3 桁で求めることである。

  • 有効数字の取り扱いについて

    閲覧ありがとうございます。拙い質問ですが、よければお付き合いください。 有効数字についての質問です。 有効数字3桁で (2.10*8.31*10^3*373)/(1.01*10^5*1.11)という計算をしたのですが、 私は 2.1*8.31=17.451≒17.45 17.45*373=6508.85≒6508 6508/1.01=6443.5≒6443 6443/1.11=58.04≒58.0 と回答したのですが、実際の回答は58.1となりました。 有効数字3桁を提示されていた場合、各計算後に4桁より下を切り捨てるという作業を行っているのですが、この操作は正しいのでしょうか? もしよければ、正しく回答の値が出る計算順序、有効数字を考えるタイミングなどを教えていただければ幸いです。 よろしくお願いいたします。

  • 正規表現で半角数字1桁のみを全角数字に変換

    お世話になります。 JavaScript(JSP)で、 正規表現で半角数字1桁のみ(2桁以上は変換しない)を、 全角数字に変換する方法を教えてください。 たとえば、 ”hoge3hoge5”文字列内の、 半角数字1桁のみを、 正規表現で、全角数字1桁に、それぞれ変換   ↓ ”hoge3hoge5” あわせて、 半角数字が2桁以上、連続で続いている場合には 変換せずに、半角数字のままにしておきたいです。 ”hoge33hoge5”    ↓ 正規表現で、半角数字1桁のみを、全角数字1桁に変換 (半角数字2桁以上は変換しない) ”hoge33hoge5” 以上になります。 もしご存じの方がいらっしゃいましたら、 よろしくお願いします。