Skip to main content
 首页 » 编程设计

python之为什么这个 python 正则表达式不匹配任何组

2025年05月04日25www_RR

帮助 friend 使用专有工具中的一些继承代码。

我们都不太熟悉 Python 或 Regex。

在下面的代码中,degF 正则表达式在我使用 Pythex (http://pythex.org/) 时匹配 2 个组,但返回 None。我做错了什么?

# This Python file uses the following encoding: utf-8 
import os, sys 
import re 
 
testString = "Friday: Thundery Shower, Maximum Temperature: 27°C (81°F) Minimum Temperature: 17°C (63°F)" 
 
t = re.match("^([^:]+):\s*([^,]+)", testString) 
degF = re.match("^(\d+.F\))", testString) 
 
print t .           # _sre.SRE_Match object 
print t.group(1)    # Friday 
print t.group(2)    # Thundery Shower 
print degF          # None 
 
# print "Max temp " + degF.group(1) 
# print "Min temp " + degF.group(2) 

请您参考如下方法:

您在模式中使用了 . 来匹配度数符号。但是,. 匹配单个字节,而 ° 实际上是两个字节长:

print len('°') # => 2 

因此,您可以在 degF 模式(或 \W*)中使用 ° 而不是 .匹配零个或多个非单词字符,即 r"(\d+\W+F)\)"),到处使用 re.search 并删除 ^ 如果您不打算只在字符串的开头匹配:

degF = re.findall(r"(\d+°F)\)", testString) 
print(degF)                                 # => ['81\xc2\xb0F', '63\xc2\xb0F'] 

参见 Python demo

您可以将未转义的 ) 移到 \d+ 之后以仅匹配整数。您可以将 \d 更改为 \d[\d.]* 以匹配 float 或整数。