例 |
正規表現の例 |
数値範囲 |
浮動小数点 |
電子メールアドレス |
IPアドレス |
有効な日付 |
有効な日付をテキストに変換する |
クレジットカード番号 |
行を完全にマッチングする |
重複行の削除 |
プログラミング |
2つの近接した単語 |
落とし穴 |
壊滅的なバックトラッキング |
繰り返しすぎ |
サービス拒否 |
すべてをオプションにする |
繰り返しのキャプチャグループ |
Unicodeと8ビットの混同 |
このサイトの詳細 |
はじめに |
正規表現のクイックスタート |
正規表現のチュートリアル |
置換文字列のチュートリアル |
アプリケーションと言語 |
正規表現の例 |
正規表現リファレンス |
置換文字列リファレンス |
書籍レビュー |
印刷用PDF |
このサイトについて |
RSSフィードとブログ |
正規表現は数値ではなくテキストを扱うため、特定の範囲の数値をマッチングするには少し注意が必要です。[0-255]と記述するだけでは、0~255の数値をマッチングすることはできません。これは正規表現として有効ですが、全く異なるものをマッチングします。[0-255]文字クラスであり、3つの要素があります。0~2の範囲の文字、文字「5」、もう1つの文字「5」です。この文字クラスは単一の数字の「0」「1」「2」または「5」をマッチングします。これは[0125].
と同じです。正規表現はテキストで動作するため、正規表現エンジンは0を1つの文字として扱い、255を3つの文字として扱います。0~255のすべての文字をマッチングするには、1文字から3文字の範囲をマッチングする正規表現が必要です。
次のような正規表現は[0-9]1桁の数字の0~9をマッチングします。[1-9][0-9]2桁の数字の10~99をマッチングします。これが簡単な部分です。
3桁の数字をマッチングするのは少し複雑です。256~999の数値を除外する必要があるからです。1[0-9][0-9]は100~199を処理します。2[0-4][0-9]は200~249をマッチングします。最後に25[0-5]は250~255を追加します。
ご覧のとおり、数値範囲を同じ数の桁を持つ範囲に分割する必要があります。それらの範囲はそれぞれ、各桁の変化を同じように許可する必要があります。この例の3桁範囲では、「1」で始まる数値は続く2桁に10桁すべてを許可しますが、「2」で始まる数値は続く桁に許可される桁を制限します。
連結を使用してこれらすべてを一緒にすると、次のように表現できます。[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]. これは目的の数値をマッチングしますが、1つの注意点があります。正規表現の検索は通常、部分一致を許可するため、正規表現は123の中の12345にマッチングします。これには2つの解決策があります。
大きなドキュメントまたは入力文字列から数値を検索する場合は、単語の境界を使用して、有効なマッチングの前後に、非単語文字(または文字がないこと)を要求します。正規表現は次のようになります。\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b. 変項演算子は最も優先順位が低いため、括弧が必要となり、それぞれを変項にグループ化します。このようにすると、正規表現エンジンは最初にワード境界に一致し、次にすべての変項を試行し、最後に一致した数値の後に2番目のワード境界と一致しようとします。正規表現エンジンでは、すべての英数字文字と下線文字がワード文字と見なされます。
正規表現を使って入力を検証する場合、おそらく入力全体が有効な数値で構成されていることを確認する必要があるでしょう。これを行うには、ワード境界をアンカーに置き換えて、文字列の先頭と終わりに一致します。^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$.
一致させたい一般的な範囲を以下に示します。
| クイックスタート | チュートリアル | ツールと言語 | 例 | 参照 | 書籍のレビュー |
| 正規表現の例 | 数値範囲 | 浮動小数点 | メールアドレス | IPアドレス | 有効な日付 | 数値の日付からテキストへ | クレジットカード番号 | 完全な行に一致 | 重複行の削除 | プログラミング | 2つの近くの単語 |
| 悲惨なバックトラッキング | 繰り返しが多すぎる | サービス拒否 | すべてをオプション化 | キャプチャグループの繰り返し | Unicodeと8ビットの混在 |
ページのURL: https://regular-expressions.dokyumento.jp/numericranges.html
最終更新日: 2021年9月2日
サイトの最終更新日: 2024年3月15日
Copyright © 2003-2024 Jan Goyvaerts. All rights reserved.