我有一定数量的内容:
<p><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ullamcorper enim ut nulla fringilla, non elementum nunc dapibus. Donec porta a lorem in vestibulum. Aenean viverra vulputate finibus. Sed malesuada nibh vitae enim luctus, at placerat diam vehicula.</strong></p>
<p>Quisque eu nisl sed tellus congue aliquet ac id risus. Etiam eget nisi ac lectus cursus suscipit. Mauris a dictum justo. Aliquam eget mi vel nunc imperdiet ultricies.</p>
<iframe width="480" height="270" frameborder="0" src="https://www.youtube.com/embed/EgqUJOudrcM" allowfullscreen="" ></iframe>
我要做的就是获取YouTube视频ID。
到目前为止,我已经提出了以下正则表达式:
/<iframe.*src=["\'].*youtube\.com\/embed\/(.*)["\'] ?>/
如果src
属性是标记中的最后一个属性,则此方法有效,否则不起作用。如何编写正则表达式以克服这个问题?
如您所见,在第二个示例中,我的正则表达式也匹配src
之后的属性。我知道为什么这种情况发生了,我无法弄清楚如何防止它。
我当然不是正则表达式的专家,所以欢迎任何改进我现有的建议。
答案 0 :(得分:3)
有了这个:
<iframe.*?src=".*?youtube\.com\/embed\/(\w+)
.*?
避免匹配太多并停在第一个src
属性上
然后它直接匹配网址。
编辑:你只想要id,而不是完整的URL
答案 1 :(得分:1)
您可以使用以下正则表达式:
<iframe[^>]*src=\"[^\"]+\/([^\"]+)\"[^>]*>