我想从输入内容中获取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
>>> [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模式以获得结果吗?
答案 0 :(得分:7)
当然可以。一种方法是使用
re.findall('src="js/([^"]*jquery[^"]*)"', data)
这将匹配"js/
之后的所有内容,直到最近的"
,如果它包含jquery
的任何地方。如果您对jquery
的位置有更多了解(例如,如果它始终在开头),您可以相应地调整正则表达式。
如果您想确保jquery
未被其他字母数字字符直接包围,请使用word boundary anchors:
re.findall(r'src="js/([^"]*\bjquery\b[^"]*)"', data)