我怎样才能得到一本词典重新匹配()和re.groupdict公司()使用复杂的正则表达式?

2024-05-29 04:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有点希望从字符串中选择域名并将其放入词典中。所以我在这个字符串上使用re.match()re.groupdict()

Location: hk USER: Will Lee PASS: 1234 INFO: www.hotmail.com

代码是

^{pr2}$

这将生成一个关键字为“Domain”且值为“hotmail”的字典,但不知何故它返回了:

AttributeError: 'NoneType' object has no attribute 'groupdict'

我该怎么解决这个问题?在


Tags: 字符串reinfowwwmatchlocationpasswill
2条回答

你应该用重新匹配带(?)?P<;.dict键…>;)和groupdict()。 代码:

import re
s="Location: hk USER: Will Lee PASS: 1234 INFO: www.hotmail.com"
yourDict = re.match(r"^Location: (?P<Location>\w+?) USER: (?P<User>.+?(?= PASS: .+? INFO: .+$)) PASS: (?P<Pass>.+?(?= INFO: .+$)) INFO: (?P<Doman>.+$)",s).groupdict()

=>;{'User':'Will Lee','Doman':'www.hotmail.com网站','位置':'香港','通行证':'1234'}

使用re.search而不是re.match,因为match试图从一开始查找文本。另外,您还需要在lookahead中指定一个点,该点断言捕获一个或多个字母数字字符,后跟字符串.com

>>> re.search(r'(?P<Domain>[a-zA-Z0-9]+)(?=\.com)', s).groupdict()
{'Domain': 'hotmail'}

相关问题 更多 >

    热门问题