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

C# 如何将这些字符串与正则表达式匹配?

C# 如何将这些字符串与正则表达式匹配?,c#,.net,regex,parsing,C#,.net,Regex,Parsing,但链接本身就在前面。我如何能够匹配两个链接地址: font-weight:bold 和线程标题: http://website/forum/f80/ThreadLink/ 编辑:Internet Explorer HTML代码非常不同: THREAD TITLE 试试这个: 线程标题 <A style="FONT-WEIGHT: bold" id=thread_title_565714 href="http://LinkAddress-565714/">Th

但链接本身就在前面。我如何能够匹配两个链接地址:

font-weight:bold
和线程标题:

http://website/forum/f80/ThreadLink/
编辑:Internet Explorer HTML代码非常不同:

THREAD TITLE

试试这个:

线程标题

  <A style="FONT-WEIGHT: bold" id=thread_title_565714 
      href="http://LinkAddress-565714/">ThreadTitle</A> </DIV>

因此,您可以使用:

<A style="FONT-WEIGHT: bold" id=(?<id>.*?)[\s\S]*? href="(?<url>.*?)">(?<title>.*?)</A>
Regex-link=newregex(@“);
foreach(link.Matches中的匹配(输入))
{
控制台写入线(
“Id={0},Url={1},Title={2}”,
匹配.Groups[“id”]。值,
匹配.Groups[“url”].Value,
匹配。组[“标题”]。值);
}
*
匹配组1:Url 匹配组2:线程标题


这将匹配任何粗体链接。如果要匹配某个特定的组,请将(.*)替换为这些值。

谢谢,如果链接是:linkaddress id,是否可以将其与正则表达式匹配,这样我就可以在不破坏其他组的情况下获得额外的groip?所以fulllink,title,linkid(后面的数字-:linkaddress-1234)我认为我们不需要首字母。*或者任何一个问号符号鲁本斯指出问号符号是必要的。请不要理会我的评论。“(?”)这是一种非贪婪的匹配模式;它的意思是:“找到一个引号,在下一个引号之前抓取最小的文本片段”;因此,在本例中,它与[^”]*相同,只是为了澄清,[^”]表示除双引号外的任何字符,而。表示任何字符。这意味着点可以匹配上一个双引号-您可能会匹配太多的hanks,如果链接是:linkaddress id,是否可以将其匹配到正则表达式匹配,因此我有一个额外的groip,而不破坏其他组?所以fulllink,title,linkid(后面的数字是-:linkaddress-1234)谢谢Ruben,现在可以查看了。嗨,Rubens,chrome(我的帖子)的html格式似乎与IE非常不同,IE是Winforms浏览器控件内部使用的格式。所以我在帖子里加了一个新的。我正在尝试使用您的模式更改它,但到目前为止,它有0个匹配项。如果你能把它添加到你的帖子中,我将不胜感激,谢谢。
.*<a href="(.*?)".*style="font-weight:bold">(.*?)</a>
Regex link = new Regex(@"<A style=""FONT-WEIGHT: bold"" id=(?<id>.*?)[\s\S]*? href=""(?<url>.*?)"">(?<title>.*?)</A>");
foreach (Match match in link.Matches(input))
{
    Console.WriteLine(
        "Id={0}, Url={1}, Title={2}",
        match.Groups["id"].Value,
        match.Groups["url"].Value,
        match.Groups["title"].Value);
}
.*<a href="(.*?)".*style="font-weight:bold">(.*?)</a>
<a href="([^"]*)"[^>]*style="[^"]*font-weight:bold[^"]*"[^>]*>([^<]*)</a>
<a href="#dont_match_me">Don't match me</a><br/>
<a href="http://website/forum/f80/ThreadLink/ style="font-weight:bold">THREAD TITLE</a>