Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php url参数的正则表达式负前瞻_Php_Regex_Regex Negation_Regex Lookarounds - Fatal编程技术网

Php url参数的正则表达式负前瞻

Php url参数的正则表达式负前瞻,php,regex,regex-negation,regex-lookarounds,Php,Regex,Regex Negation,Regex Lookarounds,我正在使用此正则表达式匹配YouTube播放列表URL并提取播放列表ID: 但是,如果其中一个参数为“v=”指定播放列表中的单个视频,我不希望正则表达式匹配 在我上面的例子中,前2个URL应该匹配,后3个不应该匹配 我试图使用负前瞻(?!v=),但它不起作用。我遗漏了什么?您只是在测试是否立即出现v=。允许某些其他字符选择性地在其前面加上*: (?!.*v=) 见更新于 检查v=前面的字符可能更安全: (?!.*[?&]v=) 请参见更新日期您仅测试是否立即出现v=。允许某些其他字

我正在使用此正则表达式匹配YouTube播放列表URL并提取播放列表ID:

但是,如果其中一个参数为“v=”指定播放列表中的单个视频,我不希望正则表达式匹配

在我上面的例子中,前2个URL应该匹配,后3个不应该匹配


我试图使用负前瞻(?!v=),但它不起作用。我遗漏了什么?

您只是在测试是否立即出现
v=
。允许某些其他字符选择性地在其前面加上
*

(?!.*v=)
见更新于

检查
v=
前面的字符可能更安全:

(?!.*[?&]v=)

请参见更新日期

您仅测试是否立即出现
v=
。允许某些其他字符选择性地在其前面加上
*

(?!.*v=)
见更新于

检查
v=
前面的字符可能更安全:

(?!.*[?&]v=)

当尝试操作url数据时,请参见更新于

,这通常是使用url解析技术的最佳实践。这使得
parse_url()
成为一个直观的候选者

你没有显示你的编码尝试(你仍然应该),但是如果你可以考虑一个非正则表达式,这将是可靠的:()

输出:

PLFgquLnL59akaNTxtgsoKn4c0Q8utjqku
PLdwCuEoZ_6l6C47ciTvf6Z2GArUOCHHQ3
disqualified
disqualified
disqualified
我的方法:

  • 将每个url解析为组件数组
  • 访问“query”元素
  • 将键值对字符串转换为关联数组
  • 检查是否存在“v”作为密钥
  • 如果没有“v”,访问/输出“列表”值
  • 如果为“v”,则输出“不合格”

在尝试操作url数据时,通常使用url解析技术是最佳做法。这使得
parse_url()
成为一个直观的候选者

你没有显示你的编码尝试(你仍然应该),但是如果你可以考虑一个非正则表达式,这将是可靠的:()

输出:

PLFgquLnL59akaNTxtgsoKn4c0Q8utjqku
PLdwCuEoZ_6l6C47ciTvf6Z2GArUOCHHQ3
disqualified
disqualified
disqualified
我的方法:

  • 将每个url解析为组件数组
  • 访问“query”元素
  • 将键值对字符串转换为关联数组
  • 检查是否存在“v”作为密钥
  • 如果没有“v”,访问/输出“列表”值
  • 如果为“v”,则输出“不合格”

请将所有相关代码添加到实际问题中,并仅使用外部链接作为额外参考。如果外部链接更改或被删除,此问题将对未来的访问者无效。请将所有相关代码添加到实际问题中,并且仅将外部链接用作额外参考。如果外部链接发生变化或被删除,这个问题对未来的访问者将毫无用处。是的!谢谢你的解释。我不知道我需要通配符-我以为前瞻默认包含了它。是的!谢谢你的解释。我不知道我需要这个通配符,我还以为前瞻默认包含了这个通配符,这里有一个指向我的正则表达式代码的链接。我正在寻找正则表达式解决方案。@johnh10我知道,这不是一个错误。很多(很多)次,当项目不需要使用正则表达式时,请询问正则表达式。您会发现,经常会提供非正则表达式的答案,因为正则表达式绝对比非正则表达式函数方法慢。如果您想要正则表达式,trincot的答案肯定没有错。@johnh10经过快速测试(不知道您的php版本和实际数据处理量),我们的两个答案都同样快。我想我会说我的代码更容易阅读/更新。有一个链接指向我的正则表达式代码。我正在寻找正则表达式解决方案。@johnh10我知道,这不是一个错误。很多(很多)次,当项目不需要使用正则表达式时,请询问正则表达式。您会发现,经常会提供非正则表达式的答案,因为正则表达式绝对比非正则表达式函数方法慢。如果您想要正则表达式,trincot的答案肯定没有错。@johnh10经过快速测试(不知道您的php版本和实际数据处理量),我们的两个答案都同样快。我认为我的代码更容易阅读/更新。