Python-Regex,这里发生了什么?

use*_*061 6 python regex

我最近有一本关于python的书,它有一章关于Regex,有一段我无法理解的代码.有人能解释一下这里发生了什么(这部分是关于Regex组)吗?

>>> my_regex = r'(?P<zip>Zip:\s*\d\d\d\d\d)\s*(State:\s*\w\w)'
>>> addrs = "Zip: 10010 State: NY"
>>> y = re.search(my_regex, addrs)
>>> y.groupdict('zip')
{'zip': 'Zip: 10010'}
>>> y.group(2)
'State: NY'
Run Code Online (Sandbox Code Playgroud)

小智 8

正则表达式定义:

(?P<zip>...)
Run Code Online (Sandbox Code Playgroud)

创建一个命名组"zip"

Zip:\s*
Run Code Online (Sandbox Code Playgroud)

匹配"Zip:"和零个或多个空格字符

\d
Run Code Online (Sandbox Code Playgroud)

匹配一个数字

\w
Run Code Online (Sandbox Code Playgroud)

匹配单词字符[A-Za-z0-9_]

y.groupdict('zip')
Run Code Online (Sandbox Code Playgroud)

groupdict方法返回一个字典,其中命名组为键,其匹配为值.在这种情况下,将返回"zip"组的匹配项

y.group(2)
Run Code Online (Sandbox Code Playgroud)

返回第二组的匹配,这是一个未命名的组"(...)"

希望有所帮助.