从脚本标记中提取特定的src属性

时间:2015-06-10 14:46:04

标签: python regex

我想从输入内容中获取JS文件名,其中包含jquery作为RE的子字符串。

这是我的代码:

第1步:从内容中提取JS文件。

>>> data = """    <script type="text/javascript" src="js/jquery-1.9.1.min.js"/>
...     <script type="text/javascript" src="js/jquery-migrate-1.2.1.min.js"/>
...     <script type="text/javascript" src="js/jquery-ui.min.js"/>
...     <script type="text/javascript" src="js/abc_bsub.js"/>
...     <script type="text/javascript" src="js/abc_core.js"/>
...     <script type="text/javascript" src="js/abc_explore.js"/>
...     <script type="text/javascript" src="js/abc_qaa.js"/>"""
>>> import re
>>> re.findall('src="js/([^"]+)"', data)
['jquery-1.9.1.min.js', 'jquery-migrate-1.2.1.min.js', 'jquery-ui.min.js', 'abc_bsub.js', 'abc_core.js', 'abc_explore.js', 'abc_qaa.js']

步骤2:获取子文件为jquery

的JS文件
>>> [ii for ii in re.findall('src="js/([^"]+)"', data) if "jquery" in ii]
['jquery-1.9.1.min.js', 'jquery-migrate-1.2.1.min.js', 'jquery-ui.min.js']

我可以在步骤1中的步骤2中执行RE模式以获得结果吗?

1 个答案:

答案 0 :(得分:7)

当然可以。一种方法是使用

re.findall('src="js/([^"]*jquery[^"]*)"', data)

这将匹配"js/之后的所有内容,直到最近的",如果它包含jquery的任何地方。如果您对jquery的位置有更多了解(例如,如果它始终在开头),您可以相应地调整正则表达式。

如果您想确保jquery未被其他字母数字字符直接包围,请使用word boundary anchors

re.findall(r'src="js/([^"]*\bjquery\b[^"]*)"', data)