我试图在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
答案 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/(.*)