日期:2014-05-18  浏览次数:20683 次

[正则]两问
1.从网页代码抓取某一节点内容,比如从<body><div id='div1'><div id='div2'></div></div></body>,如何获得div1的整个代码

2.查找介于word1和word2之间的字符数组。比如a_word1_text1_word2_word1_text2_word2中返回text1和text2

------解决方案--------------------
C# code

            string source = "a_word1_text1_word2_word1_text2_word2";
            Regex reg = new Regex("(?<=(word1_))[.\\s\\S]*?(?=(_word2))", RegexOptions.Multiline | RegexOptions.Singleline);
            MatchCollection mc = reg.Matches(source);
            foreach (Match m in mc)
            {
                MessageBox.Show(m.Groups["value"].Value);
            }

------解决方案--------------------

第一个问题:(?is)<div\s*id='div1'>(.*)</div> 取m.Groups[1].Value就行了
第二个问题:word1_(.*?)_word2 取m.Groups[1].Value就行了
总结你两个问题就是贪婪匹配和非懒惰匹配的用法
------解决方案--------------------
探讨
1.从网页代码抓取某一节点内容,比如从<body><div id='div1'><div id='div2'></div></div></body>,如何获得div1的整个代码

2.查找介于word1和word2之间的字符数组。比如a_word1_text1_word2_word1_text2_word2中返回text1和text2