正则表达式匹配模式后的字符

时间:2017-05-11 06:55:51

标签: c# regex

我试图在长字符串中的模式之后提取字符串,这基本上是页面的HTML输出。

例如;我需要从这个字符串中提取href标签的目标

<h2 class=\ "product-name\"><a href=\"/erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...">...</a></h2>\r\n

我需要的是:erkek-ayakkabi-spor-gri-17sfd3007141340-p

但我也需要找到与上面相似的字符串。因此,我需要在HTML字符串中href之后搜索class=\ "product-name\"个标记。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

请检查一下。

正则表达式:

class=\"product-name\"(.*)<a\shref=\"(.*?)\"

更新了Regex:

class=\"product-name\".*<a\shref=\"(.*?)\"

Regex101 Example

C#代码:

using System;
using System.Text.RegularExpressions;

public class Program
{
    public static void Main()
    {
        string data = "<h2 class=\"product-name\"><a href=\"erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...\">...</a></h2>\r\n<h2 class=\"test-name\"><a href=\"erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...\">...</a></h2>\r\n<h2 class=\"product-name\"><a href=\"erkek-ayakkabi-spor-gri-17sfd3007141340-p\" title=\"...\">...</a></h2>\r\n";
        //string regex = "class=\"product-name\"(.*)<a\\shref=\"(.*?)\"";
        string regex = "class=\"product-name\".*<a\\shref=\"(.*?)\"";
        var matches = Regex.Matches(data, regex, RegexOptions.Multiline);
        foreach(Match item in matches)
        {
            //Console.WriteLine("Value: " + item.Groups[2]);
            Console.WriteLine("Value: " + item.Groups[1]);
        }
    }
}

DotNetFiddle Example