Regex表达式-将字符串拆分为三个变量
本文关键字:三个 变量 表达式 字符串 拆分 Regex | 更新日期: 2023-09-27 18:19:58
要拆分的字符串如下所示:
192.168.1.254445.... 0000 0000 0010 = Flags: 0x002 (SYN)
这个字符串中有三个信息位需要拉到不同的变量中,它们是:
ip - 192.168.1.254
port - 445
flag - SYN
ip是一个ip地址,因此它需要捕获所有地址。端口的长度可以是1-4位数字。并且标志可以包含三个、三个字母的字符,例如SYN或SYN、ACK或SYN,ACK、URG等(例如分组标志的不同组合。
我尝试过使用带有(:"的Split作为拆分,但每当我输入[1]作为输出时,它都会创建一个
error - Index was outside the bounds of the array.
然后,我通过查看C#RegEx字符串提取创建了这段代码:
Regex pattern = new Regex(@"(<?ip>'d+)(<?port>'d+).... 'd{4} 'd{4} 'd{4} 'd{4} = Flags: 'd{1}x'd{3} ((<?flag>'w+))");
Match match = pattern.Match(dst1);
string ip = (match.Groups["ip"].Value);
string port = (match.Groups["port"].Value);
string flag = (match.Groups["flag"].Value);
string dst = ip + port + flag;
listBox1.Items.Add(dst);
但这不会在listBox1中返回任何值。
如果字符串更改为:
192.168.1.254.... 0000 0000 0010 = Flags: 0x002 (SYN)445
这样会更容易吗?
任何建议都很好,
谢谢。
对于此输入:
192.168.1.254... 0000 0000 0010 = Flags: 0x002 (SYN)445
使用这个:
(?<ip>(?:'d{1,3}'.){3}'d{1,3}).*Flags:'s'd{1}x'd{3}'s'((?<flag>'w+)')(?<port>'d+)
对于具有此格式端口的IP地址:
192.168.1.254:445... 0000 0000 0010 = Flags: 0x002 (SYN)
使用这个:
(?<ip>(?:'d{1,3}'.){3}'d{1,3}):(?<port>'d+).*Flags:'s'd{1}x'd{3}'s'((?<flag>'w+)')