关于php正则表达式用法

用正则表达式查找href与src后面的字符(不包括其本省)我用(?=href|src)发现找不到(完整:/(?=href|src)="\.?(?=http|#|\.|$)... 用正则表达式查找href与src后面的字符(不包括其本省)
我用(?=href|src)发现找不到(完整:/(?=href|src)="\ .?(?=http|#|\.|$)\ /?/)

这个还要去掉带..的地址
不知道(?=href|src)不管用,是不是它不能放到第一位的!!!!
展开
 我来答
againinput4
2012-11-26 · TA获得超过2407个赞
知道大有可为答主
回答量:1446
采纳率:70%
帮助的人:652万
展开全部
简单回答就是:
(?=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搜索帖子标题,即可找到帖子地址)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老马100861
推荐于2016-11-24 · 知道合伙人软件行家
老马100861
知道合伙人软件行家
采纳数:59 获赞数:4347
洛阳理工学院在校本科生

向TA提问 私信TA
展开全部
  1. preg_match_all('#(<a>(.*)</a>|<b>(.*)</b>)#isU');

  2. 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'];

  3. <?php
    $mode="/go*gle/";
    $str="oogle";
    echo "<hr>";
    if (preg_match($mode,$str,$arr))
    {
    echo "匹配成功",$arr[0];
    }
    else
    echo "匹配失败";
    ?>
    匹配失败

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小棕熊go
2012-11-26 · 贡献了超过100个回答
知道答主
回答量:100
采纳率:0%
帮助的人:36.6万
展开全部
把你要匹配的url格式贴出来,然后说明你要什么结果就好,你这样写的有点。。。看不懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
epplera
2012-12-10 · TA获得超过133个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:209万
展开全部
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'];
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式