我用<title>(.*?)</title>似乎可以得到标题,但这不完善,如中间出现换行或空格时,就得不到取关键词时如出现 <meta content="内容" name="keywords">和<meta name="keywords" content="内容" />时,应该如何写正则表达式呢求一个能在各种情况下读取网站标题,关键词和描述的正则表达式!!
<title>(.*)<\/title> 空格是没有问题的,至于换行这些本来就不应该在title之间出现这样的格式,如果实在要这样做的话就用 fennng写的正则<title>([\s\S]*?)<\/title>。既然是采集信息,采集到后就应该先把采集到的内容中不必要的换行什么的替换掉,再用正则去提取。正则就要根据一定得规律去写,不可能写上一个能符合各种情况下的正则,至少我写不出来。关键词可以用<meta\s*(name="keywords"\s*content="(.*)"|content="(.*)"\s*name="keywords")\s*\/>取m[1]或m[2],当是<meta content="内容" name="keywords">时就是m[2],当<meta content="内容" name="keywords">时就是m[1],所以取的时候判断一下,如果m[1]==""再取m[2]如果还是要取含换行等空白字符的话就用<meta\s*(name="keywords"\s*content="([\s\S]*?)"|content="([\s\S]*?)"\s*name="keywords")\s*\/>