使用Windows上的正则表达式在

时间:2017-04-24 14:26:55

标签: regex windows findstr

我正在尝试在我的硬盘上搜索电子邮件地址。我知道它应该是这样的:

  

b ************米@ë******。com

这就是我想出这个正则表达式的原因:

  

湾{12}米@即{6} .COM

我发现findstr对这项工作有用并尝试过:

findstr /R b.{12}m@e.{6}\.com c:\*.*

但是即使我添加的文件中包含的电子邮件应与我的正则表达相匹配,也没有找到任何内容,例如:b8726ngs.poinm@e123456.com

2 个答案:

答案 0 :(得分:0)

您可以尝试使用以下PowerShell命令执行此操作(请注意,根据您的启动位置,这可能需要很长时间才能运行):

Get-ChildItem *.txt -Recurse -File | Where-Object { (Get-Content $_.FullName) -match "b.{12}m@e.{6}.com" }

您将收到您无权访问的磁盘区域的红色错误消息。以管理员身份运行PowerShell以进行尽可能广泛的搜索。

添加Get-ChildItem的文件路径,以便根据需要设置基目录,否则它将从您当前所在的目录开始。

参数说明:

  • -Recurse搜索当前目录和所有子目录。
  • -File仅返回文件(不是目录)。
  • Get-Content $_.FullName获取每个文件的内容。
  • -match执行正则表达式比较。

答案 1 :(得分:0)

有正则表达式然后有正则表达式。看起来findstr不是很强大。

findstr /R "b............m@e......\.com" *.*

这只是在findtr部分不起作用 通过适当的预防措施,例如,在只包含可读文件的目录中。