正则表达式捕获视频 wordpress 简码中的变量
regex to catch variables in a video wordpress shortcode
我正在使用正则表达式在 wordpress 的 [video]
短代码中捕获变量。
想象一下不同的简码。一个可能看起来像这样:
[video width="1080" height="1920" mp4="http://path-to-video/20160119_144218.mp4" autoplay="true" webm="http://path-to-video/20160119_144218_1.webm"][/video]
另一个,像这样:
[video width="720" height="1280" mp4="http://path-to-video/VID_20160118_134920.mp4" autoplay="true" poster="http://path-to-image/2016-01-23-16_23_45-Export-Settings-1.jpg"][/video]
我的正则表达式的目的是检索 mp4
和 webm
变量。
问题在于,有时只有 mp4
来源存在;有时两者都存在。
其他信息,如 autoplay
或 poster
可能存在也可能不存在 ,按照 wordpress 喜欢的顺序。
所以我需要一个条件正则表达式,它考虑到了这一点,并且在没有 webm 的情况下也不会失败。
原来我有这个:
\[video .* mp4="(.*?)".*webm="(.*?)"\]\[/video\]
它与 mp4
和 webm
的短代码完美配合(相信 wordpress 会,因为它似乎出于某种原因,总是把 webm 放在最后),但是会webm
不存在时失败。
现在我正在尝试使用条件正则表达式,但没有取得太大的成功。
这是我的:
\[video .* mp4="(.*?)".*(?(?=.*webm=)webm="(.*?)"\]\[/video\]|.*\]\[/video\])
上面给出的两个例子中的 mp4
值都很好:但是在存在 webm 的地方,它会忽略它。
我担心,即使我设法检索到这两个变量,短代码中信息的其他变体也会使我的正则表达式失效。
你能帮我创建一个更好的、万无一失的正则表达式吗???
使用这个正则表达式:
\[video(?:.*?(?:webm|mp4)="([^"]*)")?(?:.*?(?:webm|mp4)="([^"]*)")?.*\]\[\/video\]
我正在使用正则表达式在 wordpress 的 [video]
短代码中捕获变量。
想象一下不同的简码。一个可能看起来像这样:
[video width="1080" height="1920" mp4="http://path-to-video/20160119_144218.mp4" autoplay="true" webm="http://path-to-video/20160119_144218_1.webm"][/video]
另一个,像这样:
[video width="720" height="1280" mp4="http://path-to-video/VID_20160118_134920.mp4" autoplay="true" poster="http://path-to-image/2016-01-23-16_23_45-Export-Settings-1.jpg"][/video]
我的正则表达式的目的是检索 mp4
和 webm
变量。
问题在于,有时只有 mp4
来源存在;有时两者都存在。
其他信息,如 autoplay
或 poster
可能存在也可能不存在 ,按照 wordpress 喜欢的顺序。
所以我需要一个条件正则表达式,它考虑到了这一点,并且在没有 webm 的情况下也不会失败。
原来我有这个:
\[video .* mp4="(.*?)".*webm="(.*?)"\]\[/video\]
它与 mp4
和 webm
的短代码完美配合(相信 wordpress 会,因为它似乎出于某种原因,总是把 webm 放在最后),但是会webm
不存在时失败。
现在我正在尝试使用条件正则表达式,但没有取得太大的成功。
这是我的:
\[video .* mp4="(.*?)".*(?(?=.*webm=)webm="(.*?)"\]\[/video\]|.*\]\[/video\])
上面给出的两个例子中的 mp4
值都很好:但是在存在 webm 的地方,它会忽略它。
我担心,即使我设法检索到这两个变量,短代码中信息的其他变体也会使我的正则表达式失效。
你能帮我创建一个更好的、万无一失的正则表达式吗???
使用这个正则表达式:
\[video(?:.*?(?:webm|mp4)="([^"]*)")?(?:.*?(?:webm|mp4)="([^"]*)")?.*\]\[\/video\]