python - 具有子模式异常的正则表达式模式 (Python)

标签 python regex web-scraping

我正在使用 BeautifulSoup 从表中提取表数据标签。 TD 具有“a”、“u”、“e”、“可用-不可用”或“不可用-可用”类。 (是的,我知道古怪的类名,但是嘿......)

这是一个例子:

<tr>
  <td class="u">4</td>
  <td class="unavailable-available">5</td>
  <td class="a'>6</td>
  <td class="available-unavailable">7</td>
  <td class="u">8</td>
  ...

我一直在使用包含 re.compile() 的行:

  tab = [int(tag.string) for tag in soup.find('table',{'summary':tableSummary}).findAll("td", attrs = {"class": re.compile('\Aa')})]

我需要提取所有类名为“a”和“unavailable-available”的 td。我一直在尝试一些负面的前瞻断言,但运气不佳。我会重视任何可以生成正确正则表达式的正则表达式图例......

最佳答案

table.findAll('td', attrs = {"class":re.compile(r'(^|\s)(a|unavailable-available)($|\s)')})

这匹配字符串开头或空格后跟“a”或“unavailable-available”后跟空格或字符串结尾。所以它会匹配所有这些类型的东西

class="a"
class="a ui-xxx"
class="ui-xxx a"
class="ui-xxx a ui-yyy"
class="unavailable-available"
class="unavailable-available foo"

关于python - 具有子模式异常的正则表达式模式 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331383/

相关文章:

python - 正则表达式替换包含整个条目的括号

python - Scrapy 使用代理时出现错误——twisted.python.failure.Failure OpenSSL.SSL.Error

python - 基于统一对象将 JSON 元素分组在一起 [Python]

命令行上的 Python 模块

javascript - 基于条件的正则表达式匹配

python - 将括号中的所有字符存储在字符串中

python - 用 Python 抓取城市词典

python - 无法弄清楚如何让 BS4 检索/videos 页面上的 youtube 观看次数

Python:在源代码中找不到字符串

python - 在带 Altair 的条形图上使用颜色似乎可以防止 zero=False 在比例尺上产生预期效果