Php preg_match()未知修饰符“[”帮助

Php preg_match()未知修饰符“[”帮助,php,regex,Php,Regex,我用这个正则表达式获取YouTube视频ID: (?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+ 我从那里得到: 问题是我得到preg_match未知修饰符“[”警告 我知道我必须把regex分隔符括起来,但我不知道怎么做 有什么帮助吗?请尝试以下操作: <?php $str = "http://www.youtube.com/ytscreeningroom?v=NRHVz

我用这个正则表达式获取YouTube视频ID:

(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
我从那里得到:

问题是我得到preg_match未知修饰符“[”警告

我知道我必须把regex分隔符括起来,但我不知道怎么做

有什么帮助吗?

请尝试以下操作:

<?php
  $str = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I";
  $pattern = '#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#';
  preg_match($pattern, $str, $matches); 
  print_r($matches);
?>
注意,我在这里使用分隔符是因为上面的正则表达式包含正斜杠,而转义斜杠会使表达式更难读取。这只会将其清除几个像素。

请尝试以下操作:

<?php
  $str = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I";
  $pattern = '#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+#';
  preg_match($pattern, $str, $matches); 
  print_r($matches);
?>

注意,我在这里使用分隔符是因为上面的正则表达式包含正向斜杠,转义斜杠使表达式更难读取。这只会将其清除几个像素。

如果您不喜欢分隔符:使用,它的工作原理与preg_match完全相同,但不需要分隔符

$str = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I";
$pattern = '(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+';

//         ^ no delimiters :)                                          ^
这导致

string(11) "NRHVzbJVx8I"

如果您不喜欢分隔符:use,它的工作原理与preg_match完全相同,但不需要分隔符

$str = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I";
$pattern = '(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+';

//         ^ no delimiters :)                                          ^
这导致

string(11) "NRHVzbJVx8I"

在正则表达式中添加正斜杠分隔符您是否在代码中分隔正则表达式?例如/expression/在正则表达式中添加正斜杠分隔符您是否在代码中分隔正则表达式?例如/expression/否您没有,我修改了代码以反映您正在寻找的内容。不,您没有,我修改了代码以反映您正在寻找的内容或