0

我在名为 findall 的 python 中遇到了这种方法的问题。在这种情况下,我正在访问网页 HTML 并尝试返回产品名称'bread'并将其打印到控制台。

4

2 回答 2

3

不要使用正则表达式进行 HTML 解析。有几个解决方案。我建议 BeautifulSoup ( http://www.crummy.com/software/BeautifulSoup/ )

话虽如此,但在这种特殊情况下,RE 就足够了。放松一点。可能有更多或更少的空格,或者可能是制表符。因此,不要使用文字空间,而是使用空间类\s

product = re.findall(r'Item:\s*is\s*in\s*lane\s*12\s*(\w*)', content)
print product[0]

由于 '*'、'+' 和 '?' 限定符都是贪婪的(它们匹配尽可能多的文本)你不需要限制它[^<]*<br>

于 2013-04-15T03:14:05.067 回答
1

如果您仍想使用正则表达式,这里有一个适合您的情况:

product = re.findall(r'<br>\s*Item:\s+is\s+in\s+lane 12\s+(\w*)[^<]*<br>', content)

它考虑了 DSM 的空间灵活性建议和(\w*)可能出现的非字母<br>

于 2013-04-15T03:31:13.490 回答