Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】浮動小数点数にマッチする正規表現の作成方法を解説

浮動小数点数にマッチするPython正規表現の書き方

Pythonの正規表現(reモジュール)を使うと、文字列の中から浮動小数点数を抽出したり、数値として妥当かどうかを検証したりできます。浮動小数点数は「符号」「整数部」「小数部」「指数表記」などの組み合わせで構成されるため、それらすべてに対応できるパターンを設計することがポイントです。

正規表現パターンの解説

以下の正規表現は、符号・小数部・指数部を含む一般的な浮動小数点数にマッチします。

r'[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?'
  • [+-]? … 正負の符号(省略可能)
  • \d+(\.\d*)? … 整数部と、任意の小数部(例:234 や 234.67)
  • \.\d+ … 小数点から始まる数値(例:.45)
  • ([eE][+-]?\d+)? … 指数表記(例:e-5 や E+10、省略可能)

コード例

import re

s = '234.6789'
match = re.match(r'[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?', s)
print(match.group())

s2 = '0.45'
match = re.match(r'[+-]?(\d+(\.\d*)?|\.\d+)([eE][+-]?\d+)?', s2)
print(match.group())

実行結果

このコードを実行すると、次の出力が得られます。

234.6789
0.45

このように、re.match() は文字列の先頭からパターンとのマッチングを試み、group() メソッドでマッチした部分を取得できます。このパターンは負の数や指数表記の数値(例:-1.23e-4)にも対応しているため、入力値のバリデーションやログからの数値抽出など、さまざまな場面で活用できます。

  1. Pythonの正規表現で単語以外の文字をマッチさせる方法

    正規表現を使って文字列から「単語以外の文字」を取り出したい場合、Pythonのreモジュールに用意されている特殊シーケンス \W を使うのが最も簡単です。\W は、英字・数字・アンダースコア([^a-zA-Z0-9_])以外のすべての文字に一致します。以下のコードでは、指定した文字列から単語以外の文字をすべて抽出し、そのリストを出力しています。コード例import re s = ab5z8d*$&Y@ regx = re.compile(r\W) result = regx.findall(s) print(result)ポイントとして、パターン文字列の先頭に r を付けて raw 文字列に

  2. 【Python】正規表現を使って文字列内の単語をマッチ・抽出する方法

    次のコードは、指定された文字列の中から「meeting」という単語を抽出します。ここでは肯定の先読み(look-ahead)と肯定の後読み(look-behind)アサーションを使用しています。これにより、単語を囲む文字の存在を条件として考慮しつつ、その文字自体はマッチ結果に含めないようにできます。コード例import re s = https://www.google.com/meeting_agenda_minutes.html result = re.findall(r(?<=[\W_])meeting(?=[\W_]), s) print(result)出力[meeting]パ