求高手帮忙看下这个 正则表达式

kc5488a 2013-12-20 09:40:22
这是我本地几个文件

程序打开是后,把文件2G那个2也取出来了,我想最后显示的是 5322568113510128,
这是我代码要怎么改啊?
Regex reg = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}");



...全文
164 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
蝶恋花雨 2013-12-20
  • 打赏
  • 举报
回复
if (fileName.Contains("BTG"))
			{
				for (int i = 0; i < listBox4.Items.Count; i++)
				{
					Regex reg = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}", RegexOptions.IgnoreCase);
					Match mc = r.Match(this.listBox4.Items[i].ToString());
					foreach (Match m in mc)
					{
						this.listBox2.Items.Add(m.Groups[0].Value.Replace("_", "").Replace(".", "")));

					}
				}
			}
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
引用 9 楼 kongwei521 的回复:
本来你的就是对。你没写好处理代码吧。解决了吧?解决就结账吧 。
我这个要怎么改呢? 等会马上追加分给你,其实这个分无所谓啊,主要是想请教下你
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
引用 9 楼 kongwei521 的回复:
本来你的就是对。你没写好处理代码吧。解决了吧?解决就结账吧 。

   if (fileName.Contains("BTG"))
                {
                    for (int i = 0; i < listBox4.Items.Count; i++)
                    {
                     
                        Regex reg = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}");
                        MatchCollection mc = reg.Matches(this.listBox4.Items[i].ToString());
                        foreach (Match m in mc)
                        {
                          this.listBox2.Items.Add(Regex.Replace(this.listBox4.Items[i].ToString(), @"\D", string.Empty));

                        }
                    } 
                }
我这段代码是什么问题呢? 取出来后怎么是2533..... 多了个2呢?
蝶恋花雨 2013-12-20
  • 打赏
  • 举报
回复
本来你的就是对。你没写好处理代码吧。解决了吧?解决就结账吧 。
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
引用 6 楼 kongwei521 的回复:
var str = "B_F_SENSUS_2G_5322_56.81.13.51.01.28";
			Regex r = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}", RegexOptions.IgnoreCase);
			Match m = r.Match(str);
			while (m.Success)
			{
				var test = m.Groups[0].Value.Replace("_", "").Replace(".", "");
				//输出5322568113510128
				MessageBox.Show(test);
			}
已测试。
你这正则跟我这代码差不多啊,你是怎么把2D这2字符给去除的呢? 能说下嘛?小弟对正则不是很懂 这是我代码

 if (fileName.Contains("BTG"))
                {
                    for (int i = 0; i < listBox4.Items.Count; i++)
                    {
                     
                        Regex reg = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}");                   
                        MatchCollection mc = reg.Matches(this.listBox4.Items[i].ToString());
                        foreach (Match m in mc)
                        {
                          this.listBox2.Items.Add(Regex.Replace(this.listBox4.Items[i].ToString(), @"\D", string.Empty));

                        }
                    } 
                }
蝶恋花雨 2013-12-20
  • 打赏
  • 举报
回复
var str = "B_F_SENSUS_2G_5322_56.81.13.51.01.28";
			Regex r = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}", RegexOptions.IgnoreCase);
			Match m = r.Match(str);
			while (m.Success)
			{
				var test = m.Groups[0].Value.Replace("_", "").Replace(".", "");
				//输出5322568113510128
				MessageBox.Show(test);
			}
已测试。
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
哎 纠结。如果换其他方式去取得话,代码改动太大了,有没有正则高手帮忙解决下啊
熙风 2013-12-20
  • 打赏
  • 举报
回复
引用 4 楼 kc5488a 的回复:
[quote=引用 3 楼 happy09li 的回复:] 如果长度是固定的话,直接截取字符串就可以了
字符长度是固定,那这段要怎么改呢,对正则不是很熟悉,这代码也参考别人写出来的 Regex reg = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}"); [/quote] 我对正则也不熟,你直接截取字符串吧 用subString();
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
引用 3 楼 happy09li 的回复:
如果长度是固定的话,直接截取字符串就可以了
字符长度是固定,那这段要怎么改呢,对正则不是很熟悉,这代码也参考别人写出来的 Regex reg = new Regex(@"(?is)[\d]{4}_[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}.[\d]{2}");
熙风 2013-12-20
  • 打赏
  • 举报
回复
如果长度是固定的话,直接截取字符串就可以了
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
有没高手帮忙指点下啊
kc5488a 2013-12-20
  • 打赏
  • 举报
回复
upupupupup

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧