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

这样会更容易吗?

任何建议都很好,

谢谢。

Regex表达式-将字符串拆分为三个变量

对于此输入:

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+)')