正则表达式中的奇异替换

时间:2017-03-24 16:22:46

标签: php regex

为什么这不起作用(在php中)?

$string=" https://youtu.be/g434EnjOOuU ";

$result=preg_replace("@https?://youtu.be/([a-z0-9-_]*)@isU","[YOUTUBE]$1[/YOUTUBE]",$string);
Result = [YOUTUBE][/YOUTUBE]g434EnjOOuU

Instead of: [YOUTUBE]g434EnjOOuU[/YOUTUBE]

我只是无法弄清楚替换在字符串的末尾而不是在正确的位置。

谢谢!

1 个答案:

答案 0 :(得分:1)

删除U PCRE_UNGREEDY修饰符,使*充当延迟量词。当一个延迟量化的模式出现在模式的末尾时,它通常匹配一个空字符串。

请参阅fixed regex demo