Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言中的正则表达式将IP地址字符串解析为段#_C#_Regex_Parsing - Fatal编程技术网

C# 用C语言中的正则表达式将IP地址字符串解析为段#

C# 用C语言中的正则表达式将IP地址字符串解析为段#,c#,regex,parsing,C#,Regex,Parsing,此问题已更新,以提高其评级 语言环境: C# 预期结果: 使用正则表达式从字符串解析IP地址 使用Regex.Split()将IP地址解析为各个段,并将它们作为单个字符串对象存储在数组中 首先是: "IP=100.5.10.15" 获取填充有以下内容的字符串[]ipAdrSegments: ipSeg0 = "100" ipSeg1 = "5" ipSeg2 = "10" ipSeg3 = "15" 您可以使用: 我建议您使用IPAddress.Parse和IPAddress.TryPa

此问题已更新,以提高其评级

语言环境: C#

预期结果:

  • 使用正则表达式从字符串解析IP地址
  • 使用
    Regex.Split()
    将IP地址解析为各个段,并将它们作为单个字符串对象存储在数组中
首先是:

"IP=100.5.10.15"
获取填充有以下内容的
字符串[]ipAdrSegments

ipSeg0 = "100"
ipSeg1 = "5"
ipSeg2 = "10"
ipSeg3 = "15"
您可以使用:


我建议您使用
IPAddress.Parse
IPAddress.TryParse
方法来解析IP地址字符串

说明了原因。IPv4地址的字符串表示比用点符号分隔的4个数字要复杂得多。例如,以下字符串是相同IP地址的正确表示形式:

74.125.226.4(点位小数)

1249763844(十进制单位)

0112.0175.0342.0004(点八进制)

011237361004(平八进制)

0x4A.0x7D.0xE2.0x04(点十六进制)

0x4A7DE204(平六角)

74.0175.0xe2.4(ಠ_ಠ)

如果您仍然希望手动解析IP地址,并且只允许使用4位小数点表示法,我建议您使用如下方式:

^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

注意:此正则表达式仍然不正确,因为它允许前导零(014.2.3.4)

开发人员为什么总是想使用正则表达式来实现简单的字符串函数?@Tim lol,但是如果你创建一个带有捕获组的正则表达式,那么一个循环来迭代所有捕获组,获取其内容并将其放入一个数组可以达到同样的目的!lol。我不理解downvoterSimple和clear的解决方案。它是有效的,th谢谢!你自己尝试过什么来解决这个问题?那些没有表现出任何努力的问题被认为是非常懒惰的,很可能会被关闭。欢迎来到Stack Overflow!看看周围。请阅读以了解可能在这里得到答案的问题类型。你的问题没有描述到目前为止您自己已经完成的工作。请先尝试自己解决问题。太好了!感谢您指向
System.Net.IPAddress
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$