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

Python 从脚本标记中提取特定的src属性,python,regex,Python,Regex,我想通过RE从包含jquery子字符串的输入内容中获取JS文件名 这是我的代码: 步骤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"/> ... <scr

我想通过RE从包含
jquery
子字符串的输入内容中获取JS文件名

这是我的代码:

步骤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']

我可以在步骤1中执行上述步骤2吗?这意味着重新设置模式以获得结果?

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

re.findall('src="js/([^"]*jquery[^"]*)"', data)
这将匹配
“js/
之后的所有内容,直到最近的
,如果它包含
jquery
任何位置。如果您对
jquery
的位置有更多了解(例如,如果它总是在开头),您可以相应地调整regex

如果要确保
jquery
没有被其他字母数字字符直接包围,请使用:


单词
jquery
总是在文件名的开头吗?我想是的,所有jquery库文件名都是以
jquery
word开头的,但是如果它们改变了文件命名结构,那么我们就必须更新代码。
[ele[“src”]表示BeautifulSoup(data)中的ele。find_all(“script”,src=re.compile(r“\bquery\b”)]
@padraiccningham:yes
HTML解析器
是另一种方法,我将使用
lxml
xpth
方法来获得结果。但是RE比解析器(运行时)好,即使是工程师也很难做到这一点:)@timpietzcker:谢谢+1.
re.findall('src="js/([^"]*jquery[^"]*)"', data)
re.findall(r'src="js/([^"]*\bjquery\b[^"]*)"', data)