高分求解正则提取监听日志内容
下面是监听的日志,我准备把它导到数据库里
2013/06/08 周六
15:36
TCP 11.14.3.10:3389 11.19.136.16:29119 ESTABLISHED
TCP 11.14.3.10:3389 12.19.111.2:1196 ESTABLISHED
TCP 11.14.3.10:3389 18.87.77.7:60100 ESTABLISHED
用正则提取成这种格式
日期 IP 端口号
2013/06/08 15:36 11.19.136.16 29119
2013/06/08 15:36 12.19.111.2 1196
2013/06/08 15:36 18.87.77.7 60100 正则?
[解决办法]
你这用正则,还不如自己一行行判断呢,先看开头是否符合日期格式,然后读取,下一行取时间,在后面取ip,直到下一个日期出现,以此循环
[解决办法]
string tempStr = File.ReadAllText(@"C:\Users\myx\Desktop\Test.txt", Encoding.GetEncoding("GB2312"));//读取txt
var _list = Regex.Matches(tempStr, @"(?i)(?<=(?<Date>\d{4}[/-]\d{1,2}[/-]\d{1,2})[^\d]*?(?<Time>\d+[::]\d+)(?:(?!\d{4}[/-])[\s\S]*?))\d+?\.\d+?\.\d+?\.\d+?(?:[:]\d+)\s+?(?<IP>\d+?\.\d+?\.\d+?\.\d+)[:]?(?<Num>\d+)?").Cast<Match>().Select(a => new
{
DateTime=a.Groups["Date"].Value+" "+a.Groups["Time"].Value,
IP=a.Groups["IP"].Value,
Num=a.Groups["Num"].Value
}).ToList();
/*
* +[0]{ DateTime = "2013/06/08 15:36", IP = "11.19.136.16", Num = "29119" }<Anonymous Type>
+[1]{ DateTime = "2013/06/08 15:36", IP = "12.19.111.2", Num = "1196" }<Anonymous Type>
+[2]{ DateTime = "2013/06/08 15:36", IP = "18.87.77.7", Num = "60100" }<Anonymous Type>
*/[解决办法]
Return_!true 对正则蛮有研究,鉴定完毕!