这个正则表达式该如何写呢?

pjw100 2011-11-20 12:04:18
search--category--ct1--cn1--nav1_10_1050
search--category--ct1--cn1--nav1_10_1050--ar1
search--category--ct1--cn1--nav1_10_1050--ar1-add1
search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1
search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1
search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1--p1

我想用一个正则表达式匹配上面的每一行字符串。
除了nav后面的_字符个数不定,0到n个吧。
最后99分了,求解决。
...全文
166 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
   string tempStr = File.ReadAllText(@"C:\Users\dell\Desktop\Test.txt",Encoding.GetEncoding("gb2312"));
string pattern = @"(?im)([^-\s]+(--)?)+(([^-\s]+)?-?)*";
foreach (Match m in Regex.Matches(tempStr, pattern))
{
string value = m.Value;
/*总共循环五次 上面五行全部匹配
search--category--ct1--cn1--nav1_10_1050
search--category--ct1--cn1--nav1_10_1050--ar1
search--category--ct1--cn1--nav1_10_1050--ar1-add1
search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1
search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1
search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1--p1
*/
}
bonnibell 2011-11-20
  • 打赏
  • 举报
回复
好像是url里的内容啊,如果只是为了取出这些内容
string str = "search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1";
str = str.Replace("--", "-");
string[] oArra = str.Split('-');
  • 打赏
  • 举报
回复
直接说想要什么结果
huangwenquan123 2011-11-20
  • 打赏
  • 举报
回复
            string str = @"search--category--ct1--cn1--nav1_10_1050search--category--ct1--cn1--nav1_10_1050--ar1 search--category--ct1--cn1--nav1_10_1050--ar1-add1 search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1--p1";
Regex reg = new Regex(@"search--category--ct1--cn1--nav\d+(?:_\d+)*(?:--?(?:(?!search).)+)*");
foreach (Match m in reg.Matches(str))
Console.WriteLine(m.Value+"\r\n");
/*
search--category--ct1--cn1--nav1_10_1050

search--category--ct1--cn1--nav1_10_1050--ar1

search--category--ct1--cn1--nav1_10_1050--ar1-add1

search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1

search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1

search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1--p1
*/
charles_y 2011-11-20
  • 打赏
  • 举报
回复


还有,你要的匹配是什么呢?验证你给的一个字符串满足条件呢?还是需要从一个大的文章里面取出这样一串字符串呢?


如果是前者,可以这么写search--category--ct1--cn1--nav1_10_1050(-+[a-z]+\d+)*

如果是后者,你要把结束字符前面的字符拿出来,要不然怎么判断到什么地方结束了呢?
pjw100 2011-11-20
  • 打赏
  • 举报
回复
我要的结果是字符串的格式只能是上面6种格式中的一种。除了nav中会带0到n个下划线,其他的都只能带数字。
pjw100 2011-11-20
  • 打赏
  • 举报
回复
如果把空格全去掉就剩下一个结果
pjw100 2011-11-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bonnibell 的回复:]

好像是url里的内容啊,如果只是为了取出这些内容
string str = "search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1";
str = str.Replace("--", "-");
string[] oArra = str.Split('-');
[/Quote]
search--category--ct1--cn1--nav1_10_1050search--category--ct1--cn1--nav1_10_1050--ar1 search--category--ct1--cn1--nav1_10_1050--ar1-add1 search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1--p1

我这一串只能匹配到三个结果。

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧