读书人

求个简略的分组正则

发布时间: 2014-01-01 18:12:08 作者: rapoo

求个简单的分组正则
如:如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》+如果《30》那么《40》否则《50》如果《300》那么《400》否则《500》

第一次提取的时候我想提取到:
如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》

如果《30》那么《40》否则《50》

如果《300》那么《400》否则《500》

后面的是组里循环,如果上面的解决了,应该都好处理。求大侠帮忙
[解决办法]

引用:
如:如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》+如果《30》那么《40》否则《50》如果《300》那么《400》否则《500》

第一次提取的时候我想提取到:
如果《2》那么《如果《3》那么《如果《4》那么《如果《5》那么《如果《6》那么《6》否则《7》》否则《6》》否则《5》》否则《4》》否则《3》

如果《30》那么《40》否则《50》

如果《300》那么《400》否则《500》

后面的是组里循环,如果上面的解决了,应该都好处理。求大侠帮忙

下面的正则应当可以实现你的需求:
如果((?<open>《)
[解决办法]
(?<-open>》)
[解决办法]
.)+?(?(open)(?!))(?=(如果
[解决办法]
$))

上面的正则将“如果。。。。那么。。。。否则。。。。”组来匹配,我觉得直接将每个分支作为结果来匹配(即“如果。。。。那么”、“那么。。。。否则”和“否则。。。。。。”)能更好的实现这个字符串的解析。
(?<=(如果
[解决办法]
那么
[解决办法]
否则))((?<open>《)
[解决办法]
(?<-open>》)
[解决办法]
.)+?(?(open)(?!))(?=(如果
[解决办法]
那么
[解决办法]
否则
[解决办法]
$))

读书人网 >C#

热点推荐