关于php正则表达式用法
用正则表达式查找href与src后面的字符(不包括其本省)我用(?=href|src)发现找不到(完整:/(?=href|src)="\.?(?=http|#|\.|$)...
用正则表达式查找href与src后面的字符(不包括其本省)
我用(?=href|src)发现找不到(完整:/(?=href|src)="\ .?(?=http|#|\.|$)\ /?/)
这个还要去掉带..的地址
不知道(?=href|src)不管用,是不是它不能放到第一位的!!!! 展开
我用(?=href|src)发现找不到(完整:/(?=href|src)="\ .?(?=http|#|\.|$)\ /?/)
这个还要去掉带..的地址
不知道(?=href|src)不管用,是不是它不能放到第一位的!!!! 展开
4个回答
展开全部
简单回答就是:
(?=xxx)是匹配当前位置的后面是xxx,带不包括xxx
其叫做 lookahead assertion
而你希望匹配
href="http开头的地址"
或
src="http开头的地址"
中的 http开头的地址 部分,那么应该是用
(?<=xxx)
即:
(?<=href|src)
这个叫做 positive lookbehind assertion
具体详细例子和代码演示,可以参看我的:
【教程】详解Python正则表达式之: (?=…) lookahead assertion 前向匹配 /前向断言
和
【教程】详解Python正则表达式之: (?<=…) positive lookbehind assertion 后向匹配 /后向断言
官网的语法,自己搜:
PCRE 正则语法
就可以找到在线官网的内容的,其中相关的”断言“的部分内容。
(此处不给贴地址,请自己用google搜索帖子标题,即可找到帖子地址)
(?=xxx)是匹配当前位置的后面是xxx,带不包括xxx
其叫做 lookahead assertion
而你希望匹配
href="http开头的地址"
或
src="http开头的地址"
中的 http开头的地址 部分,那么应该是用
(?<=xxx)
即:
(?<=href|src)
这个叫做 positive lookbehind assertion
具体详细例子和代码演示,可以参看我的:
【教程】详解Python正则表达式之: (?=…) lookahead assertion 前向匹配 /前向断言
和
【教程】详解Python正则表达式之: (?<=…) positive lookbehind assertion 后向匹配 /后向断言
官网的语法,自己搜:
PCRE 正则语法
就可以找到在线官网的内容的,其中相关的”断言“的部分内容。
(此处不给贴地址,请自己用google搜索帖子标题,即可找到帖子地址)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
preg_match_all('#(<a>(.*)</a>|<b>(.*)</b>)#isU');
preg_match_all("/\<\b[a-z0-9]+\b[^>]*(src|href)\s*=\s*(?<f>\"|\')(?<url>[^>]*)\k<f>[^>]*\>/i", $html, $matches);
foreach($matches as $match) {
echo $match['url'];<?php
$mode="/go*gle/";
$str="oogle";
echo "<hr>";
if (preg_match($mode,$str,$arr))
{
echo "匹配成功",$arr[0];
}
else
echo "匹配失败";
?>
匹配失败
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把你要匹配的url格式贴出来,然后说明你要什么结果就好,你这样写的有点。。。看不懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
preg_match_all("/\<\b[a-z0-9]+\b[^>]*(src|href)\s*=\s*(?<f>\"|\')(?<url>[^>]*)\k<f>[^>]*\>/i", $html, $matches);
foreach($matches as $match) {
echo $match['url'];
}
foreach($matches as $match) {
echo $match['url'];
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询