求个简单的分组正则 你就不能用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大神的回复,现在基本上能看懂了。 WebClinet 问题1 用vs生成安装文件的问题 请教socket问题!! C#检查是否连接到数据库 treeview的使用 如何用C#在DLL文件中创建共享数据段? 在线急等,在C#中如何生成pdf文件,同时将C#中的数据导入该pdf中 一个小问题! 1分钟的民意调查:假如你是客户,IT类的项目,你都在乎供应商什么呢? webservice与类库有什么区别?谁更优? 《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》”。再者,我举的只是个例子,并不是规定死了三个组,您写的是写死了三个组。
仍然谢谢您!