我正在尝试编写一个regex来捕获电子邮件id。测试了好几个小时regexpal.com网站. 在这个网站上,它可以捕捉到所有的电子邮件ID。当我在Python中替换相同的regex时关于芬德尔(图案、线条),它抓不到它。在
正则表达式:
[a-zA-Z0-9-_]+[(.)?a-zA-Z0-9-_]*\s*(@|at)\s*[a-zA-Z0-9-_]+\s*(.|dot)\s*[a-zA-Z0-9-_]*\s*(.|dot)\s*e(\-)?d(\-)?u(\-)?(.,)?
示例:
^{pr2}$(在上正确突出显示regexpal.com网站). 在
使用Python:
for line in f:
print 'Line = ',line
matches = re.findall(my_first_pat,line)
print 'Matches = ',matches
输出:
Line = <TR> <TD><B>E-Mail: </B> <TD><A HREF=MailTo:example.young@stackoverflow.edu>example.young@stackoverflow.edu</A>
Matches = [('@', 'd', '.', '', '', '', ''), ('@', 'd', '.', '', '', '', '')]
问题是什么?在
此处必须使用
\.
而不是.
:如果你只是想说,字母之间可以有连字符 在
^{pr2}$edu
部分,您可以在不使用斜杠和分组的情况下执行此操作:如果使用
()
只是对符号进行分组(而不是用于捕获), 必须使用(?:)
代替:为
re.findall
读取{a1}:您的组只捕获at符号、点等,因此返回的仅此而已关于芬德尔. 要么使用非捕获组,将整个组打包,要么使用
re.finditer
。在{cd4}也不正确地指出了这个问题
相关问题 更多 >
编程相关推荐