新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
$reg="/src[=\"\'\s]+([^\"\']+)[\"\']/i";
为遂平等地区用户提供了全套网页设计制作服务,及遂平网站建设行业解决方案。主营业务为网站制作、网站设计、遂平网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
$str="";
if(preg_match_all($reg,$str,$m)){
for($i=0;$icount ( $m [1] );$i++){
echo $m[1][$i];
}
}
先介绍几种常用的方法:
1、使用MatchString函数或Match函数
regexp.MatchString(pattern string, s string) pattern为正则表达式,s为需要校验的字符串
regexp.Match(pattern string, b []byte) pattern为正则表达式,s为需要校验的字符串
它们的作用都是匹配,区别在于参数为字符串和切片
实例如下:
2、使用 Compile函数或MustCompile函数
它们的区别是Compile返回两个参数 Regexp,error类型,而MustCompile只返回 Regexp类型
它们的作用是将正则表达式进行编译,返回优化的 Regexp 结构体,该结构体有需多方法。
实例如下:
3、查找正则匹配字串( 注:函数名包含string的所传参数为string 其他的均为[]byte 带All是所有)
查找正则匹配的字符串位置( 注:函数名包含string的所传参数为string 其他的均为[]byte 带All是所有)
4、替换
正则替换
按原文替换
函数处理替换源字串
5、Regexp结构体中一些常用的方法
"img\b[^]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?imgUrl[^\s\t\r\n""']*)[^]*?/?[\s\t\r\n]*"
上面的引号中的内容就是正则表达式,用 C# 的正则表达式匹配 HTML 中的图片地址:
public static string[] GetHtmlImageUrlList(string sHtmlText)
{
// 定义正则表达式用来匹配 img 标签
Regex regImg = new Regex(@"img\b[^]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?imgUrl[^\s\t\r\n""']*)[^]*?/?[\s\t\r\n]*", RegexOptions.IgnoreCase);
// 搜索匹配的字符串
MatchCollection matches = regImg.Matches(sHtmlText);
int i = 0;
string[] sUrlList = new string[matches.Count];
// 取得匹配项列表
foreach (Match match in matches)
sUrlList[i++] = match.Groups["imgUrl"].Value;
return sUrlList;
}
该方法返回一个字符串数组,存放的就是从 sHtmlText 字符串中取得的图片地址列表。
基本上所有的语言都有正则表达式,golang也不例外。golang原生使用regexp包进行正则表达式的匹配。正常情况下满足基础的查询功能。但是,golang为了正则表达式的效率一直坚持O(n)的搜索复杂度,所以有些高级特性将无法满足。
正则表达式可以通过\1的形式反向查询之前匹配的数据,但是原生自带的regxp是不支持该特性。所以只能使用第三方库来支持。
src表示以src开头,
[^]*表示不含有‘’字符的子串
[^/].表示任意一个非'/'字符后面跟一个任意字符(个人觉得这里写的不对,‘.'前要加\转义才表示’.')
(?:jpg|bmp|gif)表示后面要跟上jpg或bmp或gif,?:表示“非获取匹配”(这里非必须)
(?:\"|\')表示后面跟双引号或单引号,\符号是转义字符。
合起来的意思就是:选取以src开头,到jpg或bmp或gif并后跟引号结尾,中间不能有''字符的字符串。
参考: