プロが教えるわが家の防犯対策術!

お世話になります。
今回はじめて投函させていただきます。

正規表現が初心者なものですのでご教示いただければ
と思っております。

文章中の数値部だけを取り出すプログラムを作って
おります。それで、正規表現を使って検索したい
と考えております。

例えば
12345
などとなっている部分全体や
123,456
などとなっている部分全体
123.456
などとなっている部分全体
123 456
などとなっている部分全体
123,456 789.123
などとなっている部分全体
を検索したいと思っています。

先頭は半角数値(0-9)で、末尾も必ず半角数値(0-9)
です。
数値と数値の間に許されるのはカンマ、ピリオド
半角スペースです。それらの文字の後に数値
が来ていれば、その後ろの数値も続けて検索範囲
としたいと思っています。

このような条件の正規表現はどのようにすれば
よいでしょうか。

よろしくお願いいたします。

A 回答 (2件)

((\d+[, .])*\d+)


のように$は不要です。あと,マッチした部分のみを抽出するためにパターン全体をカッコで囲む,と。

例えば Perl言語の例ですと,
質問文のような数字列が行中に含まれているか否かを判定するだけなら
  if ($line =~ /(\d+[, .])*\d+/)
でよいけれど,
マッチした部分を特殊変数$1に抽出して以降のコードで利用したいなら,
  if ($line =~ /((\d+[, .])*\d+)/)
となるということです。

追伸.
123 456
のように間に半角スペースが連続すると(※)上記のパターンではマッチしない点については承知なさっているのですよね。
(※このWebページ上では半角スペース1つにみえるかもしれませんが)
    • good
    • 0
この回答へのお礼

本件ありがとうございました。
解決いたしました。

お礼日時:2008/07/22 06:09

詳細な条件にもよるけど, 単純には


「最初と最後が 0-9 で, 途中は 0-9 か空白かコンマかピリオド」
というのをそのまま正規表現で書くだけでいいんじゃない?

この回答への補足

回答ありがとうございます。

そうしますと…
(\d+[, .])*$\d+

という感じになりますでしょうか??

補足日時:2008/07/07 14:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!