匹配行中除电子邮件地址以外的任何内容

时间:2018-10-24 09:26:14

标签: powershell

在以下几行

Doe, John    john.doe@example.com
Bar, Foo     foo.bar@example.com
Example, Michael (Contract Worker)     michael.example@example.com

如何使正则表达式仅返回

  • Doe, John(第1行)
  • Bar, Foo(第2行)和
  • 第3行的
  • Example, Michael (Contract Worker),而仅丢弃 电子邮件地址?

以下正则表达式与电子邮件地址匹配

([^\s]+)\b[@]+\b([^\s]+)

我该如何相反?

2 个答案:

答案 0 :(得分:4)

在发送电子邮件之前(考虑到您那里有空格)捕获所有内容似乎更容易:

^.*(?<=\s{4})

使用标签,您必须这样做:

^.*(?<=\t)

编辑-由于有评论(g_l指出):

在这种情况下,^.*(?<=\s{1})足以满足正则表达式的贪婪性质,并且电子邮件中没有空格。

答案 1 :(得分:2)

尝试类似的方法,按空格分割并删除最后一个元素:

Get-Content "C:\temp\test.txt" |%{ 
$Result=$_.Trim() -split ' '
$Result[0..($Result.Length -2)] -join ' '
}