正则表达式匹配HTML字符串与换行符

时间:2015-02-22 23:36:52

标签: c# regex

我想要匹配:

    <h4>Manufacturer</h4>\n\n  Gigabyte\n\n\n

我的正则表达式ATM是:

    Match regex = Regex.Match(cleanedUpHtml, "Manufacturer(.*?)\n\n\n", RegexOptions.IgnoreCase);

然而它不起作用。

(。*?)应该匹配所有。

3 个答案:

答案 0 :(得分:2)

以下是我认为重要的两件事:

  1. 每当您在C#中声明正则表达式模式时,建议使用字符串文字,即@"PATTERN"。这简化了写正则表达式模式。

  2. RegexOptions.Singleline必须用于将多行文字视为字符串,即点会与换行符匹配。

  3. 这是我的代码段:

    var str = "<h4>Manufacturer</h4>\n\n  Gigabyte\n\n\n";
    var regex = Regex.Match(str, @"Manufacturer(.*?)\n\n\n", 
                 RegexOptions.IgnoreCase | RegexOptions.Singleline);
    if (regex.Success)
        MessageBox.Show("\"" + regex.Value + "\"");
    

    regex.Value

    "Manufacturer</h4>
    
      Gigabyte
    
    
    "
    

    最好的问候。

答案 1 :(得分:1)

我用另一个值替换了\ n,然后正则表达式搜索了我替换的值。它暂时正在工作,但它可能不是最好的方法。任何建议都赞赏。

    cleanedUpHtml = cleanedUpHtml.Replace("\n", "p19o9");
    Match regex = Regex.Match(cleanedUpHtml, "Manufacturer(.*?)p19o9p19o9p19o9", RegexOptions.IgnoreCase);

答案 2 :(得分:0)

通常我更喜欢在使用正则表达式之前从html标签和换行符中清除字符串。

(.*?)停止使用\ n characer捕获,您可以使用更通用的组,例如([\w|\W]*?)