首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-11-18 
asp.net 提取字符串的正则表达式有文本为:ScanInfo UrlPath2011\05\5667FileName![CDATA[00表1.jp

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                } 

热点排行