从字符串中提取温度(celcius或fahrenheit)

yus*_*suf 2 python regex string

我正在使用(char.*?char2)它来提取以字符串开头char1char2以字符串结尾的子部分.

现在我想从字符串中提取温度信息,例如(40°C,-30°C,80°F).在这种情况下,我的正则表达式应该通过考虑+和的概率来定义带有任何数字字符的起始字符-,并且用°C或结束°F,并且它们之间不应该有任何字母,并且它还应该whitespace在数字和结束可能性.

我该如何定义这样的正则表达式?

我已经检查了这一点,正则表达式从字符串中提取温度和温度范围,但答案略有不同的目标.

And*_*zlo 5

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

第一组应具有温度,第二组应具有温度,第二组为C或F.

扩展它以允许更多变化:

([+-]?\d+(\.\d+)*)\s?°([CcFf])
Run Code Online (Sandbox Code Playgroud)

这将匹配任何这些输入,允许多个空格,或制表符,小写单位,小数点和符号.

示例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')]
Run Code Online (Sandbox Code Playgroud)

  • http://regexr.com/3fblj 与此进行比较。如果您使用的是 python,请确保在原始字符串中输入模式,例如 `r'(\d+) ?°([CF])'` 或 `'''(\d+) ?°([CF])' ''`,或转义反斜杠,如 `(\\d+) ?°([CF])`。 (2认同)