我以http://www.bxwx.org/bsort1/0/1.htm为例测试的,目的是获取这个页面所有的小说标题,但是以下面这段代码只能获取匹配到的第一个标题(也就是“特种教师”,下面是“百炼成仙”这个就取不到了),怎样才能取得他所有的标题呢,正则表达式是我自己写的,在正则测试工具上能够获取这个页面的所有标题,不过放到VS上就只能取第一个匹配的内容,请高手赐教。
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { TextBox2.Text = null; TextBox2.Text = GetPageCode(Textbox1.Text, ""); } public String GetPageCode(String PageURL, String Charset) { //读取目标页面编码 string webEncode = DropDownList1.SelectedItem.Text; //存放目标网页的html String strHtml = ""; //连接到目标网页这里以http://www.bxwx.org/bsort1/0/1.htm为例测试的 WebRequest wreq = WebRequest.Create(PageURL); HttpWebResponse wresp = (HttpWebResponse)wreq.GetResponse(); //采用流读取,并确定编码方式 Stream s = wresp.GetResponseStream(); StreamReader objReader = new StreamReader(s,System.Text.Encoding.GetEncoding(webEncode)); //正则表达式获取想要内容 strHtml = Regex.Match(strHtml, "(?<=\\.htm\">)\\w+(?=</a></td>)", RegexOptions.ExplicitCapture).ToString(); return strHtml; } }
var mcs=Regex.Matches(..);
foreach(Match mc in mcs){
mc.Value
}
原理是分组一次性提取多个,而你用的Match方法是提取一个就结束了,所以要用到Regex.Matches方法来提取多个结果