将匹配组与我的正则表达式一起使用

时间:2012-02-14 17:01:01

标签: c# regex

我有一个看起来像这样的字符串:

<td width="308">Services Needed: <a href="javascript:void(null);" title="weekly - 1 hour">ST</a></td>

我需要能够匹配它,并提取信息。我正在尝试使用带有正则表达式的匹配组。下面是我的代码:

Match match = Regex.Match(line, @"<a href=""(?<scr>[^""]*)"" title=""(?<title>[^""]*)"">(?<val>[^<]*)");
string val = match.Groups["val"].Value;

我需要提取的是字符串中的“ST”值。我有一个名为val的匹配组,应该可以提取此值。但是,此正则表达式与我的字符串不匹配。有人可以帮我解决我的正则表达方式有什么问题吗?

2 个答案:

答案 0 :(得分:2)

如果文本保证是XML,那么使用XML工具比使用正则表达式更容易。

string val = XDocument.Parse(input).Element("td").Element("a").Value;

或者,您可以使用HTML解析器。正则表达式将是我的最后选择。无论HTML或XML看起来多么简单,你总是会遇到使用正则表达式解析它的怪癖。

答案 1 :(得分:1)

你是什么意思不匹配?我只是削减&amp;将代码粘贴到新的控制台应用程序中,match.Groups["val"]包含值"ST"

string line = @"<td width=""308"">Services Needed: <a href=""javascript:void(null);"" title=""weekly - 1 hour"">ST</a></td>";
Match match = Regex.Match(line, @"<a href=""(?<scr>[^""]*)"" title=""(?<title>[^""]*)"">(?<val>[^<]*)");
string val = match.Groups["val"].Value;