解析.rtf文件,输出.csv文件中的电子邮件地址?
我有一个包含大量电子邮件地址的.rtf文件,我需要对其进行解析,以便将.csv文件与Active Directory中的活动用户进行比较。
基本上我想要" @ my.domain.com"
左边的内容$finds = Select-String -Path "path\to\my.rtf" -Pattern "@my.domain.com" | ForEach-Object {$_.Matches}
$finds | Select-Object -First 1 | ft *
这当然给了我一个结果,所以我没有很多输出。 我只设法得到比赛或完整的线。
我已尝试在
行添加一些内容$finds = Select-String -Path "path\to\my.rtf" -Pattern "\w.@my.domain.com"
这给了我地址中最后两个字母。
如果我继续在"通配符"
中添加点-Pattern "\w.....@my.domain.com"
对于包含较少字符的地址,我也获得了大量数字/字符(.rtf格式化)。
我该怎么做?
编辑:我会在找到解决方案后立即更新问题。截至目前,我正在尝试使用正则表达式。 例如:
-Pattern "\w*?@my.domain.com"
答案 0 :(得分:0)
$mPattern = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+(\.[a-zA-Z]{2,4})"
$lines = get-content "path\to\your.rtf"
foreach($line in $lines){
([regex]::MAtch($rtfInput, $mpattern, "IgnoreCase ")).value }
答案 1 :(得分:0)
这段代码对我有用。我的初始代码,但有一个新的搜索模式。
$finds = Select-String -Path "path\to\my.rtf" -Pattern "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+(\.[a-zA-Z]{2,4})" | ForEach-Object {$_.Matches}
$finds | Select-Object -First 10 | ft *
谢谢!