正则表达式
作用:进行文本处理的技术于语言无关
组成:是由普通的字符以及特殊的字符组成的文字模式
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命名空间下;
正则表达式中用()将要提取的内容括起来,然后就可以通过Match的Groups属性来得到所有的提取元素,注意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
浙公网安备 33010602011771号