http://yahoo-6ren">
gpt4 book ai didi

c# - 解析 .NET 中类似内容的简单正则表达式问题?

转载 作者:太空宇宙 更新时间:2023-11-03 18:48:16 25 4
gpt4 key购买 nike

有没有一种方法可以将所有具有特定域的链接收集到一个字符串中,其中它们只包含以下任一链接:

href="http://yahoo.com/media/news.html"

>http://yahoo.com/media/news.html<

所以基本上链接要么以href="为前缀并以 " 结尾

>< 包围的链接.

我尝试使用 Regex ( "href=\"([^\"]*)\"></A>" )但没有匹配到任何东西。

最佳答案

尝试以下操作:

string[] inputs = { "href=\"http://yahoo.com/media/news.html\"", ">http://yahoo.com/media/news.html<" };

string pattern = @"(?:href=""|>)(?<Url>http://.+?)[<""]";
foreach (string input in inputs)
{
Match m = Regex.Match(input, pattern);
if (m.Success)
{
Console.WriteLine(m.Groups["Url"].Value);
}
}

编辑:另一种方法是使用环视,以便匹配但不捕获文本。这允许您直接使用 Match.Value 而不是使用组。请尝试下面的替代方法。

string pattern = @"(?<=href=""|>)http://.+?(?=<|"")";
foreach (string input in inputs)
{
Match m = Regex.Match(input, pattern);
if (m.Success)
{
Console.WriteLine(m.Value);
}
}

编辑 #2: 根据此处评论中的请求,一种模式将不匹配文本中包含“...”的 URL。

string pattern = @"(?<=href=""|>)http://(?!.*\.{3}).+?(?=<|"")";

唯一的变化是添加了 (?!.*\.{3}),这是一个否定的前瞻,如果指定的后缀不存在,则允许模式匹配。在这种情况下,它会检查“...”是否不存在。如果您需要匹配至少 3 个点,请使用 {3,}

关于c# - 解析 .NET 中类似内容的简单正则表达式问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com