我是.NET的新手,并且很难尝试理解Regex
对象。
我正在尝试做的是下面。这是伪代码;我不知道实现这项工作的实际代码:
string pattern = ...; // has multiple groups using the Regex syntax <groupName>
if (new Regex(pattern).Apply(inputString).HasMatches)
{
var matches = new Regex(pattern).Apply(inputString).Matches;
return new DecomposedUrl()
{
Scheme = matches["scheme"].Value,
Address = matches["address"].Value,
Port = Int.Parse(matches["address"].Value),
Path = matches["path"].Value,
};
}
我需要更改什么才能使此代码生效?
答案 0 :(得分:1)
Regex上没有Apply方法。好像您可能正在使用一些未显示的自定义扩展方法。您还没有显示您正在使用的模式。除此之外,可以从Match中检索组,而不是MatchCollection。
Regex simpleEmail = new Regex(@"^(?<user>[^@]*)@(?<domain>.*)$");
Match match = simpleEmail.Match("someone@tempuri.org");
String user = match.Groups["user"].Value;
String domain = match.Groups["domain"].Value;
答案 1 :(得分:0)
我的计算机上的Regex
实例没有Apply
方法。我通常会做更像这样的事情:
var match=Regex.Match(input,pattern);
if(match.Success)
{
return new DecomposedUrl()
{
Scheme = match.Groups["scheme"].Value,
Address = match.Groups["address"].Value,
Port = Int.Parse(match.Groups["address"].Value),
Path = match.Groups["path"].Value
};
}