-
Notifications
You must be signed in to change notification settings - Fork 0
/
text-email-parser.linq
36 lines (28 loc) · 1.04 KB
/
text-email-parser.linq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<Query Kind="Program">
<Output>DataGrids</Output>
</Query>
void Main()
{
string fname = @"C:\dev\outlook\outlook-insight-2022-dec.CSV";
string contents = File.ReadAllText(fname);
const string Pattern =
@"(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
+ @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
+ @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
+ @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})";
// set up regex instance with options
Regex emailPattern = new Regex(Pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
// perform match
MatchCollection emailMatches = emailPattern.Matches(contents);
// set up our string builder
StringBuilder sb = new StringBuilder();
// build the list
Console.WriteLine("---EXTRACTED EMAIL ADDRESSES---");
emailMatches
.Select(x => x.Value.ToLower())
.Where(x => x.ToLower().Contains("dmirs"))
.Distinct()
.OrderBy(x=>x)
.Dump("emails");
}
// You can define other methods, fields, classes and namespaces here