[跪求]算法
求算法
就是取 messagebox.show(<里面的内容>)
情况有很多如下:
MessageBox.Show("哈哈","提示");
取:"哈哈","提示"
MessageBox.Show(String.Format("当前时间 {0}",DateTime.Now),"提示");
取:String.Format("当前时间 {0}",DateTime.Now),"提示"
MessageBox.Show("当前时间"
+ DateTime.Now.ToString(),"提示");
取:"当前时间"
+ DateTime.Now.ToString(),"提示"
MessageBox.Show("当前读取纪录:" +
dt.Rows.Count.ToString()+
String.Format("当前时间 {0}",DateTime.Now) ,"提示");
取:"当前读取纪录:" +
dt.Rows.Count.ToString()+
String.Format("当前时间 {0}",DateTime.Now) ,"提示"
用正则表达式 试验了很久也没搞定,求各位朋友帮忙求个算法,先谢谢了
问题点数:100、回复次数:17Top
1 楼sangengyi(三更呓)回复于 2005-01-07 23:47:36 得分 0
问题不清楚,看不出要什麽算法。Top
2 楼mooddecode1980(心情解码)回复于 2005-01-08 00:14:02 得分 0
兄弟不懂..
帮你顶 :)Top
3 楼passos(古月春秋)回复于 2005-01-08 00:20:39 得分 0
简单的用词法分析的方法不就可以了么?
匹配了MessageBox.Show后,然后匹配 ( 和 )Top
4 楼yufenfeila(雨纷飞啦)回复于 2005-01-08 00:28:17 得分 0
string str = "MessageBox.Show(\"哈哈\",\"提示\");";
string pattern = @"MessageBox.Show\((.[^\[]*)\);";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
str = regex.Replace( str, "$1", -1 );Top
5 楼Jinpanxu(浪)回复于 2005-01-08 10:11:41 得分 0
mark,學習Top
6 楼FlashElf(銘龘鶽)回复于 2005-01-08 23:22:31 得分 0
yufenfeila(雨纷飞啦) 你的方法不行啊 不润序 \ 和 [ 是什么意识?
没人答啊!Top
7 楼Fibona(Fibona)回复于 2005-01-09 00:26:30 得分 0
用正则表达式来进行分析,行不行?Top
8 楼yufenfeila(雨纷飞啦)回复于 2005-01-09 00:32:00 得分 0
我已经测试过了,应该符合你的要求
你可以开两个TextBox试试
string str = textBox1.Text;
string pattern = @"MessageBox.Show\((.[^\[]*)\);";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
str = regex.Replace(str, "$1", -1);
textBox2.Text = str;
如果有什么问题给我短信Top
9 楼zachary7833(Miracle)回复于 2005-01-09 12:19:47 得分 0
同意楼上的Top
10 楼FlashElf(銘龘鶽)回复于 2005-01-09 23:27:51 得分 0
string str = "MessageBox.Show(\"本次查询[3]条,耗时[13.5]毫秒\",\"提示\");";
string pattern = @"MessageBox.Show\((.[^\[]*)\);";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
str = regex.Replace( str, "$1", -1 );
哥们你怎么试验的啊 为何里面不能有 \[ 想不懂???Top
11 楼yufenfeila(雨纷飞啦)回复于 2005-01-10 22:27:43 得分 0
楼主,我正则写的不完善,下面的是改进过的
string str = textBox1.Text;
string pattern = @"MessageBox.Show\(((.|\n)*)\);";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
str = regex.Replace(str, "$1", -1);
textBox2.Text = str;
这次的没有\[的问题了,并且多行的也可以正确处理,试试看Top
12 楼FlashElf(銘龘鶽)回复于 2005-01-24 22:26:21 得分 0
哥们你用
MessageBox.Show("3","3");MessageBox.Show("3","3");
看看
得到
"3","3");MessageBox.Show("3","3"
Top
13 楼FlashElf(銘龘鶽)回复于 2005-01-24 22:30:11 得分 0
在C#里是允许这样的
MessageBox.Show("3","3");MessageBox.Show("3","3");
虽然很少但也是可能的啊!Top
14 楼FlashElf(銘龘鶽)回复于 2005-01-24 22:31:13 得分 0
正则 能尽量向最小匹配进行匹配不?Top
15 楼yufenfeila(雨纷飞啦)回复于 2005-01-24 23:09:11 得分 80
大哥你这问题还没解决……100分真不好拿,呵呵
可以最小匹配,修改了一下:
string str = textBox1.Text;
string pattern = @"MessageBox.Show\(((.|\n)*?)\);";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
str = regex.Replace(str, "$1", -1);
textBox2.Text = str;Top
16 楼cnhgj(戏子) (没时间练太极)回复于 2005-01-24 23:31:10 得分 20
string str = richTextBox1.Text;
string pattern = @"MessageBox.Show\((?<content>[\s\S]*?)\);";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(pattern);
foreach(System.Text.RegularExpressions.Match m in regex.Matches(str))
MessageBox.Show(m.Groups["content"].Value);Top
17 楼FlashElf(銘龘鶽)回复于 2005-01-24 23:37:56 得分 0
这回还查不多,下面的贴有 400 分那等你去拿。
太晚了、明天验证好使不看看。
http://community.csdn.net/Expert/TopicView.asp?id=3750800
http://community.csdn.net/Expert/TopicView.asp?id=3341708Top




