python中关于正则表达式的小问题???

lifreshman 2011-12-07 03:54:30
def find_sender():
part = 'From:(.*)<.*?>';
zz = re.compile(part);
for line in fileinput.input('d:\\python\\f.txt'):
m = zz.match(line);
if m:
print(m.group(1));

f.txt的内容为:
subject:freshman
From:gui<1234@qq.com><sfasf>adfa<asdfg>
content:fasdfadfalljkaskdflj

结果是gui<1234@qq.com><sfasf>adfa
我想要的结果是 gui, 请问这个?在排除非贪婪是怎么用的,是用<开始到第一个>结束吗?这个该怎么写请大侠指点!
...全文
62 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2011-12-08
  • 打赏
  • 举报
回复
你不就要匹配个发件人姓名吗?正则写那么长干嘛啊
测试
IDLE 2.6.6      
>>> s = """subject:freshman
From:gui<1234@qq.com><sfasf>adfa<asdfg>
content:fasdfadfalljkaskdflj"""
>>> s
'subject:freshman\nFrom:gui<1234@qq.com><sfasf>adfa<asdfg>\ncontent:fasdfadfalljkaskdflj'
>>> import re
>>> res = r'From:(.*?)<'
>>> m = re.findall(res,s)
>>> len(m)
1
>>> m[0]
'gui'
>>>
iambic 2011-12-07
  • 打赏
  • 举报
回复
?少用。特别是贪婪和非贪婪混用的时候,容易出错。一般使用排除就可以解决:
r'From:([^<>]*)<[^<>]*>'
chenguo67 2011-12-07
  • 打赏
  • 举报
回复
From:(.+?)<.*?>

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧