今天看到以下这段代码:
import re
_USER_RE = r'''(?P<user>[^:@]+|'[^']+'|"[^"]+")'''
_PASSWORD_RE = r'''(?P<password>[^@]+|'[^']+'|"[^"]+")'''
_CREDS_RE = r'{}(?::{})?'.format(_USER_RE, _PASSWORD_RE)
FTP_RE = re.compile(r'^ftp://(?:{}@)?(?P<abs_path>.*)$'.format(_CREDS_RE))
source = 'ftp://anonymous:guest@ftp.ncbi.nlm.nih.gov/codepackage'
m = FTP_RE.search(source)
user = m.group('user') or 'anonymous'
password = m.group('password') or 'guest'
server, path_dir = m.group('abs_path').split('/', 1)
觉得有几点很不错:
1、把每个关键信息的提取分开写,提高代码的可读性
2、过程中用到的一些表达式我还不清楚,需要深入了解,比如 ?:: 什么意思?
3、遵守很好的代码规范
接下来我尝试解释一下匹配过