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

C# 匹配两个已知字符串之间的任何字符串

C# 匹配两个已知字符串之间的任何字符串,c#,regex,href,C#,Regex,Href,我试图在一个html页面中匹配多个HREF,但似乎无法使其正常工作。当我使用正则表达式时,没有匹配项。如何获得整个href的多个匹配项,并将它们分为两个指定组 要匹配的多个示例href: <a href="/string1/any string here/string2">text here</a> 我的正则表达式代码: MatchCollection m1 = Regex.Matches(result, @"<a\shref=""(?<url>(\/

我试图在一个html页面中匹配多个HREF,但似乎无法使其正常工作。当我使用正则表达式时,没有匹配项。如何获得整个href的多个匹配项,并将它们分为两个指定组

要匹配的多个示例href:

<a href="/string1/any string here/string2">text here</a>
我的正则表达式代码:

MatchCollection m1 = Regex.Matches(result, @"<a\shref=""(?<url>(\/string1\/).*?(\/string2))"">(?<text>.*?)</a>", RegexOptions.Singleline);
这是可行的,但与我不感兴趣的HREF匹配,除了我需要的:

MatchCollection m1 = Regex.Matches(result, @"<a\shref=""(?<url>(\/string1\/).*?)"">(?<text>.*?)</a>", RegexOptions.Singleline);
使用


正如在注释中提到的,使用真正的html解析器,比如代替正则表达式

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(@"<a href=""/string1/any string here/string2"">text here</a>");

var links = doc.DocumentNode
                .SelectNodes("//a[@href]")
                .Select(a=>a.Attributes["href"].Value)
                .ToList();

你需要任何线索给你一个建议你的问题是什么?很好,你有一些正则表达式,但是你的代码在哪里?显示预期行为/输出和实际行为/输出。抱歉,第一次使用stackoverflow。我编辑了我的问题。我试图让它变得简单,以便返回给我的所有匹配项看起来像:/string1/anystring1/string2,string1/anystring2/string2,等等。Hanks,这一个有效:谢谢,我也会尝试一下。哇,这很容易,我可以看出长期使用html解析器可能更安全。我能够添加一些LINQ过滤器,以缩小到我需要的范围。
<a href="(\/string1\/)([^\/]+)(\/string2)">
(?<=<a href="\/string1\/)[^\/]*(?=\/string2">)
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(@"<a href=""/string1/any string here/string2"">text here</a>");

var links = doc.DocumentNode
                .SelectNodes("//a[@href]")
                .Select(a=>a.Attributes["href"].Value)
                .ToList();
var links = doc.DocumentNode
                .Descendants("a")
                .Where(a=>a.Attributes["href"]!=null)
                .Select(a=>a.Attributes["href"].Value)
                .ToList();