Board logo

标题: [文本处理] [已解决]批处理如何提取文本中的邮箱地址? [打印本页]

作者: mick00034    时间: 2014-2-9 12:44     标题: [已解决]批处理如何提取文本中的邮箱地址?

本帖最后由 pcl_test 于 2016-11-16 19:05 编辑

祝大家新年快乐


张三        13366325775(手机)
E-mail:        970655918@qq.com
13439881949(手机)李四
E-mail:        sh1009i@163.com
作者: 522235677    时间: 2014-2-9 15:42

本帖最后由 522235677 于 2014-2-9 15:48 编辑
  1. @echo off
  2. for /f "tokens=2" %%i in ('findstr /i "mail" 1.txt') do echo %%i
  3. pausee
复制代码

作者: mick00034    时间: 2014-2-9 16:30

回复 2# 522235677

好像不行呀,,附件上传了,谢谢哈
作者: 522235677    时间: 2014-2-9 17:54

本帖最后由 522235677 于 2014-2-9 17:55 编辑

回复 3# mick00034


    @echo off
for /f "tokens=2 delims=$" %%i in ('find /i "mail" 1.txt') do echo %%i
pause
把$换成tab
作者: mick00034    时间: 2014-2-9 19:03

回复 4# 522235677

结果很多邮件不完整,,,每一行前多了il:
il:        [email]970655918@qq.com[/email]
il:        [email]sh1009i@163.com[/email]
il:        dier
il:        m
il:        [email]903982792@qq.com[/email]
il:        [email]835085702@qq.com[/email]
il:        [email]zz360278227@126.com[/email]
il:        [email]272746276@qq.com[/email]
il:        [email]cxy_vision@163.com[/email]
il:        [email]605525195@qq.com[/email]
il:        liu
il:        [email]1203482977@qq.com[/email]
作者: 522235677    时间: 2014-2-9 20:03

我能给你有问题的代码?
作者: mick00034    时间: 2014-2-9 21:07

本帖最后由 mick00034 于 2014-2-10 09:15 编辑

回复 6# 522235677

您的代码应该是没问题的,只是小弟不会导出那个效果呀,能指点一下就谢谢了。

是我弄错了,,,已经解决
作者: battab    时间: 2014-2-9 21:22

本帖最后由 battab 于 2014-2-9 21:50 编辑

回复 7# mick00034
  1. @echo off
  2. for /f "tokens=2 " %%i in ('find/i "@" 1.txt') do echo %%i>>2.txt
复制代码
6#随便给点样例就好了,搞那么长有点浪费。
作者: apang    时间: 2014-2-9 22:53

本帖最后由 apang 于 2014-2-10 00:11 编辑

以#3附件为例,有效邮箱地址1972个,用find或findstr会漏掉很多。
  1. Set fso = CreateObject("Scripting.FileSystemObject")
  2. txt = fso.OpenTextFile("1.txt",1,false,-1).ReadAll
  3. Set re = New RegExp
  4. re.Pattern = "[\w\-\.]+@.+\.(com|cn|net)"
  5. re.IgnoreCase = True
  6. re.Global = True
  7. For Each m in re.Execute(txt)
  8.     s = s & m & vbCrLf
  9. Next
  10. fso.OpenTextFile("2.txt",2,true).Write s
复制代码

作者: mick00034    时间: 2014-2-10 07:35

本帖最后由 mick00034 于 2014-2-10 07:49 编辑

回复 10# apang
您说的很对,数据差几十个,如果原始数据大的话,就差更多了,谢谢热心帮助,

弱弱的问一下,您的代码更改一点,是否也适用于提取附件里的电话号码?学习了
作者: zhanglei1371    时间: 2014-2-10 08:46

回复 11# mick00034


    re.Pattern = "[\w\-\.]+@.+\.(com|cn|net)"
换成
re.Pattern = "1\d{10}"
作者: battab    时间: 2014-2-16 12:39

回复 9# apang


    fnd,findstr为什么会漏掉匹配数据,请指教?
作者: apang    时间: 2014-2-16 13:20

本帖最后由 apang 于 2014-2-16 13:22 编辑

回复 12# battab
附件中有很多类似这样的不规则的行:
  1. 谢华电子邮箱:349172507@qq.com移动电话:15311318739
  2. 王力飞电话:13811074493|邮箱 ]wanglifeidv@126.com
  3. 臧丽媛联系方式:13366640525 邮箱地址:up2013tess@foxmail.com
复制代码
用 find /i "mail" 1.txt 或者用for取第二列都会遗漏
作者: edisong    时间: 2014-2-16 23:08

回复  battab
附件中有很多类似这样的不规则的行:用 find /i "mail" 1.txt 或者用for取第二列都会遗漏
apang 发表于 2014-2-16 13:20


请问,用“@”符号作为搜索判断依据可以吗?
为什么以上几位老大都没用啊?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2