负面展望未按预期发挥作用

2023-11-30

我有一个奇怪的情况积极的前瞻按预期工作,但是负前瞻没有。请看一下下面的代码:

<?php

$tweet = "RT @Startup_Collab: @RiseOfRest is headed to OMA & LNK to #showcase our emerging #startup ecosystem. Learn more! https://example.net #Riseof…";

$patterns=array(
    '/#\w+(?=…$)/',
);

$tweet = preg_replace_callback($patterns,function($m)
{
    switch($m[0][0])
    {
        case "#":
            return strtoupper($m[0]);
        break;
    }
},$tweet);


echo $tweet;

我想匹配任何未跟随的主题标签…$并将其大写(实际上它将被解析为href但为了简单起见,现在将其大写)。

这些是正则表达式及其相应的输出:

'/#\w+(?=…$)/'匹配任何以结尾的主题标签…$并将其大写,按预期工作:

RT @Startup_Collab: @RiseOfRest is headed to OMA & LNK to #showcase our emerging #startup ecosystem. Learn more! https://example.net #RISEOF…

'/#\w+(?!…$)/'匹配任何不以以下结尾的主题标签…$并且大写它不起作用,所有主题标签都是大写的:

RT @Startup_Collab: @RiseOfRest is headed to OMA & LNK to #SHOWCASE our emerging #STARTUP ecosystem. Learn more! https://example.net #RISEOf…

非常感谢您的帮助、建议、想法和耐心。

-- Angel


这是因为回溯与主题标签的部分相匹配。使用所有格量词来避免回溯到\w+子模式:

/#\w++(?!…$)/
    ^^

See the 正则表达式演示

现在,匹配 1 个或多个单词字符,并且(?!…$)负向先行仅在这些单词字符匹配后执行一次。如果有一个false结果,没有发生回溯,整场比赛失败。

查看更多内容所有格量词 here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

负面展望未按预期发挥作用 的相关文章

随机推荐