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

Viv*_*ble 4 python regex

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

这是我的代码:

第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']
Run Code Online (Sandbox Code Playgroud)

第2步:获取具有子字符串的JS文件 jquery

>>> [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']
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*ker 7

你当然可以.一种方法是使用

re.findall('src="js/([^"]*jquery[^"]*)"', data)
Run Code Online (Sandbox Code Playgroud)

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

如果要确保jquery不直接用其他字母数字字符包围,请使用单词边界锚点:

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