SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

正規表現の問題集

正規表現の問題集2(応用編)

肯定先読み・肯定戻り読みの応用

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード SourceCode (1.6 KB)

2. カンマ区切りの金額を検索

 次は、カンマ区切りの金額を検索する正規表現についてです。

検索条件
0以上、999,999,999以下のカンマ区切りの金額を検索する。
前ゼロは不許可とし、負数および小数はないものとする。

 対象データと期待する検索結果は、下記となります(黄緑色が検索にヒットした部分です)。

対象データと期待する検索結果
対象データと期待する検索結果

 正規表現を考える際には、場合分けして考えると有効なことが多いです。まず、0以上999以下の整数について考えると下記の正規表現で表せることが分かります。

0以上999以下の整数を検索する正規表現
^(0|[1-9][0-9]{0,2})$

 1文字目が0ならば、その直後に行末があること。1文字目が0でなければ、その後の行末までの数字の数が2文字以内であること。という考え方になります。

 後は、0以上999以下から、0以上999,999,999以下に条件を拡張し、1文字目が0ならば、その直後に行末があること。1文字目が0でなければ、その後の数字の数が2文字以内で、その後の行末までのカンマと数字3文字のセットが、0個以上2以下であること。と考えて、答えは下記となります。

答え
^(0|[1-9][0-9]{0,2}(,[0-9]{3}){0,2})$

 正規表現のイメージは下記です。

正規表現のイメージ
正規表現のイメージ

次のページ
3. 否定先読みで条件チェック

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
正規表現の問題集連載記事一覧
この記事の著者

山岸 賢治(ヤマギシ ケンジ)

趣味が競技プログラミングなWebエンジニアで、OracleSQLパズルの運営者。AtCoderの最高レーティングは1204(水色)。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2676 2008/11/07 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング