我想使用正则表达式来分析url,但是我不能像我所期望的那样得到regex组。我的正则表达式是:
@"member/filter(.*)(/.+)*"要匹配的字符串:
我希望得到以下小组:
我得到了第一个字符串的结果,但在其他两个字符串之前:
有什么问题吗?
发布于 2011-12-11 10:03:16
试一试
@"member/filter([^/]*)(/.+)*"另一种方法可以是以这种方式使用MatchCollection:
string url = "member/filter-three/option/option";
url = url.Replace("member/filter-", string.Empty); // cutting static content
MatchCollection matches = new Regex(@"([^/]+)/?").Matches(url);
foreach (Match match in matches)
{
Console.WriteLine(match.Groups[1].Value);
}
Console.ReadLine();在这里,首先从字符串中删除常量部分(它可能是函数的参数)。然后,您只需检查两个/字符中的所有内容。通过将[^/]标识为要匹配的字符,这意味着匹配一个字符,而该字符不是,然后在(+符号)之后添加一个标识符,这意味着匹配多个字符。
发布于 2011-12-11 14:53:12
“成员/筛选器(^/*)(/.+)*”似乎合乎逻辑,但由于它接受空选项(即成员/filter 1/),因此是不切实际的。member(/filter^/+(/^/+)*)*是一种更精确实用的模式,它还允许您接受多个带有选项的过滤器。
https://stackoverflow.com/questions/8463151
复制相似问题