正则表达式使用心得

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 22:15   2479   0

最近需要使用正则表达式捕获网页内容。一些心得记录如下

1.贪婪模式和非贪婪模式:正则表达式默认是贪婪模式,也就是说在满足条件的情况下尽量多捕获内容,而非贪婪模式则相反,尽量捕获少的内容,往往需要捕获如<tr><td><table><tr></tr></table></td></tr>最内层<tr></tr>需要使用非贪婪模式,如果需要捕获到最外层<tr></tr>需要使用贪婪模式。二者的区别在于f非贪婪模式使用.*?

2.捕获分组。使用括号对正则式进行分组,然后使用Group索引获取捕获的分组内容

例子如下

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace WebSearchNew
{
class Program
{
static void Main(string[] args)
{
Test();
Console.Read();
}

public static void Test()
{
StringBuilder str
= new StringBuilder();
str.Append(
"<TD width=5 height=31><IMG src=\"images/dian.gif\" border=0></TD>");
str.Append(
"<TD vAlign=midden align=left>&nbsp;&nbsp;<A class=DLink title=济南市国有建设用地使用权挂牌出让公告-济国土资告字[2009]31号");
str.Append(
"οnclick=\"javascript:return pub_showContent(this.href,'550','530');\"");
str.Append(
"href=\"http://www.jndlr.gov.cn/ecdomain/framework/jngtzyj/kdaoflll-ghkh-bbno-ljla-mkjmfpmciooh.do?isfloat=1&amp;disp_template=templatedefault&amp;fileid=20091009122105781\"");//匹配链接
str.Append("target=_blank height=\"31\" width=\"158\">济南市国有建设用地使用权挂牌出让公告-济国土资告字[2009]31号</A></TD>");
string html = str.ToString();

//匹配目标:http://www.jndlr.gov.cn/ecdomain/framework/jngtzyj/kdaoflll-ghkh-bbno-ljla-mkjmfpmciooh.do?isfloat=1&amp;disp_template=templatedefault&amp;fileid=20091009122105781
Regex r0 = new Regex("href=\".*\"");//贪婪模式捕获最大匹配内容
Regex r1 = new Regex("href=\"(.*?)\"");//非贪婪模式捕获最小匹配内容 .*?
Regex r2 = new Regex("\"158\">(.*?)</A>");//捕获括号内内容即:济南市国有建设用地使用权挂牌出让公告-济国土资告字[2009]31号
Regex r3 = new Regex(@"20\d\d");//捕获括号内内容即:2009
string links0 = r0.Matches(html)[0].Groups[1].Value;
string links = r1.Match(html).Groups[1].Value;//捕获第一分组,正则表达式Index从1开始而非0
string title = r2.Match(html).Groups[1].Value;
string year = r3.Match(title).Value;
Console.WriteLine(links);
Console.WriteLine(title);
Console.WriteLine(year);
}
}
}

转载于:https://www.cnblogs.com/thornfield_he/archive/2009/10/28/1591247.html

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP