上面讲了分组编号的计算规则,但由于编号得数在第几个位置,后续如果发现正则有问题改动了括号的
个数就会导致编号发生变化。因此正则表达式提供了命名分组(named grouping)的规范,命名分组
的格式为 (?P<分组名>正则) 。
比如在 Django 的路由中,命名分组示例如下:
urlpatterns = [
re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
re_path("^index/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$", views.index),
]
示例:
s = 'A23G4HFD567'
match_obj = re.search("(?P<value>\d+)", s)
# 可以通过传入对应命名获取对应分组
print(match_obj.group("value"))
结果:
23