正则表达式匹配问题 Regex reg = new Regex(@"(?i)\b(?!.*?matrix.*?).+\b"); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 private void button1_Click(object sender, EventArgs e) { string yourStr = @"1Form2MenuOldUID: 1Form3MenuOldUID: 1Form3MenuOLdUID: 1Form1MatrixOldUID: 2Form2MenuNewUID: 2Form3MenuOldUID: 2Form3MenuOLdUID: 2Form1MatrixOldUID:"; Regex reg = new Regex(@"(?i)\b(?!.*?matrix.*?).+\b"); MatchCollection mc = reg.Matches(yourStr); foreach (Match m in mc) { MessageBox.Show(m.Value); } } 提取?也就是说楼主举例的数据是一个整体?//提取string FormIndex = Regex.Escape(textBox1.Text);string Field = Regex.Escape(textBox2.Text);Regex reg = new Regex(@"(?is)" + FormIndex + @"Form\d+((?!Matrix|" + Field + @").)*" + Field + @":");MatchCollection mc = reg.Matches(yourStr);foreach (Match m in mc){ richTextBox2.Text += m.Value + "\n";} 这样,没问题的。按行匹配,识别大小写Regex reg = new Regex(@"(?m)^\s*"+FormIndex + @"Form\d+(?!Matrix)\w*" + Field + ":\r$"); (@"(?m)^\s*"+FormIndex 这里的写法有的疑问 假如1Form2MenuOldUID: 21Form2MenuOldUID: 311Form2MenuOldUID:当FormIndex是1的时候,我只需要1Form2MenuOldUID,而不需要21Form2MenuOldUID:, 311Form2MenuOldUID。因为以21或者311开头的string不是我所想要的。这样情况要怎么写呢?用\b来限定么? string FormIndex = Regex.Escape(textBox1.Text);string Field = Regex.Escape(textBox2.Text);Regex reg = new Regex(@"(?is)\b" + FormIndex + @"Form\d+((?!Matrix|" + Field + @").)*" + Field + @":");MatchCollection mc = reg.Matches(yourStr);foreach (Match m in mc){ richTextBox2.Text += m.Value + "\n";} 大家知道的打印标签的方法,哪种比较好用呢。。?求赐教! char 类型的数组如何转换成字符串呢 求一正则!!!!! C#里数据库怎么实现外键? 在线等,SQL多字段简单模糊查询存储过程,我这个应该如何写?谢谢!急 关于c#里char参数的问题!!!! C# 如何判断代理IP和端口是否可用 如何实现IE的网页浏览功能?不是调用外部的IE软件 发布公告1:北京、C#、企业应用,有谁想兼职? 本人计算机小白,c#问题求教 求ASP.NET的一个电子商务系统的教程 MvcFckEditor如何放置内容
{
string yourStr = @"1Form2MenuOldUID:
1Form3MenuOldUID:
1Form3MenuOLdUID:
1Form1MatrixOldUID:
2Form2MenuNewUID:
2Form3MenuOldUID:
2Form3MenuOLdUID:
2Form1MatrixOldUID:
";
Regex reg = new Regex(@"(?i)\b(?!.*?matrix.*?).+\b");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
MessageBox.Show(m.Value);
}
}
string FormIndex = Regex.Escape(textBox1.Text);
string Field = Regex.Escape(textBox2.Text);
Regex reg = new Regex(@"(?is)" + FormIndex + @"Form\d+((?!Matrix|" + Field + @").)*" + Field + @":");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}
假如1Form2MenuOldUID:
21Form2MenuOldUID:
311Form2MenuOldUID:
当FormIndex是1的时候,我只需要1Form2MenuOldUID,而不需要21Form2MenuOldUID:, 311Form2MenuOldUID。因为以21或者311开头的string不是我所想要的。
这样情况要怎么写呢?用\b来限定么?
string Field = Regex.Escape(textBox2.Text);
Regex reg = new Regex(@"(?is)\b" + FormIndex + @"Form\d+((?!Matrix|" + Field + @").)*" + Field + @":");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
richTextBox2.Text += m.Value + "\n";
}