首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regex捕捉视频wordpress短代码中的变量

regex捕捉视频wordpress短代码中的变量
EN

Stack Overflow用户
提问于 2016-02-13 14:19:20
回答 1查看 150关注 0票数 0

我正在使用regex捕捉wordpress中的[video]短代码中的变量。

想象一下不同的短代码。一个人可能看起来像这样:

代码语言:javascript
复制
[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]

另一个,像这样:

代码语言:javascript
复制
[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]

我的正则表达式的目的是检索mp4webm变量。

问题是,有时只有mp4源存在;有时两者都存在。按照wordpress喜欢的顺序,其他信息,比如autoplayposter,可能存在也可能不在那里。

因此,我需要一个条件regex,它考虑到这一点,如果没有webm,就不会失败。

最初我有这样一个:

代码语言:javascript
复制
\[video .* mp4="(.*?)".*webm="(.*?)"\]\[/video\]

它可以很好地与mp4webm一起使用一个短代码(信任wordpress似乎是出于某种原因,总是把webm放在最后),但是当webm不存在时就会失败。

现在我正在尝试条件正则表达式,但没有取得很大的成功。

我现在拥有的是:

代码语言:javascript
复制
\[video .* mp4="(.*?)".*(?(?=.*webm=)webm="(.*?)"\]\[/video\]|.*\]\[/video\])

上面的mp4值在上面给出的两个示例中都能很好地捕捉到:但是如果存在webm,它就会忽略它。

我担心,即使我能够检索到这两个变量,短代码中信息的其他变体也会使我的正则表达式失去作用。

你能帮我创造一个更好的,更好的,防伪的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-13 14:36:48

使用这个正则表达式:

代码语言:javascript
复制
\[video(?:.*?(?:webm|mp4)="([^"]*)")?(?:.*?(?:webm|mp4)="([^"]*)")?.*\]\[\/video\]

工作示例:https://regex101.com/r/tC1aE3/5

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35381022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档