以下のようなパターンでテキスト内に含まれている数字を抜き出すのに、以下の正規表現を使用します
pattern = r'[^+\-\d]*([+-]?\d+([.,]\d+)?).*'
パターン1: 正の整数の場合
text = '123`
result = re.match(pattern, text)
print(result[1]) # => 123
text = '+123`
result = re.match(pattern, text)
print(result[1]) # => +123
パターン2: 負の整数の場合
text = '-123`
result = re.match(pattern, text)
print(result[1]) # => -123
パターン3: 小数を含む場合
text = '123.456`
result = re.match(pattern, text)
print(result[1]) # => 123.456
text = '+123.456`
result = re.match(pattern, text)
print(result[1]) # => +123.456
text = '-123.456`
result = re.match(pattern, text)
print(result[1]) # => -123.456
パターン4: 数字と数字以外の文字が含まれている場合
text = '今日の気温は-10.5度でした`
result = re.match(pattern, text)
print(result[1]) # => -10.5
パターン5: 小数点が,の場合(ヨーロッパで使用されている表記)
text = '今日の気温は-10,5度でした`
result = re.match(pattern, text)
print(result[1]) # => -10,5