首页 新闻 会员 周边 捐助

求一个正则~

0
悬赏园豆:50 [已解决问题] 解决于 2008-11-14 11:34

如有字符串:"a1,a1.a2,a1.a3,a1.a2.a3,b1,b1.a1.a2,c1"

需要一个正则能根据输入的值提取字符串中符合的值如输入空字符串时返回a1、b1、c1也就是后面不带.的值,而输入a1.的时候返回a2、a3,也就是a1.xx中xx的值但不包含a1.xx.yy中xx的值如a1.a2.a3。输入a1.a2的时候返回a3,也就是a1.a2.xx中xx的值。依此类推。

问题补充: 可以根据输入的值动态生成正则
Fenrir的主页 Fenrir | 初学一级 | 园豆:150
提问于:2008-11-14 01:09
< >
分享
最佳答案
0

一条正则比较难,我写了下面这个函数

static string GetRegex(string prefix)
{
if (string.IsNullOrEmpty(prefix))
{
return @"[ ]([^\.,]+?)[,]";
}
else
{
return "[ ,]" + prefix.Replace(".", @"\.") + @"\.([^\.]+?),";
}
}

 

匹配前需要对你的原始字串做个变换

string text = " " + "a1,a1.a2,a1.a3,a1.a2.a3,b1,b1.a1.a2,c1".Replace(",", ", ") + ",";

Regex reg = new Regex(GetRegex("a1"));

匹配结果是 a2 和 a3

其他几种输入我也都试了,可以得到你要的输出

 

 

eaglet | 专家六级 |园豆:17139 | 2008-11-14 07:29
其他回答(2)
0

一个正则会行?我看得用上程序逻辑.

Astar | 园豆:40805 (高人七级) | 2008-11-14 01:10
0

楼上正解

张荣华 | 园豆:2020 (老鸟四级) | 2008-11-14 09:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册