代码:
一个正则中不能包含相同的group name
unit_re = "((?P<fir>\\d+.\\d+)(市斤|斤))|((?P<fir>\\d+)(市斤|斤))"
m_s = re.search(unit_re, "90KG", flags=re.IGNORECASE)
if m_s is not None:
print(m_s.group())
出现错误
sre_constants.error: redefinition of group name 'fir' as group 5; was group 2 at position 30
出现错误
原因:
- 很基础的原因,在一个正则的语句中,不允许有两个相同的组名,这里面的<fir>有两个
更改后:
unit_re = "(?P<fir1>\\d+)(kg)(?P<sec1>\\d+)|(?P<fir2>\\d+(.\\d+)?)(kg)"
m_s = re.search(unit_re, "90KG", flags=re.IGNORECASE)
if m_s is not None:
print("成功")
if m_s.group("sec1") is not None:
weight = m_s.group("fir1") + "." + m_s.group("sec1")
else:
weight =m_s.group("fir2")
print(weight)