2011-08-01 14 views
1

我在下面的代码中使用了这个很大的丑块。我的问题是我如何使用正则表达式提取值@videoPlayer参数?使用正则表达式从视频中提取值

谢谢!

----典大丑大块----

<object id="myExperience121212" class="BrightcoveExperience"> 
    <param name="bgcolor" value="#FFFFFF" /> 
    <param name="width" value="640" /> 
    <param name="height" value="360" /> 
    <param name="playerID" value="fdafafdafda" /> 
    <param name="playerKey" value="fdfadfafdadfafafdadf" /> 
    <param name="isVid" value="true" /> 
    <param name="isUI" value="true" /> 
    <param name="dynamicStreaming" value="true" /> 

    <param name="@videoPlayer" value="10574655567001" /> 
</object> 

..sorry家伙,这里的全部代码。在这之前会有一些JavaScript,所以使用XML是没有问题的。我需要一个正则表达式,这将工作。

更新2:好吧,如果我能得到对象标签内的文本,那么我可以将它转换为XML并解析出来。但是,我如何在标签内的代码?

+0

如果您良好的XML,然后使用XPath,如。 ''myobject [id =“myE ...”]/param [name =“@ videoPlayer”] @ value' –

+0

XML格式不正确,事实上会有一堆糟糕的评论那。 – CloudDev

+1

只需剪切对象部分,即可得到XML –

回答

1

不是吗?为什么不使用适合于此目的的工具,如XML解析器或BeautifulSoup之类的标签解析器?

1

如果您知道的param标签的名称和值attrributes将始终是按照这个顺序(名头),那么这个正则表达式应该工作(未经测试):

<param.+?name=['"]@videoPlayer['"].+?value=['"]([^'"]+)['"] 

如果您知道,围绕属性引号将永远是双引号,你可以用"取代的['"]所有实例如下:

<param.+?name="@videoPlayer".+?value="([^"]+)" 

标记的值部分将存储在反向引用$ 1中。

但是这里有很多假设需要考虑。

0

试试这个:

/<param name="@videoPlayer" value="([^\"\']+)"/ 
+0

这和我的答案非常相似。 – Benjam

+0

解决了这个w/out正则表达式: – CloudDev