Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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#_Regex - Fatal编程技术网

如何获得多个正则表达式匹配c#

如何获得多个正则表达式匹配c#,c#,regex,C#,Regex,我有一个包含多个IP的流阅读器,在其中的某个地方。我想从流和端口中自动提取所有IP 基本上,这是get请求的响应,所有IP和端口都表示为: <th>xx.xx.xx.xx</th> <th>port</th> xx.xx.xx.xx 港口城市 我已经有了一个正则表达式来获取ip。基本上,我要做的是针对找到的每个匹配项,获取匹配项,向前移动“”.Length字节,然后检索端口,并将其作为IPAddress对象插入列表 问题是,当正则表达式需要检索

我有一个包含多个IP的流阅读器,在其中的某个地方。我想从流和端口中自动提取所有IP

基本上,这是get请求的响应,所有IP和端口都表示为:

<th>xx.xx.xx.xx</th>
<th>port</th>
xx.xx.xx.xx
港口城市
我已经有了一个正则表达式来获取ip。基本上,我要做的是针对找到的每个匹配项,获取匹配项,向前移动
“”.Length
字节,然后检索端口,并将其作为IPAddress对象插入列表


问题是,当正则表达式需要检索多个结果时,如何才能做到这一点。

由于存在召唤各种邪恶生物的风险(我主要指的不是SO用户),这里有一个小单元测试供您使用:

[TestMethod]
public void RegexTest()
{
    var input = "<th>192.168.1.1</th>\r<th>443</th>";

    var regex = @"(?s)<th>([0-9\.]*?)</th>.*?<th>([0-9]*?)</th>";
    var matches = Regex.Matches(input, regex);

    foreach (Match match in matches)
        Console.WriteLine("IP: {0}, port: {1}", match.Groups[1].Value, match.Groups[2].Value);
}
[TestMethod]
public void RegexTest()
{
var input=“192.168.1.1\r443”;
var regex=@“(?s)([0-9\.]*?)*([0-9]*?)”;
var matches=Regex.matches(输入,Regex);
foreach(匹配中的匹配)
WriteLine(“IP:{0},端口:{1}”,match.Groups[1]。值,match.Groups[2]。值);
}
问题是,输入的精确格式变得非常重要,这是您通常应该避免使用正则表达式解析HTML的原因之一。例如,如果输入中有
443
,则上述测试将中断


现在去拿你的赌注和银弹,他们来找我们了

你知道用正则表达式解析HTML会召唤猛禽,对吧?恐怕我不知道这意味着什么。这应该会有帮助:这是我最喜欢的线程,所以这是Stackoverflow中最伟大的线程之一!可能比一个有所有程序员笑话的更好!