文本信息如下:
[email]
SMTP=smtp.163.com
port=25
希望把[]内的信息,即email读取出来,
希望把=前的信息,即SMTP读取出来。
希望把=后的信息,即smtp.163.com读取出来。
请问是要用正则表达式吗?如何进行读取呢?
[email]
SMTP=smtp.163.com
port=25
希望把[]内的信息,即email读取出来,
希望把=前的信息,即SMTP读取出来。
希望把=后的信息,即smtp.163.com读取出来。
请问是要用正则表达式吗?如何进行读取呢?
解决方案 »
- 打開excel問題
- DataRelation问题
- WinForm中如何继承窗体
- 用C#设计windows应用程序,在设计试图里面,为什么看不到panel的Alignment 属性
- WinForm 怎么适应不同分辨率。
- 请问我这个程序里ListBox的值怎么取出来?
- 在线等,如何对远程计算机中的特定用户进行密码修改,急!
- 问下C#图片转二进制代码再通过串口把图片打印出来我该怎么做?
- 在panel控件中怎样调节器用窗体的WndProc方法呐,您说话,我给分,别让我等的花都干巴了
- C#获取打印队列文档名
- 关于PictureBox.CreateGraphics()方法
- DataGridView与图片显示问题
{
string yourStr = @"[email]
SMTP=smtp.163.com
port=25
";
Match m = Regex.Match(yourStr, @"(?n)\[(?<section>[^\[\]]+)\]\r\n(?<maskSMTP>[^=]+)=(?<smtp>.+)\r\n(?<maskPort>[^=]+)=(?<port>.+)(\r\n|$)");
MessageBox.Show("Section is " + m.Groups["section"].Value + Environment.NewLine +
"SMTP is " + m.Groups["smtp"].Value + Environment.NewLine +
"port is " + m.Groups["port"].Value);
}
{
string yourStr = @"[email]
SMTP=smtp.163.com
port=25
";
Match m = Regex.Match(yourStr, @"(?n)\[(?<section>[^\[\]]+)\]\r\n(?<maskSMTP>[^=]+)=(?<smtp>.+)\r\n(?<maskPort>[^=]+)=(?<port>.+)(\r\n|$)");
StringBuilder txtBuilder = new StringBuilder();
txtBuilder.AppendLine("[]中间内容不是已经分析出来了么?学习一下正则的分组,否则给你答案你都看不懂。");
txtBuilder.AppendFormat("[]中间的内容:" + m.Groups["section"].Value + "\r\n");
txtBuilder.AppendFormat("smtp=前面的内容" + m.Groups["maskSMTP"].Value + "\r\n");
txtBuilder.AppendFormat("smtp=后面的内容" + m.Groups["smtp"].Value + "\r\n");
txtBuilder.AppendFormat("port=前面的内容" + m.Groups["maskPort"].Value + "\r\n");
txtBuilder.AppendFormat("port=后面的内容" + m.Groups["port"].Value);
MessageBox.Show(txtBuilder.ToString());
}
{
string yourStr = @"[email]
SMTP=smtp.163.com
port=25
[mobile]
City=GD
Number=13800138000
Number2=12345678912
";
Dictionary<string, string> items = new Dictionary<string, string>();
//分析段
Match sectionMatch = Regex.Match(yourStr, @"(?sn)\[(?<section>[^\]]+)\].+?(?=\[[^\]]+\]|$)");
while (sectionMatch.Success)
{
//分析段内数据项
MatchCollection itemsMatch = Regex.Matches(sectionMatch.Value, @"(?m)(?<mask>[^=\r\n]+)=(?<value>[^=\r\n]+)");
foreach (Match m in itemsMatch)
{
items.Add(m.Groups["mask"].Value, m.Groups["value"].Value);
}
StringBuilder txBuilder = new StringBuilder();
txBuilder.AppendLine("section is " + sectionMatch.Groups["section"].Value);
Dictionary<string, string>.Enumerator em = items.GetEnumerator();
while (em.MoveNext())
{
txBuilder.AppendLine();
txBuilder.AppendLine("item mask : " + em.Current.Key + Environment.NewLine +
"item value : " + em.Current.Value);
}
MessageBox.Show(txBuilder.ToString());
items.Clear();
sectionMatch = sectionMatch.NextMatch();
}
}
string pattern = @"\[(?<email>[^\[\]]+)\]\r\n(?<mask>[^=]+)=(?<smtp>.+)\r\n";
Regex r = new Regex(pattern, RegexOptions.None);
Match mm = r.Match(text);
MessageBox.Show("email is " + mm.Groups["email"].Value + Environment.NewLine +
"mask is " + mm.Groups["mask"].Value.Trim() + Environment.NewLine +
"smtp is " + mm.Groups["smtp"].Value );