我正在使用 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/