求个简单的分组正则 你就不能用if-then-else来表述吗?看到一堆中文直接躲避。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://bbs.csdn.net/topics/390676920可能你们进了同一个“培训班”。本来就只有几个月时间,如果培训班用这个“实习”来消磨你们的学费,那么赶紧退学换个学校吧。因为这不是根本不注重基础的人可以学到的技术。 第一个str.Substring(0, str.IndexOf('+')) 下面的正则应当可以实现你的需求:如果((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|$))上面的正则将“如果。那么。否则。”组来匹配,我觉得直接将每个分支作为结果来匹配(即“如果。那么”、“那么。否则”和“否则”)能更好的实现这个字符串的解析。(?<=(如果|那么|否则))((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|那么|否则|$)) 恩,您说的,我也有考虑,但是我要把上面的结果用正则来展现成一棵树,好让用户现在哪一个值的时候,方便修改,如图(Excel选中公式后可以很方便的修改):我想做成一棵树,当选中如果之类的值时,就把相应的节点值显示出来,方便用户修改: 下面的正则应当可以实现你的需求:如果((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|$))上面的正则将“如果。那么。否则。”组来匹配,我觉得直接将每个分支作为结果来匹配(即“如果。那么”、“那么。否则”和“否则”)能更好的实现这个字符串的解析。(?<=(如果|那么|否则))((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|那么|否则|$))大神啊,我初步试了下,真的可以了,真的是神人啊:,这样用户修改相应节点的值,就没有那么晕的感觉了,他可以找到相应的节点。我晚上回去再仔细研究,跪谢了: string s = "如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》+如果《30》那么《40》否则《50》如果《300》那么《400》否则《500》"; MatchCollection mc = Regex.Matches(s, @"(.*?)(.{2}《\d{2}》.*?)(.{2}《\d{3}》.*)"); foreach (Match m in mc) { Console.WriteLine(m.Groups[1].Value); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine(m.Groups[2].Value); Console.WriteLine(""); Console.WriteLine(m.Groups[3].Value); }虽然还是不懂你的意思,不过如果是分成三组的话就是这个一组:如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》+二组:如果《30》那么《40》否则《50》三组:《300》那么《400》否则《500》 谢谢您的耐心,不过您的不是我要的,里面的数字并不是真的数字,我只是写了个数字好让人理解,它可以是x、y、z之类的任何字符串,例如:“如果《职位=[店员]》那么《[基本工资]*[考勤天数]/30》否则《6000》”。再者,我举的只是个例子,并不是规定死了三个组,您写的是写死了三个组。仍然谢谢您! http://blog.csdn.net/lxcnn/article/details/4402808 谢谢。很有用,我先前也有找到这个页面,但是没怎么看懂平衡组这一节的,现在看了 xiaobn_cn大神的回复,现在基本上能看懂了。 C#调C++写的DLL函数,出现“方法的类型签名与PInvoke不兼容错误” 新贴、、急求解、、、 问个简单sql语句 winform控件的小问题(在线等) C# 我向DataGridView里添加了一行记录,还没保存,有些记录是保存过的,请问我怎么才知道DataGridView里哪行是新记录? 请教个简单的配置问题。。。 如何清除所有记录? 有关C#兼容问题 为什么我无法建立ASP.NET WEB 应用程序? C# 物件拖曳 《WCF 服务编程》和《WCF 全面解析》哪本书好些? 为什么中文显示乱码
如果((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|$))
上面的正则将“如果。那么。否则。”组来匹配,我觉得直接将每个分支作为结果来匹配(即“如果。那么”、“那么。否则”和“否则”)能更好的实现这个字符串的解析。
(?<=(如果|那么|否则))((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|那么|否则|$))
如果((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|$))
上面的正则将“如果。那么。否则。”组来匹配,我觉得直接将每个分支作为结果来匹配(即“如果。那么”、“那么。否则”和“否则”)能更好的实现这个字符串的解析。
(?<=(如果|那么|否则))((?<open>《)|(?<-open>》)|.)+?(?(open)(?!))(?=(如果|那么|否则|$))
大神啊,我初步试了下,真的可以了,真的是神人啊:,这样用户修改相应节点的值,就没有那么晕的感觉了,他可以找到相应的节点。
我晚上回去再仔细研究,跪谢了:
MatchCollection mc = Regex.Matches(s, @"(.*?)(.{2}《\d{2}》.*?)(.{2}《\d{3}》.*)");
foreach (Match m in mc)
{
Console.WriteLine(m.Groups[1].Value);
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine(m.Groups[2].Value);
Console.WriteLine("");
Console.WriteLine(m.Groups[3].Value);
}虽然还是不懂你的意思,不过如果是分成三组的话就是这个
一组:如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》+
二组:如果《30》那么《40》否则《50》
三组:《300》那么《400》否则《500》
不过您的不是我要的,里面的数字并不是真的数字,我只是写了个数字好让人理解,它可以是x、y、z之类的任何字符串,例如:“如果《职位=[店员]》那么《[基本工资]*[考勤天数]/30》否则《6000》”。再者,我举的只是个例子,并不是规定死了三个组,您写的是写死了三个组。
仍然谢谢您!