正则表达式

 

作用:进行文本处理的技术于语言无关

组成:是由普通的字符以及特殊的字符组成的文字模式

1、元字符

。匹配任意单个字符,出\n以为

[ ] 匹配括号中的任意一个字符

() 定义组并且将匹配这个表达式的字符保存到一个临时区域 作用(改变优先级,定义提取组)

|  将两个匹配条件进行逻辑运算(优先级最低)

* 匹配0到多个再它之前的子表达式

+ 匹配前面子表达式一次或多次

?(1)匹配前面子表达式零次或一次(2)终止贪婪模式

{n} 匹配确定n

{n,} 至少匹配n

{n,m} 最少匹配n次且最多匹配m

^1)正则表达式的开始(2)取非

$ 正则表达式的结尾

2、简写的表达式

\d代表数字

\D代表非数字

\s 代表换行符Tab键空白字符(即空格)

\S带表非空白字符

\w字母或数字或汉字或下划线

\W \w

3、。NET中的正则表达式

Regex.Replace((“字符串”,”正则”,”替换内容”) 字符串替换

返回替换后的字符串将字符串中匹配的内容替换为指定的内容

 

Regex.IsMatch(“字符串”,”正则表达式”) 判断是否匹配 返回值是bool

Regex.Match(“字符串”,”正则表达式”) 字符串提取 返回值是Match

Regex.Matches(“字符串”,”正则表达式”) 提取多个字符串 返回值是MatchCollection

NOTE

NET中存在于 System.Text.RegularExpressions命名空间下;

正则表达式中用()将要提取的内容括起来,然后就可以通过MatchGroups属性来得到所有的提取元素,注意Groups的序号是从1开始的,0存储的是本身匹配的字符串;

 

Eg: 图片抓取器

/// <summary>
///
提取图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
 WebClient client= new WebClient();
 client.Encoding= Encoding.UTF8;
string str= client.DownloadString(txtHTML.Text.Trim());
 MatchCollection mc= Regex.Matches(str,"<img.+?src=(['\"]?)([^>\\s]+)\\1.*?>");
int index= 0;
foreach (Match item in mc)
 {
string imgpath= item.Groups[2].Value;
 lbImage.Text= imgpath;
if (imgpath.IndexOf("http:")> -1)
 {
 client.DownloadFile(imgpath,@"D:\Imges\" + DateTime.Now.Millisecond+ index+ ".jpg");
 }
else
 {
 imgpath= txtHTML.Text.Trim()+ imgpath;
 client.DownloadFile(imgpath,@"D:\Imges\" + DateTime.Now.Millisecond+ index+ ".jpg");
 }
 index++;
 }
 MessageBox.Show("OK!");
}

补充:

一个查正则表达式的网址:http://www.regexlib.com

posted on 2011-09-16 14:41  骷髅吹牛  阅读(101)  评论(0)    收藏  举报