我想搜索一个字符串并找到华氏度的单位并将它们转换成celcius。
要做到这一点,我的方法是让用户正则表达式在给定字符串中查找华氏温度单位,如果找到任何单位,请获取该数字并将其转换为celcius。
这是我提出的正则表达式:
regexp = re.compile("\d+(.*?)(\bfahrenheit\b|\bf\b)", re.IGNORECASE)
And here is the regex in action.
在Pythex网站上似乎工作正常,但是,在我的翻译中,相同的正则表达式与任何内容都不匹配。
有什么建议吗?
答案 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°]
。