2017-02-21 3 views
2

char1で始まり、文字列からchar2で終わるサブパーツを抽出するために、(char.*?char2)を使用しています。文字列から温度度(緯度または華氏)を抽出する

は、今私は、例えば、温度情報を抽出したいです(40°C、-30°C、80°F)の範囲で使用できます。この場合、私の正規表現は、+-の確率と、°Cまたは°Fの終わりを取り、任意の文字を含む開始文字を定義する必要があります。その間には手紙を入れないでください。whitespace数字の間の文字と可能性のある終わり。

どのように私は、このような正規表現を定義することができますか?

私はRegex to extract temperatures and temperature ranges from a string、これをチェックしましたが、答えはわずかに異なる目標を持っています。

答えて

5

(\d+) ?°([CF])

最初のグループは、温度を有していなければならない第二のCまたはF

はもう少しバリエーションを可能にするためにそれを拡張:

([+-]?\d+(\.\d+)*)\s?°([CcFf]) 

これはany of these入力に一致し、複数のスペースやタブ、小文字の単位、小数点や記号を使用できます。

例のPythonプログラム:

import re 
string = ''' 
20°C 
2 °F 
It was cold, 2 °F in fact. 
30 °C 
-40 °C 
+2.3^I°c 
+2.3°c 
10°C 
''' 
pattern = r'([+-]?\d+(\.\d+)*)\s?°([CcFf])' 
print(re.findall(pattern, string)) 
# Output: 
# [('20', '', 'C'), ('2', '', 'F'), ('2', '', 'F'), ('30', '', 'C'), 
# ('-40', '', 'C'), ('+2.3', '.3', 'c'), ('+2.3', '.3', 'c'), 
# ('10', '', 'C')] 
+0

アンドレ、あなたの答えをありがとうございました。しかし、30℃では機能しません。 – yusuf

+1

それは私のために働く。私はhttp://regexr.com/で試したことは確かにそれは首都ですか?または、スペースの代わりにタブがあるかもしれません。あるいは、私はあなたとは違う「゜」の文字を使っていますか? –

+0

はいアンドレ、それは首都Cです。そしてあなたは私のものと同じ°の文字を使用しています。私はpython re.findallを使用しています – yusuf

関連する問題