• ベストアンサー

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

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

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

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.2

すみません、途中で送信してしまいました。 if($a =~ /^(0*|\d*[02468]000)$/) となるでしょうか? もっと簡潔な表現があるかもしれませんが、 これですみません。 ただ、2000 だから出来た訳で一般には 割り切れるっていうのを正規表現では出来ないと 思いますけど・・・

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

その他の回答 (1)

  • togino
  • ベストアンサー率75% (97/129)
回答No.1

if($a % 2000 == 0) という風に 2000 で割った余りが 0 ということで どうでしょう? それともどうしても正規表現で処理しないと いけないのでしょうか? 任意の数字0個以上 02468 のいずれか1個 0が3個 というパターンにマッチするって感じでしょうか?

unipre
質問者

お礼

「2000 で割った余りが 0」 思いつきませんでした(^^ゞ アドバイスありがとうございました 早速やってみます。

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

関連するQ&A

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

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

    • ベストアンサー
    • Perl
  • 配列を使わずに、数字(連番)を使用した変数に値を代入したい。

    配列を使わずに、数字(連番)を使用した変数に値を代入したい。 お世話になっております。 配列を使わずに、数字(連番)を使用した変数($a1,$a2,$a3・・・)に、 forループを使って、値を代入したい。 #================================= for($i;$i<10;$i++){ $a??? = 10; #←ここがわかりません。 } #================================= どなたかご存知の方、ご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 0から99の数字をランダムに並び替えたいのですが・・

    0から99までの数字をランダムに並び替えて、  89 42 19 35 2 94 12 .... のような数字の列を得たいのですが、どうすればよいでしょうか?一見、簡単そうなのですが、つまずいています。 最初思いついたのは次の方法です。 以下を i=0 から i=99になるまで繰り返す。 (1) tmp = (int) 100 * Math.random(); と 0~99の乱数を発生させる (2) a[0]~a[i-1]の中にxと同じ値が無ければ a[i] = x;と代入。同じものがあったら (1)に戻る。 (3) i = i+1; この方法だと、i=98の時は、ほとんどの場合「a[0]~a[i-1]の中にxと同じ値がある」ことになってしまい、iが増えるごとにスピードが落ちます。 100個くらいの数字なら良いのですが、100000000個の数字だと非効率な気がします。 みなさんどうなさっているのでしょうか?

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

    正規表現で 8文字以上、15文字以内で1文字以上の英語(大文字小文字どちらか一方で可)と数字が含まれている表現を考えているのですが、思いつきません。 [0-9a-zA-Z]{8,15} だと全て数字・英語でも通ってしまうので、困っています。 どなたか詳しい方、ご教授ください。

  • 正規表現について

    いつもお世話になっております。 早速ですが質問させていただきます。 「数字」+最後に「>」が入力されているかチェックしたいと 思っております。 ereg("[^0-9+$>]", $val) とやってみたのですが、ダメでした。 数字の部分は小数点になることもあります。 値として考えられるのは以下のものです。 それ以外(例えば、「12>3」のように間に「>」が入力された場合など)は、エラーとしたいと思っております。 ・123.4 ・12.3 ・1.2 ・123.4> ・12.3> ・1.2> ・1> ・12> ・123> ・1234> よろしくご教示お願いいたします。 <環境> PHP:4.4.2

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

    正規表現の勉強中です(^^ゞ $data = "<a=\"b\">あいうえお - かきく けこ</c>"; $dataに代入されている上記のデータで『あいうえお』の部分を 取り出したいのですが、どのような正規表現をするといいのでしょうか? ※補足 『あいうえお』の部分は常に日本語ですが、文字数は常に変化します。 御教授 宜しくお願い致します。

  • ExcelVBAマクロでの正規表現の方法

    ExcelVBAマクロについて確認させてください。 下記のように読み込みたいファイルをフォームで指定して それを変数aに読み込ませています。 変数aから、半角で書かれた括弧つきの数字(1)~(99)またはは全角で書かれた括弧つきの数字 (1)~(99)の文字列を削除したいのですが、例として"(1)"を削除する場合、次のような命令文 a = Replace(a, "(1)", "")のような書き方でもいいのですが、正規表現を使って もっと効率良い書き方がありますでしょうか。 ぜひご教授下さい。 以上、よろしくお願いします。 ---------------------------------- Sub sample() Dim buf As String Dim a As String buf = Application.GetOpenFilename(FileFilter:="テキスト文書,*.txt", Title:="サンプル") 'フルパスも含めたファイル名をbufに代入 With CreateObject("Scripting.FileSystemObject").GetFile(buf).OpenAsTextStream '指定したファイルを開く a = .ReadAll 'テキスト文書の内容を文字列aに代入 .Close '指定したファイルを閉じる End With End Sub

  • 正規表現のソース?

    C言語で正規表現を使いたいのですが、ソース付きの良いサンプルは有るのでしょうか? できれば、以下のようなパターンを抽出できればうれしいです。 DLL形式で呼び出す方法でなくて、全てソースのものを望みます。 /¥d{4}-(¥{4})(.*?)(X-A|X-B|X-C)?$/ (¥{4}) (.*?) (X-A|X-B|X-C) の値も取り出せるもの

  • 【Perl】特定文字列の抽出方法が分かりません。

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

  • 正規表現で一括置換

    現在、数多くの長文データを、テキストエディタの置換機能で一括置換しています。 jeditX(または秀丸エディタ)の正規表現をもちいた複数一括置換について質問させていただきます。 私は正規表現やPC言語の初心者です。どうぞよろしくお願いいたします。 かなり困り果てております。どうぞ、正規表現にくわしいかた、よろしくお願いします。 一二三『一二三にそれぞれ♪マーク』 という文章に対して 一♪二♪三♪ という一括置換をすることには成功しました。 こう書いています。 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪ これでぶじ、以下のように一括置換できました。 一♪二♪三♪ 現実には傍点や圏点をふっているんですが、判りやすく♪マークにしています。 この調子で長い文章も変換できていて満足していたのですが…… しかし代入文字が10個以上になったとたんに、まったく動きません。 ■置換したい文章 一二三四五六七八九十『一二三四五六七八九十にそれぞれ♪マーク』 ■検索文字列 (.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})『(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})(.{1,1})にそれぞれ♪マーク』 ■置換文字列 \1♪\2♪\3♪\4♪\5♪\6♪\7♪\8♪\9♪\10♪ こうやると、置換後の文章は以下のようになってしまいます。 一♪二♪三♪四♪五♪六♪七♪八♪九♪一0♪ 10個目以降の数字が、正しく機能してくれません。 \10  という正規表現の書き方は 「一番目の値を参照して、それから数字の0を記入しなさい」 という意味になってしまうようです。 わたしは十番目の値を代入してほしいだけなんです。 \1 や \2 や \3 といった代入文字のように \10 や \11 を機能させる、正しい表記をご教授ください。よろしくお願いいたします。 ちなみに以下のように書いてもダメでした……。 \1\0 グーグルで1日中検索しても判りませんでした。jeditXの複数一括置換でこれをなんとかしたいのです。ご存じの方、どうぞ教えてください。よろしくおねがいします! 秀丸エディタをご利用で、正規表現にくわしい方も、ぜひヒントを出していただければと思います。

このQ&Aのポイント
  • フジバカマを移した後、赤っぽいものが葉っぱに出てきて元気がなくなってしまった場合、これはフジバカマの病気の一つである可能性があります。
  • フジバカマの病気にはいくつかの種類がありますが、特に赤っぽいものが葉っぱに現れるものは、真菌や細菌による感染症が考えられます。
  • 対処方法としては、感染が広がるのを防ぐために感染した部分を切り取り、殺菌剤で消毒することが効果的です。また、適切な水やりや日当たり、栄養のバランスも大切です。
回答を見る