Python 如何在正则表达式组中返回None?
如果在正则表达式中找不到特定字符,如何在groups()中打印None?第一个捕获组应该返回None或“S”,但我在打印时无法返回None(t.groups()) 这就是我到目前为止所尝试的,也使用了“?:”作为未编号的捕获组,希望它返回“无”,但没有运气Python 如何在正则表达式组中返回None?,python,regex,Python,Regex,如果在正则表达式中找不到特定字符,如何在groups()中打印None?第一个捕获组应该返回None或“S”,但我在打印时无法返回None(t.groups()) 这就是我到目前为止所尝试的,也使用了“?:”作为未编号的捕获组,希望它返回“无”,但没有运气 (None , ' NN ' , ' m ' , ' f ' ) 结果应该如上所述,目前我得到的是“AttributeError:'NoneType'对象没有属性'groups'” 任何建议都将不胜感激 “S”必须标记为可选字符。由于您的搜
(None , ' NN ' , ' m ' , ' f ' )
结果应该如上所述,目前我得到的是“AttributeError:'NoneType'对象没有属性'groups'”
任何建议都将不胜感激 “S”必须标记为可选字符。由于您的搜索是在开始时定位的,因此应改为使用re.match
:
re.match('(S)?([Nn]+)(m)(f|d)$', 'NNmf').groups()
# (None, 'NN', 'm', 'f')
像这样,正则表达式将与字符串不匹配。您可能希望使用
?
将第一个组设置为可选组。很抱歉,这是我的误解,一切都很正常。谢谢你的帮助!答案的意思是,如果您使用match
而不是search
,则^
是隐含的,因此您不需要明确指定它。如果出于某种原因希望正则表达式更长,您仍然可以将其放在那里。
re.match('(S)?([Nn]+)(m)(f|d)$', 'NNmf').groups()
# (None, 'NN', 'm', 'f')