正则表达式在标签之间获得值,内部有新行

时间:2013-01-12 21:44:57

标签: c# html regex

有人可以帮我解决正则表达式。我完全卡住了

我有一个HTML代码:

<td width="50%"><span class="draw_info">Draw No: 2813<br />
Thursday&nbsp;10 Jan 13<br />
    <br />

我需要检索此行:Thursday&nbsp;10 Jan 13

我正在使用 C#,如果这对您有任何帮助

1 个答案:

答案 0 :(得分:0)

我假设您尝试提取的部分中不仅包含 HTML 代码。鉴于您发布的文章,我会尝试给您一些 Regex 帮助。

我首先要对空格进行规范化并删除空格标记,如下所示:

var normalizedText = Regex.Replace(text, @"<br\s*/?>|\r|\n|&nbsp;", " ");

然后我会使用专门的 Regex 来查找您想要的正确<span>标记(绘制信息):

var spanRegex = new Regex(@"<span class=""draw_info"">\s*Draw No:\s*(?<DrawNumber>[0-9]*)\s*(?<Timestamp>.*)\s*(</span>)?");

这会将您想要的抽奖号日期值提取到两个单独的捕获组中。然后,您可以单独访问它们:

var match = spanRegex.Match(normalizedText);

// TODO: Handle !match.Success for parsing errors here.

var drawNumberString = match.Groups["DrawNumber"].Value.Trim();
var timestampString = match.Groups["Timestamp"].Value.Trim();

int drawNumber;
DateTime timestamp;

if(!int.TryParse(drawNumberString, out drawNumber))
{
  // TODO: Handle draw number parsing errors here.
}

if(!DateTime.TryParse(timestampString, out timestamp))
{
  // TODO: Handle timestamp parsing errors here.
}