【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)にも対応しているため、入力値のバリデーションやログからの数値抽出など、さまざまな場面で活用できます。
-
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 文字列に
-
【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]パ