首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >意外正则表达式组

意外正则表达式组
EN

Stack Overflow用户
提问于 2011-12-11 09:58:56
回答 2查看 144关注 0票数 2

我想使用正则表达式来分析url,但是我不能像我所期望的那样得到regex组。我的正则表达式是:

代码语言:javascript
复制
@"member/filter(.*)(/.+)*"

要匹配的字符串:

  1. "member/filter-one"
  2. "member/filter-two/option"
  3. "member/filter-three/option/option"

我希望得到以下小组:

  1. member/filter-one,/filter-one
  2. member/filter-two/option,/filter-2,/option
  3. member/filter-three/option/option,/filter-3,/option(2捕获)

我得到了第一个字符串的结果,但在其他两个字符串之前:

  1. member/filter-two/option,/filter-2/选项,空string
  2. member/filter-three/option/option,/filter-3/选项/选项,空字符串

有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-11 10:03:16

试一试

代码语言:javascript
复制
@"member/filter([^/]*)(/.+)*"

另一种方法可以是以这种方式使用MatchCollection

代码语言:javascript
复制
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();

在这里,首先从字符串中删除常量部分(它可能是函数的参数)。然后,您只需检查两个/字符中的所有内容。通过将[^/]标识为要匹配的字符,这意味着匹配一个字符,而该字符不是,然后在(+符号)之后添加一个标识符,这意味着匹配多个字符

票数 2
EN

Stack Overflow用户

发布于 2011-12-11 14:53:12

“成员/筛选器(^/*)(/.+)*”似乎合乎逻辑,但由于它接受空选项(即成员/filter 1/),因此是不切实际的。member(/filter^/+(/^/+)*)*是一种更精确实用的模式,它还允许您接受多个带有选项的过滤器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8463151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档