regex - 使用 BeautifulSoup 在字符串开头进行正则表达式模式匹配
问题描述
我目前正在寻找一种在 HTML 类名的开头通过正则表达式执行模式匹配的方法。我要匹配的模式是:
"col-xs-.*"
HTML 页面中的两个类示例是:
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="mod-tiles__sizer col-xs-6 col-sm-4 col-lg-3">
目标是只匹配上面的类名,因为它实际上以“col-xs-.*”开头,这就是我所追求的。使用我当前的正则表达式匹配,我似乎无法将这些类名单独列出。目前我正在尝试使用以下正则表达式模式进行匹配:
regex = re.compile('^col-xs-.*$')
soup.find_all("div", class_ = regex)
不幸的是,这种模式还会打印出第二个类名(其中“col-xs-.*”出现在中间,而不仅仅是在开头)。希望有人能解决这个问题。
解决方案
我认为您希望以 ^ 运算符开头的属性 = 值css 选择器来指定要在类属性中查找的前缀字符串。
soup.select('[class^="col-xs-"]')
例子:
from bs4 import BeautifulSoup as bs
html = '''
<div class="col-xs-12 col-sm-12 col-lg-12">
<div class="mod-tiles__sizer col-xs-6 col-sm-4 col-lg-3">
'''
soup = bs(html, 'lxml')
classes = [' '.join(item['class']) for item in soup.select('[class^="col-xs-"]')]
print(classes)
推荐阅读
- php - MAPBENDER 安装失败
- node.js - 现在任何人如何将 qr-code 转换为文件 png 格式节点
- javascript - 在 Javascript 中引用 lambda 函数中的常量值,然后使用 chrome.scripting.executeScript
- typescript - 错误 TS6133: 'functions' 被声明但它的值从未被读取
- r - “ggridges”图中的多个变量
- google-chrome-headless - 具有文件权限的无头 Chrome 屏幕截图
- python - 使用 geojson 字符串填充 Spatialite 数据库
- python - 我想要另一个版本包(Python)
- android - ionic agular 项目我的构建失败...错误
- python - 使用 Selenium 进行 Web 抓取尝试会产生重复的条目