当前位置:编程学习 > C#/ASP.NET >>

正则表达式截取问题

[Module]111
[ModuleName]name1
[ModuleAbbr]AM1
aaaaaaa

[Module]222
[ModuleName]name2
[ModuleAbbr]AM2
bbbbbbbbb

[Module]333
[ModuleName]name3
[ModuleAbbr]AM3
ccccccc

[Module]

怎么用一个正则表达式 截取各个[Module]之间的信息,麻烦给个详细的!~刚学正则

--------------------编程问答--------------------
string[] fields = Regex.Split(yourStr,@"\[Module\]").Where(s=>!string.IsNullOrEmpty(s)).ToArray();
--------------------编程问答-------------------- try...

Regex reg = new Regex(@"\[(?<M>Module[^\]]*)\](?<V>[^\[]*)(?<!\s)");
MatchCollection mc = reg.Matches(yourStr);
foreach (Match m in mc)
{
    richTextBox2.Text += "Module:" + m.Groups["M"].Value + "\nValue:" + m.Groups["V"].Value + "\n===============\n";
}
/*-----输出-----
Module:Module
Value:111
===============
Module:ModuleName
Value:name1
===============
Module:ModuleAbbr
Value:AM1
aaaaaaa
===============
Module:Module
Value:222
===============
Module:ModuleName
Value:name2
===============
Module:ModuleAbbr
Value:AM2
bbbbbbbbb
===============
Module:Module
Value:333
===============
Module:ModuleName
Value:name3
===============
Module:ModuleAbbr
Value:AM3
ccccccc
===============
Module:Module
Value:
===============
*/
--------------------编程问答--------------------
引用楼主  的回复:
[Module]111
[ModuleName]name1
[ModuleAbbr]AM1
aaaaaaa

[Module]222
[ModuleName]name2
[ModuleAbbr]AM2
bbbbbbbbb

[Module]333
[ModuleName]name3
[ModuleAbbr]AM3
ccccccc

[Module]

怎么用一个正……

string str = @"[Module]111
[ModuleName]name1
[ModuleAbbr]AM1
aaaaaaa

[Module]222
[ModuleName]name2
[ModuleAbbr]AM2
bbbbbbbbb

[Module]333
[ModuleName]name3
[ModuleAbbr]AM3
ccccccc

[Module]
";
            List<string> list=new List<string>();
            MatchCollection matchs = Regex.Matches(str, @"(?<=\[Module])[\s\S]*?(?=\[Module])");
            foreach(Match m in matchs)
                list.Add(m.Value); --------------------编程问答--------------------

             StreamReader reader = new StreamReader("c:\\1.txt");
             string source = reader.ReadToEnd();
             Regex reg = new Regex(@"(?<=(\[Module\]))[\s\S]*?(?=(\[Module\]))");
            MatchCollection mc = reg.Matches(source);
            foreach (Match m in mc)
            {
                MessageBox.Show(m.Value);
            }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,