Discuss / Python / 纠错

纠错

Topic source

老师说:group(0)永远是原始字符串,group(1)group(2)……表示第1、2、……个子串。

我写了部分代码进行验证:

>>> import re
>>> pattern = re.compile(r'(\d+)\w*?(\d+).*')      # 匹配:数字+字母+数字+任意字符
>>> pattern.match('132in234dhu').groups()
('132', '234')
>>> pattern.match('132in234dhu').group(0)
'132in234dhu'                               
>>> pattern.match('132in234dhu').group(1)
'132'
>>> pattern = re.compile(r'(\d+)\w*?(\d+)')        # 匹配:数字+字母+数字 (剩余内容不匹配)
>>> pattern.match('132in234dhu').groups()
('132', '234')
>>> pattern.match('132in234dhu').group(0)
'132in234'                                  # 注意这里!group(0)返回的不是原始字符串,而是与正则表达式匹配的字符串!!!
>>> pattern.match('132in234dhu').group(1)
'132'

所以!**group(0)**表示的是与正则表达式相匹配的字符串(而不是原始字符串)group(1)group(2)……表示第1、2、……个子串。

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

你是对的


  • 1

Reply