这个正则表达式该如何写呢?
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-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分了,求解决。 --------------------编程问答-------------------- 直接说想要什么结果 --------------------编程问答-------------------- 好像是url里的内容啊,如果只是为了取出这些内容
string str = "search--category--ct1--cn1--nav1_10_1050--ar1--add1-dt1--s1";
str = str.Replace("--", "-");
string[] oArra = str.Split('-');
--------------------编程问答--------------------
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
*/
}
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
我这一串只能匹配到三个结果。
--------------------编程问答-------------------- 如果把空格全去掉就剩下一个结果 --------------------编程问答-------------------- 我要的结果是字符串的格式只能是上面6种格式中的一种。除了nav中会带0到n个下划线,其他的都只能带数字。 --------------------编程问答-------------------- --------------------编程问答--------------------
还有,你要的匹配是什么呢?验证你给的一个字符串满足条件呢?还是需要从一个大的文章里面取出这样一串字符串呢?
如果是前者,可以这么写search--category--ct1--cn1--nav1_10_1050(-+[a-z]+\d+)*
如果是后者,你要把结束字符前面的字符拿出来,要不然怎么判断到什么地方结束了呢? --------------------编程问答--------------------
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
*/
补充:.NET技术 , ASP.NET