首页 新闻 会员 周边 捐助

关于正则表达式的一点疑问

0
[已解决问题] 解决于 2013-11-11 14:35
 using (StreamReader sr = new StreamReader(@"D:\1.txt"))
            {
                string s = sr.ReadToEnd();
                //开始字符串 
                string s1 = textBox1.Text;
                //结束字符串 
                string s2 = textBox2.Text;
                Regex rg = new Regex("(?<=(" + s1 + "))[.\\s\\S]*?(?=(" + s2 + "))", RegexOptions.Multiline | RegexOptions.Singleline);
                foreach (var m in rg.Matches(s))
                {
                    StreamWriter sw = new StreamWriter(@"D:\2.txt", true);
                    sw.WriteLine(m.ToString());
                    sw.Close();

                }

现在是可以把字符串按照要求的格式截断了,但是有一个bug。就是出现s1的但是没有s2来收尾然后又出现s1,这时候把这个s1给忽略了,导致不符合要求的内容出现了。s1xxxs2这之间的东西是我需要的。现在是s1xxxs1xxxs2.现在给我的东西就出现了这样的bug。怎么破呢?

问题补充:

就是怎么限定s1和s2之间最大字符串长度,超过长度的我不要。怎么在正则里面限制呢?

南瓜asp的主页 南瓜asp | 菜鸟二级 | 园豆:213
提问于:2013-11-09 13:39
< >
分享
最佳答案
0
s1xxxs2这之间的东西是我需要的。现在是s1xxxs1xxxs2

那s1xxxs1xxxs2这种情况你要的是什么?xxxs1xxx?

奖励园豆:5
林J | 菜鸟二级 |园豆:202 | 2013-11-11 13:31

不符合要求的我选择过滤掉。s1xxxs1xxxs2这种情况,我把第一个s1xxx自动掐掉,只要和s2最近的s1之间的内容

南瓜asp | 园豆:213 (菜鸟二级) | 2013-11-11 13:33

@南瓜asp: 正则这么写 试试

Regex rg = new Regex("(?<=(" + s1 + "))[^("+s1+")]*?(?=(" + s2 + "))", RegexOptions.Multiline | RegexOptions.Singleline);
林J | 园豆:202 (菜鸟二级) | 2013-11-11 13:51

@林J: 你真帅,这个好使!

南瓜asp | 园豆:213 (菜鸟二级) | 2013-11-11 14:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册