正则表达式在解释器中无法正常工作

时间:2013-11-30 22:52:23

标签: python regex python-2.7

我想搜索一个字符串并找到华氏度的单位并将它们转换成celcius。

要做到这一点,我的方法是让用户正则表达式在给定字符串中查找华氏温度单位,如果找到任何单位,请获取该数字并将其转换为celcius。

这是我提出的正则表达式:

regexp = re.compile("\d+(.*?)(\bfahrenheit\b|\bf\b)", re.IGNORECASE)

And here is the regex in action.

在Pythex网站上似乎工作正常,但是,在我的翻译中,相同的正则表达式与任何内容都不匹配。

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

您需要使用原始字符串,或\b将表示“退格”而不是“字边界”:

regexp = re.compile(r"\d+(.*?)(\bfahrenheit\b|\bf\b)", re.IGNORECASE)

答案 1 :(得分:3)

我将正则表达式重写为

regexp = re.compile(r"\d+\W{0,3}(f(ahrenheit)?)\b", re.IGNORECASE)

这匹配一个或多个数字,后跟0到3个非单词字符,然后是华氏温度 - 要么是字母F,要么是全名 - 后面必须跟一个单词边界。

您仍然需要最终字边界的原始字符串,但此字符串更有可能匹配您想要的内容 您可以使用字符类缩小非单词字符,例如[\s°]