[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 CrLf 于 2013-7-24 17:43 编辑

如果不要求只调用一次 sed 的话,还是很简单的
  1. sed "s/[0-9a-zA-Z.@]/\n/g" email.txt | sed "/[0-9a-zA-Z.]{1,100}@\w\w*\.\w\w*$/!d"
复制代码

TOP

太复杂了,目测sed无能为力,下面给出vbs解:
  1. Dim objFSO, Rstr, Arr, Wstr
  2. Set objFSO = CreateObject("Scripting.FileSystemObject")
  3. Rstr = objFSO.OpenTextFile("a.txt").ReadAll
  4. Arr = Split(Rstr, vbCrLf)
  5. For Each str In Arr
  6.   If InStr(1, str, "@gmail.com", 1) Then GetMail(str)
  7. Next
  8. objFSO.OpenTextFile("new.txt", 2, True).Write Wstr
  9. Set objFSO = Nothing
  10. CreateObject("Wscript.Shell").Run "cmd /cstart new.txt", True, True
  11. Function GetMail(Str)
  12.   Dim objReg
  13.   Set objReg = New RegExp
  14.   objReg.Global = True
  15.   objReg.IgnoreCase = True
  16.   objReg.Pattern = "[\s]*.*?\(*([^\(]+@gmail.com).*"
  17.   Wstr = Wstr & objReg.Replace(Str, "$1") & vbCrLf
  18. End Function
复制代码
1

评分人数

***共同提高***

TOP

本帖最后由 Python 于 2013-7-24 15:22 编辑
  1. w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
复制代码
正则是这样的

TOP

返回列表