当前位置: 代码迷 >> ASP.NET >> asp.net 提取字符串的正则表达式解决方法
  详细解决方案

asp.net 提取字符串的正则表达式解决方法

热度:5076   发布时间:2013-02-25 00:00:00.0
asp.net 提取字符串的正则表达式
有文本为:
<ScanInfo UrlPath='2011\05\5667'><FileName><![CDATA[00表1.jpg]]></FileName><FileName><![CDATA[00目录1.jpg]]></FileName><FileName><![CDATA[00目录2.jpg]]></FileName><FileName><![CDATA[00目录3.jpg]]></FileName><FileName><![CDATA[00封面.jpg]]></FileName><FileName><![CDATA[01.jpg]]></FileName><FileName><![CDATA[02.jpg]]></FileName></ScanInfo>
分别提取出UrlPath字符串,以及各jpg的名字字符串。即取出的值:2011\05\5667;00表1.jpg;00目录1.jpg;
本文想到正则表达式提取,但是因为是菜鸟,求帮助。


------解决方案--------------------------------------------------------
C# code
            StreamReader reader = new StreamReader("c:\\temp\\1.txt",Encoding.Default);            string source = reader.ReadToEnd();            Regex reg = new Regex(@"(?is)((?<=UrlPath=')[^'>]+(?='))|((?<=\[CDATA\[)[^\[\]]+(?=\]))");            MatchCollection mc = reg.Matches(source);            foreach (Match m in mc)            {                MessageBox.Show(m.Value);            }
------解决方案--------------------------------------------------------
C# code
string pattern = @"(?i)(?<=<ScanInfo[^>]*?UrlPath=['""]([^'""]*?)['""][^>]*?>[\s\S]*?)<FileName[^>]*?>(?:(?!</FileName>).)*\[([^\[\]]*?\.[^\[\]]*?)\][^>]*?>\s*?</FileName>";                string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));//读取txt                foreach (Match m in Regex.Matches(tempStr, pattern))                {                    //循环输出                    string UrlPath = m.Groups[1].Value;//2011\\05\\5667                    string FileName = m.Groups[2].Value;//00表1.jpg                }
  相关解决方案