C#简单正则表达式匹配对我来说无法正常工作

时间:2015-03-04 21:18:13

标签: c# regex

我试图在C#中编写一些代码,使用正则表达式从字符串中提取信息:

var regex = new Regex("href=/skin/(.*)");
var matches = regex.Matches(line);
foreach (string regfr in matches)
    MessageBox.Show(regfr);

我做了一些真正错误的事情,之前我已经完成了正则表达式,但在这里它更令人困惑。

我想转:

<a href="/skin/result1">

成:

result1

我在preg_match的php中使用了这个,这很容易使用..

a%20href="/skin/(.*)"

它有效,这可能很容易,但我对这些面向对象的工作方式非常困惑:P

2 个答案:

答案 0 :(得分:1)

var matches = regex.Matches(line);中,matches是MatchCollection。您不能将这些项声明为字符串。

您的错误消息显示Match对象无法转换为String

首先应该将MatchCollection转换为可以迭代的数组或列表。像这样:

var regex = new Regex(@"href=""/skin/([^""]*)(?="")");
var line = @"<a href=""/skin/result1"">";
var matches = regex.Matches(line);
foreach (var regfr in matches.Cast<Match>().ToList())
    MessageBox.Show(regfr.Groups[1].Value);

答案 1 :(得分:0)

尝试:

var regex = new Regex("href=\"/skin/(.+?)\"");
var matches = regex.Matches(line);
foreach (string regfr in matches)
    MessageBox.Show(regfr);

目前正则表达式模式的唯一问题是"之后缺少=。因此,href=/skin/(.*)必须为href="/skin/(.*)