0

我有以下正则表达式:

<div[^>]*>(?<Value>[^<]*(?:(?!</div)<[^<]*)*)[</div>]*

对于同一组数据,此正则表达式几乎在所有时间都可以完美运行,但有时却不能。

我有以下代码:

matchValue = oMatch.Groups["Value"].Value.ToLower();
if ((Regex.Match(matchValue, @"(effective\s*date)").Value).Equals("effective date", StringComparison.OrdinalIgnoreCase) == true || (Regex.Match(matchValue, @"(eff\s*date)").Value).Equals("eff date", StringComparison.OrdinalIgnoreCase) == true)
{
    headings = matchValue;
    headingsData = oMatch.NextMatch().Value;
}

我也使用 Multiline 作为 RegexOptions。

我将上面的代码与线程概念一起使用

现在我几乎每次都在“标题”和“标题数据”中得到正确的值,但有时我在标题中得到正确的值,但“标题数据”的值会发生变化。

谁能告诉我这种情况的原因?

4

1 回答 1

1

使用Html 敏捷包

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");

// All divs that does not contain other divs
string xpath = "//div[not(.//div)]";

bool previousWasHeading = false;
foreach(HtmlNode div in doc.DocumentElement.SelectNodes(xpath))
{
    if (previousWasHeading)
    {
        // Previous <div> was the heading, this one is the heading data.
        headingsData = div.Text;
        previousWasHeading = false;
        break; // Stop after first heading/headingData
    }
    else if (div.InnerText.Contains("effective date") || div.InnerText.Contains("eff date"))
    {
        // This this <div> is the heading.
        heading = div.Text;
        previousWasHeading = true;
    }
}
于 2013-10-29T07:29:27.407 回答