如何用Python正则表达式提取含TECH-XXX的完整用户信息?
解决方法:扩展正则表达式捕获TECH编号
嘿,这个问题很好解决,只需要在你的正则表达式里新增一个捕获组,专门匹配TECH-XXX格式的编号就行!
问题拆解
你原来的正则只覆盖了Username和domain的捕获,漏掉了后面紧跟的TECH-XXX编号。观察你的文本结构,每一组用户信息都是Username:xxx domain:xxx TECH-xxx的固定组合,所以我们只需要把匹配TECH-加数字的规则作为第三个捕获组加入正则即可。
修改后的完整代码
import re with open("output.txt", "r") as myfile: data = myfile.read() # 扩展正则,新增TECH编号的捕获组 people = re.findall(r'\bUsername:(\S+)\s+domain:(\S+)\s+(TECH-\d+)\s?', data) for personinfo in people: print(','.join(personinfo))
正则规则详解
\bUsername:(\S+):匹配单词边界后的Username:,捕获后续的非空白用户名内容\s+domain:(\S+):匹配任意空白字符后,捕获domain:后的非空白域名内容\s+(TECH-\d+):匹配任意空白字符后,捕获TECH-开头+一串数字的编号\s?:可选的空白字符,用来处理最后一组信息末尾可能没有多余空格的情况
预期输出
运行修改后的代码,你会得到完全符合需求的结果:
traider,domain.net,TECH-1366 traider1,domain.net,TECH-1367
内容的提问来源于stack exchange,提问作者Milister
相关产品推荐
相关产品推荐

